Dateireferenz

Wertauflöser - Kurzfassung

Zweck: Ermöglicht das Lesen, Schreiben oder Löschen einer Datei im Dateisystem des Lobster Data Platform-Servers. Der Inhalt der referenzierten Datei wird als Datenobjekt des Typs "Aktionsereignis-Inhalt" zurückgegeben.

images/download/attachments/201663364/image-2025-3-4_7-53-21-version-1-modificationdate-1742394940432-api-v2.png

Der Dateireferenz-Wertauflöser ermöglicht das Lesen, Schreiben oder Löschen einer über den absoluten oder relativen Dateipfad definierten Datei im Dateisystem des Lobster Data Platform / Orchestration-Servers.

►WICHTIG◄ Relative Pfade / "Dateireferenz" vs. "Dateimanager"


Der Dateireferenz-Wertauflöser interpretiert relative Dateipfade ausgehend vom Heimatverzeichnis des Lobster Integration Servers (%HUB_HOME%), auf dem Lobster Data Platform betrieben wird.

Der Dateimanager von Lobster Data Platform / Orchestration interpretiert relative Dateipfade ausgehend vom upload-Ordner. Bei diesem handelt es sich um ein in der Serverkonfiguration festgelegtes Unterverzeichnis von %HUB_HOME%.

Typische relative Pfade zum upload-Ordner für Lobster Data Platform / Orchestration:

  • ./PRO/config/files/upload Standard für aktuelle Installationen

  • ./SCM/config/files/upload Standard in früheren Installationen

  • ./upload alternative Einstellung für kürzere Dateipfade


HINWEIS◄ Der Platzhalter $home kann im Parameter Dateipfad des Dateireferenz-Wertauflösers verwendet werden, um den konfigurierten upload-Ordner zu adressieren ohne den relativen Pfad explizit anzugeben.

HINWEIS◄ Der Button Datei auswählen öffnet den Dateimanager modal, um eine "Dateiauswahl" für den Dateipfad zu ermöglichen. Allerdings funktioniert diese nur für Dateien die in oder unterhalb des upload -Ordners ($home) liegen.



images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Der Lobster Data Platform-Server stellt alle Dateien innerhalb des des web-Unterverzeichnisses des designierten upload-Ordners über die URL für Lobster Data Platform / Orchestration "öffentlich" bereit.


  • Inhalte, die in einen Dateipfad geschrieben werden, der mit $home/web oder einer gleichwertigen expliziten Pfadangabe beginnt, sind also auch ohne Lobster Data Platform / Orchestration-Anmeldung abrufbar.

    • Eine Datei im Dateipfad $home/web/gtc.htm kann über die URL https://<pro_serverURL>/gtc.htm ohne Anmeldedaten gelesen oder heruntergeladen werden.

  • Auf Dateien, die sich innerhalb des upload-Ordners aber nicht in dessen web-Unterverzeichnis befinden, kann im Kontext einer Lobster Data Platform / Orchestration-Sitzung per Dateimanager zugegriffen werden.

    • Auf eine Datei mit dem Dateipfad wie $home/logos/customer_4711.png kann per Dateimanager über den Pfad ./logos/customer_4711.png interaktiv zugegriffen werden. Sie ist aber nicht "öffentlich" per URL abrufbar.


images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Der Dateireferenz-Wertauflöser ermöglicht Zugriffe im Dateisystem des Servers, die über den Dateimanager nicht möglich sind. Beachten Sie folgende Hinweise mit Blick auf die Datensicherheit!


  • Ereignisbehandlungen können über den Dateireferenz-Wertauflöser Dateien nicht nur lesen sondern auch (über-)schreiben oder löschen.
    Das Schreiben und Löschen von Dateien ist auch in Tests sofort und unwiderruflich wirksam!

  • Im Kontext eines Schreibzugriffs werden bei Bedarf "fehlende" Ordner neu erstellt, die der Dateipfad benennt.

  • Die Konfigurationsdatei FileManager.xml (s. folgendes Beispiel) definiert wichtige Details für den Zugriff auf das Dateisystem. Dort sollten geeignet restriktive Regelungen getroffen werden, um Risiken durch unbefugte bzw. unbeabsichtigte Zugriffe auszuschließen.

PRO/config/etc/systemManagers/de.lobster.scm.system.FileManager.xml (Beispiel)
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC
"-//EBD Integration//DTD Configure 1.3//EN"
"http://www.ebd-integration.de/dtd/configure_1_3.dtd">
<Configure class="de.lobster.scm.system.FileManager">
<Call name="setHomeDirectory"><Arg><SystemProperty name="scm.home" default="./SCM" />/config/files/upload</Arg></Call>
 
<!-- default allowed path entries are ./conf/ -->
<!-- to clear default list, call following method: -->
<!--<Call name="clearAllowedFilePaths"></Call> -->
<Call name="addAllowedFilePath"><Arg>/tmp</Arg></Call>
</Configure>

Konfiguration

Der Parameter Dateipfad definiert einen Textwert, der im Dateisystem des Lobster Integration Servers relativ zum %HUB_HOME%-Verzeichnis interpretiert wird.

Der Dateipfad kann wahlweise statisch (per Direkteingabe) oder dynamisch - über beliebige Wertauflöser - definiert werden.

Statische Direkteingabe für den Dateipfad

Im Beispiel rechts soll der Dateireferenz-Wertauflöser auf eine in der Konfiguration statisch bestimmte Textdatei mit "Bekanntmachungen" zugreifen, die ein Administrator über den Dateimanager in einen dedizierten Unterordner des upload-Verzeichnisses für Lobster Data Platform / Orchestration hochladen kann.

Während der Unterordner billboard im Dateimanager mit dem relativen Pfad ./billboard erscheint (s. rechts unten), muss der Dateipfad im Dateireferenz-Wertauflöser relativ zum Heimatverzeichnis des Lobster Integration Servers formuliert werden.

Im Bild rechts oben wird der Platzhalter $home verwendet, der den relativen Pfad vom Heimatverzeichnis zum konfigurierten upload-Verzeichnis repräsentiert. Der konkrete relative Dateipfad könnte hier z. B. lauten:

./PRO/config/files/upload/billboard/admin_msg.txt 

HINWEIS◄ Abhängig von der Konfiguration des Systems ermöglicht der Dateireferenz-Wertauflöser über absolute oder relative Dateipfade unter Umständen Zugriffe auf Dateien im Dateisystem des Servers, die per Dateimanager nicht zugänglich sind. Die Konfigurationsdatei FileManager.xml (Details s. u.) regelt, auf welche Verzeichnisse effektiv Zugriff besteht.

Zugriff über den Dateireferenz-Wertauflöser:

images/download/attachments/201663364/image-2025-3-4_8-3-1-version-1-modificationdate-1742394940429-api-v2.png

Datei auswählen per Button

Der Button Datei auswählen öffnet unter dem Titel Dateiauswahl eine modale Ansicht für den Dateimanager, über die der Pfad zu einer per Einfachauswahl bestimmten Datei per Ribbon Button Übernehmen als statischer Wert für den Parameter Dateipfad übernommen werden kann.

HINWEISE

  • Der Button Datei auswählen gewährt - wie für den Dateimanager üblich - nur Zugriff auf Dateien, die im oder abwärts vom upload-Ordner ($home) gespeichert sind.

  • Falls der Dateipfad beim Klick auf den Button Datei auswählen bereits einen Wert enthält, wird dieser auch dann nicht zur "Vorbelegung" der Dateiauswahl genutzt, falls der Pfad zur Datei oder zum Ordner dort abbildbar wäre (was nicht der Fall sein muss).

  • Die Menüfunktion Übernehmen überschreibt den Parameter Dateipfad mit einem Pfad, der mit $home beginnt und anschließend bei Bedarf interaktiv editiert werden kann. Neben dem Ribbon Button Übernehmen steht diese Funktion auch über das Kontextmenü zur Verfügung, das bei einem Rechtsklick auf die zu übernehmende Datei erscheint.

  • Die Dateiauswahl kann per Klick auf das "X" rechts oben im modalen Fenster (im Screenshot nicht abgebildet) ohne eine Auswahl beendet werden. Dann bleibt der vorherige Wert für den Dateipfad unverändert erhalten.

  • Ein Doppelklick auf eine Datei in der Dateiauswahl löst nicht etwa das Übernehmen der Referenz in den Dateipfad aus, sondern - wie im Dateimanager üblich - das Herunterladen bzw. Anzeigen des Dateiinhalts in einem eigenen Tab. Das kann nützlich sein, um die "richtige" Datei für eine Auswahl zu identifizieren.

Dateiauswahl per Dateimanager via Button Datei auswählen:

images/download/attachments/201663364/image-2025-3-4_8-4-15-version-1-modificationdate-1742394940426-api-v2.png

Dateipfad als Rückgabewert eines Wertauflösers

Im Beispiel rechts wird der Dateipfad für den Dateireferenz-Wertauflöser über eine Kette von Wertauflösern definiert. Ausgehend von einer URL im Feld avatarURL eines Benutzerkontos wird durch mehrfaches Text ersetzen der relative Pfad zum Profilbild des betreffenden Benutzers als Dateipfad gewonnen.

Laufzeitbeispiel: für den Benutzer "admin"

./PRO/config/files/upload/web/avatar/user_avatar_admin.png

ANMERKUNG◄ Das Profilbild kann unter diesem Pfad per Dateireferenz gelesen und z. B. als Dateianhang in einer E-Mail-Versand-Ereignisaktion verwendet werden.

images/download/attachments/201663364/image-2025-3-4_12-7-28-version-1-modificationdate-1742394940331-api-v2.png

Lesezugriff

Sofern die Datei am angegebenen Ort bereits existiert und serverseitig Lesezugriff besteht, gibt der Wertauflöser als Rückgabewert ein "Aktionsereignis-Inhalt"-Objekt (Content) mit den folgenden Eigenschaften der Datei zurück:

Feld

Datentyp

Inhalt

Hinweis

name

String

Dateiname

Als Dateiname erscheint nicht der komplette Dateipfad.

body

Byte[] (Array)

Dateiinhalt (Byte-Array)

Die Anzahl der Bytes, also die Länge des Byte-Arrays im Feld body, definiert die Größe einer Datei (in Byte).

mediaType

String

im Kontext des Dateireferenz-Wertauflösers nicht relevant

Falls der angegebene Dateipfad nicht aufgelöst werden kann, gibt der Wertauflöser beim Lesezugriff "Kein Wert" ($null) zurück.

Schreibzugriff (Schreiben/Löschen)

Der Dateireferenz-Wertauflöser kann in einer Setze Wert-Ereignisaktion als Ziel für eine Wertzuweisung eingesetzt werden, die entweder schreibend oder löschend wirkt.

Schreiben oder Überschreiben einer Datei

Dem Dateireferenz-Wertauflöser zugewiesene Daten werden als Inhalt der im Dateipfad angegebenen Datei gespeichert, sofern der Datentyp geeignet ist (Content, String oder byte[]).

  • Existiert die im Dateipfad angegebene Datei noch nicht, wird sie erstellt.

  • Beinhaltet der Dateipfad Ordner, die noch nicht existieren, werden diese erstellt.

  • Existiert die im Dateipfad angegebene Datei bereits, wird sie überschrieben.

Handelt es sich beim zugewiesenen Wert um den Typ "Aktionsereignis-Inhalt" (Content) - z. B. aus einem Lesezugriff per Dateireferenz (s. o.) - wird nur der Dateiinhalt aus dessen body-Feld in die Zieldatei übernommen.

Die Zuweisung eines Byte-Arrays (byte[]) oder Textwerts (String) betrifft unmittelbar den Inhalt der Zieldatei.

  • Der Name der Zieldatei hängt ausschließlich vom Dateinamen im Dateipfad ab.

  • Der Dateiname sollte mit einer signifikanten und auf den Inhalt abgestimmten Dateierweiterung enden, da diese ausschlaggebend für den Erfolg eines Zugriffs über die Funktion "Datei anzeigen" im Dateimanager sein kann.

HINWEIS◄ Eine Datei kann zwar auch ohne Angabe einer Dateierweiterung gespeichert werden. Allerdings führt dies zu Konflikten, falls später in demselben Zielordner ein Ordner mit dem Namen dieser Datei erstellt werden soll:

Im Beispiel rechts wurde eine Datei mit dem Namen 04_APR ohne Dateierweiterung in einem Archiv-Ordner angelegt, in dem derselbe Name systematisch für einen Unterordner verwendet werden soll, sobald Daten für den Monat April zu archivieren sind.

Der Versuch, Daten in einen Dateipfad wie $home/archive/2020/04_APR/backlog.xml zu archivieren, scheitert solange diese Datei existiert. Dabei tritt keine Fehlermeldung mit Rollback auf. Nur im Kontext von Tests erscheint im "Log" ein Hinweis auf das Problem beim impliziten Anlegen des Ordners.

images/download/attachments/201663364/image-2025-3-4_11-4-26-version-1-modificationdate-1742394940411-api-v2.png

Löschen einer Datei oder eines (leeren) Ordners

  • Wird dem Dateireferenz-Wertauflöser "Kein Wert" ($null) zugewiesen, löscht das die per Dateipfad angegebene Datei.

    • Das Zuweisen von "Kein Wert" ($null) an den Dateipfad eines leeren Ordners löscht diesen Ordner.

    • Das Zuweisen von "Kein Wert" ($null) an den Dateipfad eines nicht-leeren Ordners wird ohne Fehlermeldung ignoriert.

WICHTIG◄ Falls im Kontext einer Zuweisung an den Dateireferenz-Wertauflöser ein ungeeigneter Datentyp (nicht Content, String oder byte[]) als Wert zugewiesen wird, schlägt der Versuch einer automatischen Typumwandlung mit dem Ergebnis "Kein Wert" ($null) fehl. Sofern unter dem angegebenen Dateipfad eine Datei oder ein leerer Ordner existiert, wird diese gelöscht!

Beispiele


HINWEIS◄ Die folgenden Beispiele verwenden den Platzhalter $home, der immer auf den upload -Ordner verweist, um den Dateipfad robust gegen abweichende Konfigurationen (per setHomeDirectory in der Konfigurationsdatei FileManager.xml) zu machen.


Lesezugriff

Für Benutzer mit unterschiedlichen Rollen sollen beim Anmelden an Lobster Data Platform / Orchestration spezifische Hinweise als Benachrichtigung erscheinen, sofern für die Rolle der Session eine entsprechende Textdatei in einem bestimmten Pfad des Server-Dateisystems hochgeladen wurde.

Laufzeitbeispiel:

images/download/attachments/201663364/image-2025-3-4_11-5-47-version-1-modificationdate-1742394940407-api-v2.png

images/download/attachments/201663364/image2021-10-29_14-53-8-version-1-modificationdate-1742394940528-api-v2.png

Diese Nachricht wird beim Anmelden mit der Rolle CustomerAccountManager per Hinweis anzeigen (Popup) angezeigt, weil sie als Textdatei mit diesem Namen per Dateimanager im Ordner ./billboard/roles (s. links) platziert wurde.

Konfiguration:

Eine Ereignisbehandlung, die auf das Auslösende Ereignis "Client angemeldet" (s. Anmeldung (Ereignisse)) reagiert, wird angelegt und wie rechts abgebildet konfiguriert:

  • Die Prüfende Regel soll unmittelbar feststellen, ob eine Benachrichtigung für die Rolle der Session hinterlegt ist. Falls eine entsprechende Textdatei in den Unterordner billboard/roles des upload-Verzeichnisses existiert, soll diese als Aktion bei bestandener Regel angezeigt werden:

    • Innerhalb einer Objekt-Feld-Regel wird der Dateireferenz-Wertauflöser verwendet, um zu prüfen, ob unter dem ausgehend von der Rolle der Session per Textverkettung systematisch aufgebauten Dateipfad eine Textdatei gefunden wird. Liefert die Dateireferenz keinen Aktionsereignis-Inhalt als Rückgabewert (s. negierter Ist leer-Matcher) erfolgt Keine Aktion.

    • Der verkettete Wert als Variable speichern-Wertauflöser übergibt den Rückgabewert (ob leer oder nicht) in die Variable loginAlertFile, sodass im Erfolgsfall die Daten der gefundenen Datei nicht erneut eingelesen werden müssen, um ein Aktionsereignis-Inhalt-Objekt zu erzeugen.

  • Als Aktion bei bestandener Regel wird eine Ausführen mit-Ereignisaktion ausgeführt, die den in der Variablen loginAlertFile gespeicherten Aktionsereignis-Inhalt als Bezugsobjekt definiert. Dies vereinfacht der Zugriff auf die Felder name (Dateiname) und body (Text in der Datei), durch die Parameter Titel und Meldung in der in diesem Kontext ausgeführten Hinweis anzeigen (Popup)-Ereignisaktion.

ANMERKUNG◄ Der Dateiinhalt kann nur direkt einem Popup angezeigt werden, weil es sich um eine Textdatei handelt, bei der der als Byte-Array bereitgestellte "body" als Zeichenfolge lesbar ist. Derselbe Text erscheint als String-Transformation, falls das Aktionsereignis-Inhalt-Objekt als Meldung zugeordnet wird, ohne explizit auf das Feld body zuzugreifen.

images/download/attachments/201663364/image-2025-3-4_12-5-50-version-1-modificationdate-1742394940337-api-v2.png images/download/attachments/201663364/image-2025-3-4_11-10-40-version-1-modificationdate-1742394940400-api-v2.png

Schreibzugriff (Schreiben)

Ausgelöst durch ein Eigenes Aktionsevent soll automatisch ein Schnappschuss einer Datei mit dem Namen statusQuo.pdf als Kopie archiviert werden.

Der Dateipfad für die Kopie soll ausgehend vom Tagesdatum abhängig vom Jahr (<yyyy>) und Monat (<MM>) bezogen auf den Ausführungszeitpunkt nach folgendem Schema definiert sein:

$home/journal/<yyyy>/<MM>/monthlyReport.pdf
  • Der Dateiname der Kopie lautet also immer "monthlyReport.pdf".

  • Die Kopie wird immer im Verzeichnis journal abgelegt.

  • Die Unterordner für Jahr und Monat sind entweder bereits vorhanden oder werden automatisch erstellt.

  • Existiert für den aktuellen Monat bereits eine Kopie, wird diese mit den aktuellen Daten überschrieben.

Konfiguration:

images/download/attachments/201663364/image-2025-3-4_11-22-1-version-1-modificationdate-1742394940398-api-v2.png

Das Erstellen der Kopie wird innerhalb einer Ereignisbehandlung durch eine Setze Wert-Ereignisaktion wie folgt bewerkstelligt:

  • Der Inhalt der Originaldatei wird durch den Dateireferenz-Wertauflöser rechts per Lesezugriff in ein Aktionsereignis-Inhalt-Datenobjekt übertragen.

  • Links wird durch einen weiteren Dateireferenz-Wertauflöser das "Kopieren" dieser Daten in den per Textverkettung systematisch aufgebauten Dateipfad realisiert:

    • Das Ablageverzeichnis journal (ganz oben) und der Dateiname monthlyReport.pdf (ganz unten) sind dabei statisch definiert.

    • Dazwischen wird die Zeichenfolge für die Ordnerebenen Jahr (yyyy) und Monat (MM) ausgehend vom Tagesdatum (s. Relatives Datum mit Zeit, "Anfang heute") per Datum formatieren passend bereitgestellt.

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Für die "Prüfende Regel" der hier nicht ausführlich dargestellten Ereignisbehandlung ist eine Prüfung, ob die Originaldatei überhaupt vorhanden ist, dringend zu empfehlen. Anderenfalls wird der Zieldatei (links) "Kein Wert" als Wert zugewiesen. Existierte für den jeweiligen Monat bereits eine Kopie, wird diese Kopie dadurch unwiderruflich gelöscht (s. u. "Schreibzugriff (Löschen)").

Laufzeitbeispiel:

images/download/attachments/201663364/image-2025-3-4_11-28-7-version-1-modificationdate-1742394940391-api-v2.png

  • Wird die Ereignisbehandlung am 29.10.2021 ausgeführt, dann erscheint die Kopie am oben im Dateimanager angesteuerten Pfad journal/2021/10 (Unterverzeichnis des upload-Ordners).

Schreibzugriff (Löschen)

Als Erweiterung des vorigen Beispiels ("Schreibzugriff (Schreiben)"), soll die Originaldatei nach dem Kopieren aus dem Dateisystem gelöscht werden.

Konfiguration:

Die folgende Setze Wert-Ereignisaktion wird an die im vorigen Beispiel definierte Ereignisbehandlung angehängt:

images/download/attachments/201663364/image-2025-3-4_11-30-7-version-1-modificationdate-1742394940388-api-v2.png

  • Der Dateireferenz-Wertauflöser links definiert den Dateipfad der zu löschenden Datei durch einen statischen Textwert.

  • Rechts wird "Kein Wert" definiert, damit die links definierte Datei gelöscht wird.