Profil aufrufen (Ereignisaktion)
Ereignisaktion - Kurzfassung
Zweck: Ruft ein Lobster_data-Profil mit den Daten des aktuellen Bezugsobjekts auf. Der Aufruf erfolgt (im Unterschied zum Export) sofort und grundsätzlich synchron. Nur wenn eine Entität als Bezugsobjekt anliegt, wird als Rückgabewert eine XML-Struktur erwartet und als Aktualisierung für die Entität interpretiert. Für andere Bezugsobjekte wird der Profilaufruf synchron abgearbeitet, aber ohne einen Rückgabewert zu berücksichtigen.
Siehe auch: Export (Ereignisaktion), Profilaufruf (Wertauflöser), Profil aufrufen (Verhalten in Formularen)
Die Ereignisaktion Profil aufrufen (Ereignisaktion) ruft ein Lobster_data-Profil mit den Daten des aktuellen Bezugsobjekts auf.
Im Unterschied zu einem Profilaufruf per Export erfolgt der Aufruf sofort und grundsätzlich synchron, so dass die Ereignisbehandlung unterbrochen wird, bis das Profil abgearbeitet ist.
Beim Profilaufruf werden die Daten des aktuellen Bezugsobjekts als Eingangsdaten (XML) übergeben. Der weitere Ablauf hängt davon ab, ob es sich beim Bezugsobjekt um eine Entität handelt - also ein Datenobjekt eines serverseitig verwalteten Typs - handelt oder nicht:
Bezugsobjekt |
Auswirkung |
Bezugsobjekt ist eine Entität |
Sofern es sich bei dem Bezugsobjekt um eine Entität - also eine Instanz eines serverseitig definierten konkreten Entitätstyps - handelt, erwartet Lobster Data Platform / Orchestration als Rückgabewert des Profils eine XML-Struktur, die analog zur Objektstruktur bei einem Import mit der Datenstruktur des Bezugsobjekts zusammengeführt werden kann, um dessen volatilen Datenstand zu aktualisieren.
►HINWEIS◄ Liefert das aufgerufene Profil keinen oder einen ungeeigneten Rückgabewert, etwa weil kein entsprechender Antwortweg konfiguriert oder aktiv ist oder der bereitgestellte Inhalt anstelle des erwarteten XML-Formats z. B. das JSON-Format verwendet, dann tritt ein Fehler auf, der einen Rollback der Transaktion in Lobster Data Platform / Orchestration bewirkt, während Lobster_data den Profil-Job als fehlerfrei abgearbeitet verzeichnet. Falls ein Profil nur mit den Daten einer Entität ausgeführt werden soll, ohne dass einen inhaltlich relevanten Rückgabewert erwartet wird, muss deshalb trotzdem immer ein Antwortweg angelegt werden, der - z. B. per CronPassBackDataResponseUTF8 - eine Datenstruktur zurückgibt, die per Zusammenführung verarbeitet werden kann aber keine Änderungen verursacht. Durch Auswählen der Option "wie empfangen" für Inhalt im Reiter Inhalts-Einstellungen kann z. B. einfach erreicht werden, dass der Rückgabewert die Eingangsdaten unverändert widerspiegelt, während andere Antwortwege sich auf abweichenden Inhalt aus den Phasen 3-5 beziehen können:
|
Bezugsobjekt ist keine Entität |
Wenn das Bezugsobjekt keine Entität sondern z. B. ein simpler Wert, eine Liste (s. Beispiel) oder ein Client-Objekt ist, wird ebenfalls ein Server-XML der entsprechenden Datenstruktur erzeugt und an das Profil übergeben. Beispiel (Server-XML für eine Liste von Strings)
<? xml version = "1.0" encoding = "UTF-8" ?> < list xmlns:xsd = "http://www.w3.org/2001/XMLSchema" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" > < entry xsi:type = "xsd:string" >P1020</ entry > < entry xsi:type = "xsd:string" >X4896</ entry > ... </ list >
►WICHTIG◄ Für Datenobjekte, die keine Entitäten sind, sieht Lobster Data Platform / Orchestration keinen Aktualisierungsmechanismus in Zusammenhang mit einem Profilaufruf vor. Ein Rückgabewert vom Profil wir daher - im Unterschied zum Aufruf mit den Daten einer Entität - weder verarbeitet noch erwartet. Der Profilaufruf erfolgt allerdings trotzdem synchron, d. h. für die Laufzeit des Lobster_data-Profils wird die aufrufende Ereignisbehandlung in Lobster Data Platform / Orchestration unterbrochen. Danach wird sie fortgesetzt, wobei für das Bezugsobjekt selbst dann der Zustand beim Auslösen des Profils unverändert gilt, falls das Profil - z. B. per CronPassBackDataResponseUTF8 - einen Rückgabewert an Lobster Data Platform / Orchestration liefert. ►HINWEIS◄ Im Kontext eines Formulars kann alternativ die Verhaltensweise Profil aufrufen genutzt werden, um ein beliebiges Datenobjekt an ein Profil zu übergeben und den Rückgabewert des Profils anschließend wieder im Portal zu verarbeiten. Bei Bedarf sind dort auch alternative Formate für den Datenaustausch zwischen Lobster Data Platform / Orchestration und dem aufgerufenen Lobster_data-Profil auswählbar (z. B. JSON statt XML), mit denen nicht an Entitätstypen gebundene Datenstrukturen oft effizienter gehandhabt werden können. |
Zuweisungen an MSG_CALL-Variablen im Profil:
Informationen zum anwendbaren Anmeldekontext (Firma, Rolle, Benutzer) werden - wie bei Profilaufrufen aus Lobster_pro ü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 |
MSG_CALL_SCM_Company_id |
BigInteger |
|
Datenobjekt Firmenkontos als XML (Text) |
MSG_CALL_SCM_Company_xml |
String |
|
ID (id) der Rolle |
MSG_CALL_SCM_Role_id |
BigInteger |
|
ID (id) des Benutzerkontos |
MSG_CALL_SCM_User_id |
BigInteger |
|
Benutzername (username) |
MSG_CALL_SCM_User_username |
String |
|
Datenobjekt des Benutzerkontos als XML (Text) |
MSG_CALL_SCM_User_xml |
String |
Optional können für weitere Variablen Wertzuweisungen zur Übergabe zusätzlicher Daten an das aufgerufene Profil konfiguriert werden.
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.
Die Option Bei Profilfehler abbrechen? legt fest, ob ein Fehler während der Abarbeitung des Profilaufrufs (in Lobster_data) auch als Fehler (inkl. Rollback) innerhalb der Ereignisbehandlung in Lobster Data Platform / Orchestration gewertet wird.
Die Option ist per Standard abgewählt, sodass bei einem Fehler während der Profilausführung die Ereignisbehandlung mit unveränderten Bezugsobjekt fortgesetzt wird.
Wenn die Option ausgewählt ist, schlagen Fehler in Lobster_data auf die Transaktion in Lobster Data Platform / Orchestration durch. Ein Abbruch inkl. Rollback der Transaktion kann damit auch über die Lobster_data-Funktion throw exception gezielt ausgelöst werden.
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.
Beispiel
Innerhalb einer Erfassungsmaske für Bestellungen sollen auf Anfrage Einzelpreise je Position aus einem kaufmännischen System "eingeholt" werden, sofern die jeweilige Position eine Reihe von Kriterien erfüllt (EAN-Nummer ausgefüllt, noch ein Preis eingetragen, ...). Die Preisanfrage soll für jede Position unter Angabe einer individuellen Zielwährung erfolgen können. Weitere Details zum Nachschlagen der Preise sollen für das Beispiel keine Rolle spielen.
Entscheidend ist, dass die Anfrage über einen Profilaufruf abgewickelt werden muss, der selektiv für jede qualifizierte Bestellposition auszuführen ist. Die eingeholten Preise sollen im volatilen Datenobjekt der Bestellung sofort erscheinen, ohne dass die Bestellung insgesamt gespeichert werden muss.
Konfiguration:
Eine Ereignisbehandlung, die ein Eigenes Aktionsevent "Einzelpreis nachschlagen" als Auslösendes Ereignis verwendet, wird wie rechts dargestellt konfiguriert:
►HINWEIS◄ Da es sich bei einer Position immer um eine Entität handelt (hier vom Typ OrderLineItem), kann das Profil über den Rückgabewert eine Aktualisierung von Eigenschaften der Position bewirken. Ob die Position oder die umgebende Bestellung bereits gespeichert wurde spielt dabei keine Rolle. Der Rückgabewert wird schlicht mit den Daten des anliegenden Bezugsobjekts zusammengeführt. |
|