Export
Ereignisaktion - Kurzfassung
Zweck: Merkt das aktuelle Bezugsobjekt für den "Export", also die Übergabe an ein Lobster_data-Profil, am Ende der Transaktion vor.
Die Ereignisaktion Export merkt das aktuelle Bezugsobjekt für den "Export", also die Übergabe an ein Lobster_data-Profil, am Ende der Transaktion vor. Details zur Verarbeitung dieser Vormerkungen beschreibt der Abschnitt "Verarbeitungsschema für vorgemerkte Exporte" (unten).
Beim Profilaufruf wird der Datenstand des jeweils vorgemerkten Bezugsobjekts zum Zeitpunkt des Abschlusses der Transaktion als Eingangsdaten (XML) übergeben.
►HINWEIS◄ Handelt es sich bei dem Bezugsobjekt um eine neue Instanz einer Entität, die noch nicht gespeichert wurde, dann beinhalten die Eingabedaten für das Profil deshalb bereits die vom System als Primärschlüssel automatisch zugewiesene ID (id).
Informationen zum anwendbaren Anmeldekontext (Firma, Rolle, Benutzer) werden - wie bei Profilaufrufen aus Lobster Data Platform / Orchestration üblich - automatisch den in Profilen vordefinierten MSG_CALL-Variablen zugewiesen. Diese werden zur Laufzeit abhängig von den Anmeldedaten der Sitzung sowie ggf. unter Berücksichtigung von Anpassungen durch die Ereignisaktion Ausführen als automatisch mit Werten befüllt:
Datenobjekt |
Wert |
Variablenname |
Datentyp |
ID (id) des Firmenkontos |
SCM_Company_id |
BigInteger |
|
Datenobjekt Firmenkontos als XML (Text) |
SCM_Company_xml |
String |
|
ID (id) der Rolle |
SCM_Role_id |
BigInteger |
|
ID (id) des Benutzerkontos |
SCM_User_id |
BigInteger |
|
Benutzername (username) |
SCM_User_username |
String |
|
Datenobjekt des Benutzerkontos als XML (Text) |
SCM_User_xml |
String |
Optional können für weitere Variablen Wertzuweisungen zur Übergabe zusätzlicher Daten an das aufgerufene Profil konfiguriert werden.
Verarbeitungsschema für vorgemerkte Exporte
►WICHTIG◄ Da beim Export der Profilaufruf nicht sofort erfolgt, kann im Unterschied zum Aufruf per Profil aufrufen (Ereignisaktion) kein Rückgabewert des aufgerufenen Profils abgewartet und in der Ereignisbehandlung verarbeitet werden.
Falls die auslösende Transaktion durch eine Abbrechen oder einen Fehler nicht erfolgreich abgeschlossen wird, entfallen alle ggf. vorgemerkten Profilaufrufe.
Nur beim erfolgreichen Abschluss einer Transaktion werden sämtliche im Zuge dieser Transaktion vorgemerkten Exporte nach dem folgenden Verarbeitungsschema ausgelöst:
Schritt 1: |
Sofern vorhanden, werden zunächst diejenigen Profilaufrufe ausgelöst, die ohne die Option Nach dem Commit ausführen vorgemerkt wurden.
|
Schritt 2: |
Durch den Commit werden innerhalb der Transaktion vorgenommene Manipulationen an Entitäten in der Datenbank von Lobster Data Platform / Orchestration gespeichert, so dass sie u. a. von anschließend ausgeführten Profilaufrufen etwa beim Ausführen einer Suche berücksichtigt werden. |
Schritt 3: |
Sofern vorhanden werden nach dem Commit diejenigen Profilaufrufe ausgelöst, die mit ausgewählter Option Nach dem Commit ausführen vorgemerkt wurden.
|
Schritt 4: |
Eine Transaktion in Lobster Data Platform / Orchestration, in der mindestens ein Export vorgemerkt wurde, endet - nach der erfolgreichen Abarbeitung aller zugehörigen Ereignisbehandlungen, wenn die folgenden Bedingungen erfüllt sind:
|
|
Konfiguration
Der Parameter Profilname identifiziert das aufzurufende Profil. Passend zur Eingabe im Textfeld werden existierende Profilnamen per "Autovervollständigung" in einer Dropdown-Liste vorgeschlagen.
►HINWEIS◄ Im Unterschied zur Konfiguration von Verhaltensweisen wie Profil aufrufen im Formulardesigner ist der Zugriff auf Profile in Ereignisbehandlungen nicht an Profilsicherheiten gebunden.
Optionen für die Ablaufsteuerung
Die Option synchron ist per Standard ausgewählt. Sie entscheidet, ob die Abarbeitung der Profilaufrufe in die Transaktion eingebettet wird oder nicht.
Option "synchron" |
Laufzeitverhalten |
|
|
|
|
Die Option Nach dem Commit ausführen ist per Standard nicht gesetzt. Sie definiert ob die vorgemerkten Profilaufrufe beim Abschluss der Transaktion vor oder nach dem Commit der Transaktion ausgeführt werden sollen.
Option |
Laufzeitverhalten |
|
|
|
►HINWEIS◄ Das als Eingabewert an das Profil übergebene Bezugsobjekt beinhaltet dagegen Manipulationen am Bezugsobjekt innerhalb der Transaktion auch ohne Commit. |
Variablen
Der Abschnitt Variablen bietet ein Wiederholendes Element an, in dem über die Symbole
und
Wertzuweisungen für Variablen definiert werden können.
Die Zuweisungen für diese Variablen gelten nur für den Kontext des Profilaufrufs.
Im Profil muss eine Variable definiert sein, die das Prafix MSG_CALL_ vor dem Eintrag für Variablenname verwendet.
Die für den Parameter Wert konfigurierten Wertauflöser werden zur Laufzeit in dem Moment aufgelöst, wenn die Ereignisaktion Export ausgeführt wird. Allerdings ist der Hinweis unten zu beachten, wenn der Variablen ein Datenobjekt als Wert zugewiesen wird!
Wie das Beispiel der zweiten Variablen attachment im Bild verdeutlicht, erscheint abhängig vom Typ des Rückgabewerts des Wertauflösers ggf. zusätzlich die Option Als Datei übergeben.
Wird die Option Als Datei übergeben gesetzt, dann wird der Rückgabewert des Wertauflösers nicht direkt der Variablen zugewiesen, sondern eine Pfadangabe zu einer Temporärdatei, in die der entsprechende Inhalt beim Profilaufruf geschrieben wird. Nach dem Profilaufruf werden solche Temporärdateien automatisch wieder gelöscht.
►HINWEIS◄ Wird einer Variablen in Lobster Data Platform / Orchestration ein Datenobjekt als Wert zugewiesen, dann speichert die Variable nur eine Referenz auf dieses Datenobjekt und nicht etwa einen Schnappschuss der Daten des Datenobjekts. Erst zum Zeitpunkt des Profilaufrufs wird bei der Wertzuweisung an die MSG_CALL-Variable des Profils das Datenobjekt als XML-Text ausgegeben und dadurch "eingefroren". Veränderungen am Datenobjekt durch Ereignisaktionen, die nach dem Export aber noch innerhalb derselben Transaktion ausgeführt werden, verändern betreffen daher immer auch den Wert der Profilvariablen beim Export. Der Profilvariable kann allerdings bei Bedarf ein Schnappschuss eines Datenobjekts zum Zeitpunkt der Ausführung der Ereignisaktion Export zugewiesen werden, indem der Wertauflöser das Datenobjekt per Verkettung z. B. an den Wertauflöser Server XML aus Objekt erzeugen übergibt, um das zurückgegebene XML als Textwert sofort der Variablen zuzuweisen, die später an das Profil übergeben wird.
Beispiele
Einfaches Beispiel
Immer dann, wenn eine in Lobster Data Platform / Orchestration neu erfasste Sendung erstellt, also erstmalig gespeichert, wird, sollen deren Daten über einen Profilaufruf an ein über Lobster_data angebundenes Transport-Management-System (TMS) übertragen werden.
Aus der Sicht von Lobster Data Platform / Orchestration handelt es sich bei diesem Vorgang um einen "Export", der über das eigens eingerichtete Lobster_data-Profil eine Import-Schnittstelle des TMS adressiert. Im vorliegenden Fall wird angenommen, dass für die Neuanlage keine unmittelbare Rückmeldung oder Empfangsbestätigung vom TMS zu erwarten ist, die in Lobster Data Platform / Orchestration synchron verarbeitet werden müsste.
Konfiguration:
►ANMERKUNG◄ Dass der Aufruf synchron erfolgt, bewirkt hier vor allem, dass für den Benutzer nachvollziehbar ist, wann der Transfer der Daten über das Profil komplett abgearbeitet ist. |
|
Komplexeres Beispiel
Immer dann, wenn eine bestehende Sendung in Lobster Data Platform / Orchestration geändert (also nach dem Erstellen erneut gespeichert) wird, soll jede Sendungsposition individuell und abhängig von ihren Trackingstatus an eine bestimmte Schnittstelle zum Transport-Management-System (TMS) übergeben werden.
Wenn der Trackingstatus einer Sendungsposition aus der Perspektive des Versenders final ist ("Versandfertig" oder "Storniert"), soll das Profil PRO2TMS_LINE_ITEM_FINAL ausgeführt werden.
Mit allen anderen Trackingstatus gilt eine Sendungsposition noch als volatil, also nicht endgültig definiert. Dann soll das Profil PRO2TMS_LINE_ITEM_VOLATILE ausgeführt werden.
In beiden Fällen soll das Profil das gesamte Datenobjekt der Sendung als Eingangsdaten erhalten, während die ausschlaggebende Sendungsposition nur durch Angabe der internen id als Wert einer Variablen itemId (im Profil MSG_CALL_itemId) identifiziert werden soll.
Aus technischen Gründen auf der TMS-Seite der Schnittstelle müssen die "volatilen" Positionen strikt seriell und in der gegebenen Reihenfolge übergeben werden, während die "finalen" Postionen erst danach und in beliebiger Reihenfolge folgen dürfen.
Konfiguration:
Ausgehend vom Auslösenden Ereignis "Ändern" (s. Allgemein (Ereignisse) wird durch die Prüfende Regel per Typprüfung sichergestellt, dass die folgenden Aktionen bei bestandender Regel nur für Sendungen ausgeführt werden.
Dann wird eine Für jeden Eintrag wiederholen (Schleife) über Direkte Positionen vom Typ "Standard" ausgeführt, wobei die Sendung aus dem Eingabewert der Ereignisbehandlung in der Variable shipment gespeichert wird.
Innerhalb der Schleife wird per Wenn Dann Sonst die Fallunterscheidung zwischen "finalen" und "volatilen" Trackingstatus-Codes für die jeweilige Sendungsposition ausgewertet.
In beiden Ästen (Dann/Sonst) der Fallunterscheidung folgt danach der Aufruf der Ereignisbehandlung Export, innerhalb einer Ausführen mit-Ereignisaktion, die das Bezugsobjekt für den Export temporär von der Sendungsposition zur übergeordneten Sendung verschiebt. Dabei wird die Sendungsposition in die Variable lineItem gespeichert, damit ihre id beim Export unter Variablen als Wert der Variablen itemId zugewiesen werden kann.
Der Export für die "volatilen" Positionen (im Sonst-Zweig, unten rechts) wird mit der Option synchron und ohne die Option Nach dem Commit konfiguriert, damit die entsprechenden Profilaufrufe seriell und vor denen für "finale" Positionen stattfinden.
Der Export für die "finalen" Positionen (im Dann-Zweig, unten links) wird ohne die Option synchron und mit der Option Nach dem Commit konfiguriert, so dass die entsprechenden Profilaufrufe nach dem Commit und damit der Abarbeitung aller synchron ausgeführten Profilaufrufe für "finalen" Positionen ausgelöst werden. Ohne die Option synchron werden diese Profilaufrufe nahezu gleichzeitig ausgelöst. Danach endet die Transaktion aus der Perspektive von Lobster Data Platform / Orchestration, ohne dass die Abarbeitung der Profilaufrufe abgewartet wird.
|