Sebastian1
I'm new here

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 Smiley Sad

Viele Grüße,

Sebastian Barszczewski

0 Kudos
7 Replies
marro
Crownpeak employee

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

0 Kudos

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

0 Kudos

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:

Gruß


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


0 Kudos

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ß

0 Kudos

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.

0 Kudos

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

0 Kudos