- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
API-Frage zur Klasse FileSystem
Hallo,
ich möchte für eine Log-Ausgabe wissen, welcher absolute Pfad (Dateisystemebene) sich hinter einem Object der Klasse de.espirit.firstspirit.io.FileSystem verbirgt. An das FileSystem-Object komme ich über ProjectAppManager.
ProjectAppManager projectAppManager = ((ManagerProvider) userService.getConnection()).getManager(ProjectAppManager.class);
FileSystem configDir = projectAppManager.getConfDir(MODUL_COMPONENT_NAME, MODULE_NAME, projectId);
Es handelt sich um FS 4.2.
In der API-Doku habe ich dazu nichts gefunden
Viele Grüße,
Sebastian Barszczewski
- Labels:
-
Developers
-
Knowledgebase
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Sebastian,
der absolute Pfad hängt davon ab, ob es sich bei der Modulkomponente um eine projektspezifische ProjectApp oder Webapp oder um eine serverweite Komponente handelt.
In Deinem Fall entspricht der Pfad des FileSystem-Objekts dem Konfigurationsverzeichnis Deiner Projekt-Modulkomponente, welches auf Dateisystemebene folgendem Pfad entspricht:
<Pfad zur FirstSpirit-Installation>\data\projects\project_<id>\modules\<MODULE_NAME>.<MODUL_COMPONENT_NAME>
Viele Grüße
Donato
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Donato,
vielen Dank für die Antwort! Ich hatte gehofft, dass man diese Information auch irgendwie abfragen kann sowas wie:
"configDir.getAbsolutePath()"
Ich hätte allerdings noch ein damit zusammenhängendes Problem. Die API
ProjectAppManager projectAppManager = ((ManagerProvider) userService.getConnection()).getManager(ProjectAppManager.class);
FileSystem configDir = projectAppManager.getConfDir(MODUL_COMPONENT_NAME, MODULE_NAME, projectId);
kommt aus der Developer-API. Unsere FS-Version ist dabei 4.2.446
In dieser Version is die Aufrufreihenfolge
getConfDir(MODUL_COMPONENT_NAME, MODULE_NAME)
Wir habe hier jetzt auch einen Fall für FS 4.2.461. Da ist der Aufruf genau andersherum.
getConfDir(MODULE_NAME, MODUL_COMPONENT_NAME)
Wie kann man das projektspezifische Modulverzeichnis 4.2er-versionsunabhängig auslesen?
Viele Grüße,
Sebastian
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Sebastian,
ProjectAppManager projectAppManager = ((ManagerProvider) userService.getConnection()).getManager(ProjectAppManager.class);
FileSystem configDir = projectAppManager.getConfDir(MODUL_COMPONENT_NAME, MODULE_NAME, projectId);
> kommt aus der Developer-API. Unsere FS-Version ist dabei 4.2.446
> In der API-Doku habe ich dazu nichts gefunden
Das ist auch gut so, denn ProjectAppManager ist ganz und gar KEINE API, weder Developer noch Access-API und sollte in keinem Fall verwendet werden. Es ist nicht sichergestellt, dass solche Zugriffe in zukünftigen Versionen überhaupt noch funktionieren.
Deshalb findet sich die Klasse hier auch nicht:
http://www.e-spirit.com/odfs42/dev/
> Wie kann man das projektspezifische Modulverzeichnis 4.2er-versionsunabhängig auslesen?
Es gibt API-Wege um an das Konfig-Verzeichnis zu kommen. Du hast leider nicht geschrieben innerhalb welchen du dich befindest.
Hier ein paar Einstiegspunkte:
- über eine Spezialisten #getProjectAppConfig()
- innerhalb einer ProjectApp (Modulimplementierung) über das ProjectEnvironment, welches über die #init injeziert wird und dort über die Methode #getConfDir()
Gruß
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Sebastian,
danke für die Antwort. Eine Möglichkeit, die ich auch gefunden habe ist:
LegacyModuleAgent agent = context.requireSpecialist(LegacyModuleAgent.TYPE);
FileSystem configDir = agent.getProjectAppConfig(MODULE_NAME, COMPONENT_NAME, projectId);
Das funktioniert solange ich mich nicht im ScheduleContext befinde, dort bekomme ich dann eine Exception:
(de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): error during script execution : java.lang.IllegalStateException: No specialist found for 'de.espirit.firstspirit.agency.LegacyModuleAgent$1@b5b1afa1'!
Kannst du mir da noch einen Tipp geben?
Vielen Dank,
Sebastian
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Der genannte Fehler sollte eigentlich nicht mehr auftreten seit 4.2.436 Die interne ID dazu ist #96877.
Wende dich doch bitte hierfür an unseren Helpdesk um das zu verifizieren.
Update:
Wie wird das Skritp ausgeführt? Mit einer speziellen Benutzer-Verbindung?
Gruß
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Das script wird über keine eigene Benutzer-Verbindung ausgeführt. Es ist Bestandteil (Aktion) eines Auftrags, der durch eine executable class gestartet wird.
Die executable class wiederum wird in einem script im JavaClient aufgerufen, welches an einen Arbeitsablauf gebunden ist.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
das genannte interne Ticket (#96877) wurde ja wie bereits erwähnt gelöst und der Fix sollte ab den FirstSpirit Versionen 4.2.436.44498 und 5.0.3.44401 verfügbar sein.
Hattest Du Dich für die Verifizierung nochmal an den Helpdesk gewendet? Konnte die Frage gelöst werden oder sind noch weitere Antworten gewünscht?
Viele Grüße
Michaela

