Eigenes Aktionsevent auslösen (Aktion)

Ereignisaktion - Kurzfassung

Zweck: Löst ein Eigenes Aktionsevent mit einem definierten Datenobjekt als Datenkontext aus, das vor der Fortsetzung der umgebenden Ereignisbehandlung komplett verarbeitet wird.

images/download/attachments/177911385/image-2024-9-16_9-15-3-version-1-modificationdate-1726470902554-api-v2.png

Eigenes Aktionsevent auslösen (Aktion)

Die Ereignisaktion Eigenes Aktionsevent auslösen (Aktion) löst ein Eigenes Aktionsevent aus und übergibt dabei entweder das aktuelle Bezugsobjekt oder ein als Rückgabewert eines Wertauflösers ermitteltes abweichendes Bezugsobjekt als "Eingabewert".

Welche Auswirkungen das Auslösen eines Ereignisses hat, hängt davon ab, ob Ereignisbehandlungen existieren, die es aus Auslöser berücksichtigen. Oft definieren die "Prüfenden Regel" einer Ereignisbehandlung spezifische Anforderungen, z. B. eine Typprüfung, so dass sie nur aktiv wird, wenn ein geeigneter "Eingabewert" übergeben wird.

Über Optionen (Details s. "Konfiguration") kann gesteuert werden, wann das Eigene Aktionsevent zur Laufzeit ausgelöst werden soll (sofort oder nach dem Commit) und wie ggf. Ereignisbehandlungen dann ausgeführt werden (synchron/seriell oder asynchron/parallel).

Im Datenkontext des ausgelösten Ereignisses stehen neben dem beim Auslösen definierten Bezugsobjekt auch alle im aufrufenden Kontext vorliegenden Variablen zur Verfügung. Allerdings werden diese nicht direkt übergeben sondern vorher "geklont". Deshalb sind die Werte von Variablen, die beim Verarbeiten des ausgelösten Ereignisses geändert oder neu angelegt werden, anschließend nicht im Kontext der aufrufenden Ereignisbehandlung verfügbar. Sie können daher nicht verwendet werden, um "Rückmeldungen" für die aufrufende Ereignisbehandlung bereitzustellen. Wo das erforderlich ist, muss die "Rückmeldung" über das von der aufrufenden Ereignisbehandlung bereitgestellte Bezugsobjekt erfolgen. Ggf. kommt als Bezugsobjekt auch ein per Erzeuge Instanz ("Client Objekt") oder Erzeuge Liste generiertes Datenobjekt infrage, dem geeignete "Rückgabewerte" zugewiesen werden können.

Konfiguration

Der Parameter Eigenes Aktionsevent unterstützt über ein Auswahlfeld/Combobox mit Suchfunktion (s. Screenshot rechts) die statische Auswahl für genau ein Eigenes Aktionsevent auf der Basis der zugehörigen Dynamischen Aufzählung.

HINWEIS◄ Die Auswahloptionen werden über Dynamische Aufzählungsfilter eingeschränkt, sofern diese im Kontext der Konfiguration anwendbar sind. Eine bestehende Auswahl muss nicht in der Auswahlliste enthalten sein. Sie kann beibehalten, geändert oder entfernt aber nach dem Entfernen nicht erneut auswählbar.

images/download/attachments/177911385/image-2024-9-16_9-17-37-version-1-modificationdate-1726471056827-api-v2.png

Der Parameter Datenobjekt bestimmt über einen Wertauflöser den Eingabewert, der an das per Eigenes Aktionsevent identifizierte Ereignis übergeben wird:

  • Wird kein Wertauflöser für das Datenobjekt definiert, wird zur Laufzeit das aktuelle Bezugsobjekt aus dem Kontext der Ereignisaktion Eigenes Aktionsevent auslösen (Aktion) an das Ereignis übergeben.

  • Ist ein Wertauflöser konfiguriert wird zur Laufzeit dessen Rückgabewert (ggf. auch "kein Wert" also null) an das Ereignis übergeben. Im Beispiel rechts soll nur die Adresse (address) des Bezugsobjekts vom Typ "Benutzer" als Eingabewert an ein Eigenes Aktionsevent ("Prüfe Adresse") übergeben werden.

images/download/attachments/177911385/image-2024-9-16_9-24-9-version-1-modificationdate-1726471449306-api-v2.png

Die Ereignisaktion Eigenes Aktionsevent auslösen (Aktion) sieht zwei Optionen vor, die steuern, wann und wie ein Eigenes Aktionsevent ausgelöst wird:

  1. Die Option Nach dem Commit in einer neuen Transaktion auslösen kann gesetzt werden, wenn das Ereignis nicht innerhalb der aktuellen Transaktion und sofort ausgeführt werden soll, sondern erst (und nur) wenn diese erfolgreich abgeschlossen wird ("Commit").

  2. Wenn ein Ereignis "nach dem Commit in einer neuen Transaktion" ausgelöst wird, hängt der genaue Ablauf von der Option Asynchron auslösen ab:

    1. Ist die Option Asynchron auslösen nicht ausgewählt (Standard), dann wird das Ereignis zwar erst nach dem Commit ausgelöst, aber trotzdem synchron ausgeführt. Dann werden die ausgelösten Ereignisbehandlungen demselben Thread auf der Server-CPU zugeordnet, der auch die auslösende Ereignisbehandlung bearbeitet. Die auslösende Ereignisbehandlung gilt erst dann als effektiv beendet, wenn die Behandlung aller nach dem Commit synchron ausgelösten Ereignisse abgeschlossen ist. Sofern dies mehrere Ereignisse betrifft werden diese durch den Thread "seriell" also strikt nacheinander entsprechend der Reihenfolge verarbeitet, in der sie ausgelöst wurden.

    2. Wird die Option Asynchron auslösen ausgewählt, dann kann wird die betreffende Ereignisbehandlung asynchron ausgeführt und dazu dem nächsten verfügbaren Thread aus dem Threadpool der Server-CPU zugeordnet. Sofern das Ereignis einem anderen Thread zugeordnet werden kann, widmet sich die auslösende Ereignisbehandlung sofort dem ggf. vorhandenen Nachfolger in der "Warteschlange" für die Auslösung nach dem Commit. Dieser wird dann sofort parallel zum asynchron ausgelösten Vorgänger gestartet und synchron oder wiederum asynchron verarbeitet.

HINWEIS◄ Die Option Asynchron auslösen beeinflusst den Ablauf der Ereignisverarbeitung ähnlich wie die Option "Synchron" den Profilaufruf beim Export (nur mit unterschiedlicher Polarität der Aus-/Abwahl).

Da die Option Asynchron auslösen nur in Verbindung mit der Option Nach dem Commit in einer neuen Transaktion auslösen auswählbar ist, können drei Anwendungsfälle konfiguriert werden:

Wann auslösen? ►

Wie auslösen? ▼

sofort auslösen

Nach dem Commit der aktuellen Transaktion auslösen

synchron
auslösen

images/download/attachments/177911385/image2021-10-20_14-50-34-version-1-modificationdate-1726470893732-api-v2.png

Das Ereignis wird sofort und synchron ausgelöst und vor allen nachfolgenden Ereignisaktionen "behandelt".

images/download/attachments/177911385/image-2024-9-16_9-24-51-version-1-modificationdate-1726471490654-api-v2.png

images/download/attachments/177911385/image2021-10-20_14-53-29-version-1-modificationdate-1726470893730-api-v2.png

Das Ereignis wird nach dem Commit und synchron ausgelöst. Ereignisbehandlungen verwenden denselben Thread wie die auslösende Ereignisbehandlung. Mehrere synchron ausgelöste Ereignisse werden seriell abgearbeitet.
images/download/attachments/177911385/image-2024-9-16_9-26-19-version-1-modificationdate-1726471578532-api-v2.png

asynchron
auslösen

(Asynchron auslösen ist "vor dem Commit" nicht anwendbar)

images/download/attachments/177911385/image2021-10-20_14-54-10-version-1-modificationdate-1726470893727-api-v2.png

Das Ereignis wird nach dem Commit und asynchron ausgelöst. Es wird dem nächsten verfügbaren Thread zugeordnet. Ggf. nachfolgende Ereignisse können also parallel abgearbeitet werden.

images/download/attachments/177911385/image-2024-9-16_9-27-10-version-1-modificationdate-1726471629538-api-v2.png

HINWEIS◄ Mit der Asynchron Option werden sämtliche Variablen als Kopie weitergegeben, um parallele Zugriffe auf dort enthaltene Objekte zu verhindern.

Beispiel

Einfaches Beispiel

Im Zuge einer interaktiven Aktion für eine bestehende Sendung (z. B. Zuweisen des Arbeitsstatus "Freigabe") soll der verantwortliche Benutzer in kompakter Form über die in Firmen- und Adressattributen spezifizierten "Beteiligten" an der betreffenden Sendung informiert werden. Dabei soll der Firmentyp als Titel und eine Verkettung von ausgewählten Adressmerkmalen in einer eigenständigen Benachrichtigung für jedes relevante Attribut erscheinen.

Beispiel:

images/download/attachments/177911385/image2021-2-10_15-8-8-version-1-modificationdate-1726470893781-api-v2.png

Konfiguration:

Damit die Anzeige von Adressattributen im gewünschten Format auch in anderen Zusammenhängen eingesetzt werden kann, wird ein Eigenes Aktionsevent mit dem Namen "Info: Adresse" definiert. Dieses Ereignis kann immer dann ausgelöst werden, wenn ein Benutzer über den Inhalt eines bestimmten "Firmen- und Adressattributs" benachrichtigt werden soll.

Für unser Beispiel wird eine Ereignisbehandlung erstellt, die ausgelöst wird, wenn einer Sendung der Arbeitsstatus "Freigabe" zugewiesen wird.

Die "Aktionen bei bestandener Regel" werden wie rechts abgebildet konfiguriert:

  • Eine Für jeden Eintrag wiederholen (Schleife)-Ereignisaktion iteriert über die Einträge die der Attribut (Wertauflöser) für den Attributtyp "Firmen- und Adressattribut" liefert.

  • Innerhalb der Schleife über alle "Firmen- und Adressattribute" der Sendung wird die Eigenes Aktionsevent auslösen (Aktion)-Ereignisaktion ausgeführt.

  • Als Eigenes Aktionsevent ist das Ereignis "Info: Adresse" ausgewählt, auf das die weiter unten vorgestellte Ereignisbehandlung reagieren soll.

  • Da für das Datenobjekt kein Wertauflöser konfiguriert ist, wird das innerhalb der Schleife gültige Bezugsobjekt, also das jeweilige Firmen- und Adressattribut, als "Eingabewert" an das Ereignis übergeben.

images/download/attachments/177911385/image-2024-9-16_9-45-32-version-1-modificationdate-1726472731974-api-v2.png

Für die Ausgabe der Benachrichtigung als Reaktion auf das "Info: Adresse"-Ereignis wird folgende Ereignisbehandlung konfiguriert:

  • Als Auslösendes Ereignis dient das für diesen Zweck definierte Eigene Aktionsevent "Info: Adresse"


  • Die im Bild zugeklappte Prüfende Regel beinhaltet eine Typprüfung für den Typ "Firmen- und Adressattribut", so dass nur dann eine Benachrichtigung ausgegeben wird, wenn der "Eingabewert" des Ereignisses diesem Typ entspricht. Da dieser Typ für Firmen- und Adressattribute aller Geschäftsobjekte einheitlich anwendbar ist, kann die Ereignisbehandlung auch für Adressattribute anderer Geschäftsobjekttypen (Bestellung, Manifest, usw.) verwendet werden.


  • Als Aktion bei bestandener Regel solle eine Hinweis anzeigen (Popup)-Ereignisaktion mit dem Typ "Info" (s. Bild oben) ausgeführt werden.


  • Im Titel Content-Builder beschafft ein Wert aus Sprachverwaltung-Wertauflöser die Lokalisierung für den Firmentyp, der im Feld "Typ" (companyType) des Firmen- und Adressattributs nachgelesen werden kann (im Bild nicht aufgeklappt).


  • Der Meldung Content-Builder verwendet einen Textverkettung-Wertauflöser, um aus einigen Komponenten der Adresse einen mit eingeschobenen Literalen formatierten Text zu erstellen. Konkret wird hier auf die Adressfelder "Name 1" (address.name1), die "Stadt" (address.city) und das Land im Feld "Länder-Kz" (address.countryCode) abgestellt.

    ANMERKUNG◄ Da beim "Länder-Kz" bewusst nur der interne Name des betreffenden Eintrags in der Dynamischen Aufzählung Land erscheinen soll, wird hier - im Unterschied zum Zugriff auf den Firmentyp im Titel Content-Builder - kein Wert aus Sprachverwaltung-Wertauflöser verwendet, um den betreffenden lokalisierten Volltext für das Land in der aktuellen Sprache der Sitzung zurückzugeben.

images/download/attachments/177911385/image-2024-9-16_10-55-45-version-1-modificationdate-1726476944452-api-v2.png

HINWEIS◄ Der Event Recorder macht nachvollziehbar, mit welchem Eingabewert ein Eigenes Aktionsevent wann aufgerufen wurde:

images/download/attachments/177911385/image2021-2-10_18-17-59-version-1-modificationdate-1726470893799-api-v2.png

  • Analog zum eingangs gezeigten Beispiel wurden im Bild drei Adressattribute in einer Sendung vorgefunden und zwecks "Benachrichtigung" an das Eigene Aktionsevent "Info: Adresse" weitergegeben.

  • Der Reiter Eingabewert im Detailbereich zeigt das Datenobjekt des letzten Aufrufs mit dem Firmentyp "Abholadresse" (DPA).