Liste modifizieren / Hinzufügen

Mit der Operation "Hinzufügen" kann einer gegebenen Liste ein einzelner Eintrag hinzugefügt werden, der im Allgemeinen am Ende der Liste erscheint.

Konfiguration

Nach dem Hinzufügen einer Liste modifizieren-Ereignisaktion zu einem Workflow ist die Operation "Hinzufügen" bereits ausgewählt.

Die Wert-Konfiguration für die zu modifizierende Liste (links) muss zur Laufzeit eine aktualisierbare Liste liefern.

  • Wird auf eine Wert-Konfiguration für die zu modifizierende Liste (links) verzichtet, wird automatisch auf das Bezugsobjekt im Kontext der Liste modifizieren-Ereignisaktion zurückgegriffen.

Die Wert-Konfiguration (rechts) definiert den hinzuzufügenden Eintrag.

  • Wird auf eine Wert-Konfiguration für den hinzuzufügenden Eintrag (rechts) verzichtet, gilt als Standardwert "Kein Wert" ($null).

  • Eine explizite Wert-Konfiguration für den hinzuzufügenden Eintrag (rechts) kann allerdings trotzdem auf das Bezugsobjekt im Kontext der Liste modifizieren-Ereignisaktion zugreifen.

Beispiele

Einfache Anwendungsfälle: Liste mit simplen Werten

Die folgende Serie von Beispielen demonstriert unterschiedliche einfache Anwendungsfälle für das Hinzufügen von Einträgen zu einer Liste von simplen Werten (vom Typ String) mit der Liste modifizieren-Ereignisaktion.

Die Spalte "Ergebnis" zeigt das JSON-Abbild des resultierenden Werts für die in der Variable list gespeicherte Liste nach der sequenziellen Ausführung aller Konfigurationen bis zur jeweilige Tabellenzeile.

Konfiguration

Beschreibung

Ergebnis

images/download/attachments/189462039/image-2025-1-28_14-27-30-version-1-modificationdate-1738070850192-api-v2.png

Die Wert-Konfiguration für die zu modifizierende Liste (links) erzeugt über den Erzeuge Instanz-Wertauflöser eine leere Liste und weist über den verketteten Wert als Variable speichern-Wertauflöser dieses Datenobjekt der Variablen list zu.


WICHTIG◄ Die Initialisierung der Liste ist hier unbedingt erforderlich. Ein Variable-Wertauflöser mit dem Typ "Liste" eignet kann die Wertauflöserkette nicht ersetzen, da dieser nicht automatisch eine List-Objekt generiert.


Als Wert-Konfiguration für den hinzuzufügenden Eintrag (rechts) dient ein Wertauflöser für statischen Text mit dem Textwert A.

["A"]

images/download/attachments/189462039/image-2025-1-28_14-44-44-version-1-modificationdate-1738071884091-api-v2.png

Als folgender Schritt wird zunächst eine Ausführen mit-Ereignisaktion verwendet, um die im vorherigen Schritt erzeugte Liste als temporäres Bezugsobjekt für den Aktionsblock zu definieren. Dies erledigt der Variable-Wertauflöser im Parameter Objekt-Wertauflöser indem er den Variablennamen list adressiert.


HINWEIS◄ Die Einstellungen für den Typ und die Option Ist Liste von wurden hier manuell vorgenommen, um die willkürliche Konvention abzubilden, dass "unsere" Liste nur Textwerte enthalten soll. Daher wird für den Aktionsblock unterhalb der Datentyp String[] - also "String-Liste" - avisiert.

Innerhalb der Liste modifizieren-Ereignisaktion erscheint dieser Typhinweis auch für die linke Wert-Konfiguration. Wir können also auf eine explizite Wert-Konfiguration für die zu modifizierende Liste verzichten, nachdem diese zur Laufzeit als Bezugsobjekt vorliegt.


Als Wert-Konfiguration für den hinzuzufügenden Eintrag (rechts) dient wie im vorherigen Beispiel ein Wertauflöser für statischen Text mit dem Textwert B.

ANMERKUNG◄ Die Liste modifizieren-Ereignisaktion fügt einer Liste neue Einträge grundsätzlich am Ende hinzu.

["A","B"]

images/download/attachments/189462039/image-2025-1-28_14-59-26-version-1-modificationdate-1738072766475-api-v2.png

Der nächste Schritt soll demonstrieren, dass eine als Bezugsobjekt vorliegende Liste für die Wert-Konfigurationen auf beiden Seiten der Liste modifizieren-Ereignisaktion als Eingabewert genutzt werden kann.

Analog zum vorherigen Schritt bezieht sich eine Ausführen mit-Ereignisaktion auf die Variable list als temporäres Bezugsobjekt. Natürlich hätte man stattdessen auch den Aktionsblock aus dem vorherigen Schritt erweitern können.

Innerhalb der Liste modifizieren-Ereignisaktion wird wie im vorherigen Schritt auf eine explizite Wert-Konfiguration für die zu modifizierende Liste (links) verzichtet, da diese als temporäres Bezugsobjekt vorliegt.

Die Wert-Konfiguration für den hinzuzufügenden Eintrag (rechts) verwendet einen Listenwert-Wertauflöser, der mit Standardeinstellungen (Modus "Wert (vom Anfang)" und Offset 0) den ersten Eintrag aus der als Eingabewert bzw. Bezugsobjekt vorliegenden Liste zurückgibt. Im gegebenen Szenario liefert der Listenwert also den Textwert A, der der Liste list im ersten Schritt hinzugefügt wurde. Dieser Wert wird nun am Ende der Liste erneut hinzugefügt.

["A","B","A"]

images/download/attachments/189462039/image-2025-1-28_16-3-21-version-1-modificationdate-1738076601380-api-v2.png

Der abschließende Schritt demonstriert die besondere Interpretation bei einem Verzicht auf eine Wert-Konfiguration für den hinzuzufügenden Eintrag (rechts):

Analog zum vorherigen Schritt steht als temporäres Bezugsobjekt im Aktionsblock einer Ausführen mit-Ereignisaktion die bestehende Liste (via Variable list) zur Verfügung.

Da wie oben auf eine Wert-Konfiguration für die zu modifizierende Liste (links) verzichtet wurde, wird diese Liste modifiziert.

Im Unterschied zum vorherigen Schritte wurde nun ebenfalls auf die Wert-Konfiguration für den hinzuzufügenden Eintrag (rechts) verzichtet. Anders als bei der linken Wert-Konfiguration gilt rechts damit "Kein Wert" ($null) als hinzuzufügender Eintrag und nicht etwa das String-Abbild, der bis dahin aufgebauten Liste.

["A","B","A",null]

Besonderer Anwendungsfall: Eindeutige Liste

Im Allgemeinen handelt es sich bei "Listen" in Lobster Data Platform / Orchestration um Datenobjekte des Typs "Liste" (List), in denen Einträge beliebiger Typen beliebig "aneinandergereiht" werden können. Derselbe Eintrag kann dabei auch mehrfach vorkommen.

In besonderen Fällen kommt dagegen eine "Eindeutige Liste" (Set) zum Einsatz. Eine "Eindeutige Liste" lässt im Allgemeinen ebenfalls Einträge unterschiedlicher Typen zu, kann denselben Eintrag allerdings nicht mehrfach enthalten.

Dei Datenstruktur für Benutzer sieht z. B. das Feld "Firmen" (companies) für eine "Eindeutige Liste" von Long-Werten vor, die Referenzen auf die "ID" (id) von Firmen/Mandanten sind, die der Benutzer beim Login als Firma der Session heranziehen kann.

Im folgenden Beispiel soll mit Hilfe der Liste modifizieren-Ereignisaktion sichergestellt werden, dass die Liste der "Firmen" (companies) für ein gegebenes Benutzerkonto Referenzen auf die Firma der Session und eine eventuell von dieser abweichende Firma mit dem Firmentyp "Rechnungsempfänger" aus deren übergeordneter Hierarchie enthält.

Konfiguration:

Innerhalb eines Aktionsblocks, der das betreffende Benutzerkonto als Bezugsobjekt bereitstellt (z. B. eine Ausführen mit- oder Für jeden Eintrag wiederholen (Schleife)-Ereignisaktion) werden zwei Instanzen der Liste modifizieren-Ereignisaktion wie rechts dargestellt konfiguriert:

  • Die Wert-Konfiguration für die zu modifizierende Liste (links) ist in beiden Fällen ein Objekt-Feld-Wertauflöser, der die Liste im Feld "Firmen" (companies) als zu modifizierende Liste definiert.

    HINWEIS◄ Der in der Konfiguration angezeigte Typhinweis Long[] lässt leider nicht erkennen, ob das companies-Feld ein List- oder ein Set-Objekt beinhaltet. Auch das Server-XML des Benutzerkontos liefert keine unmittelbaren Anhaltspunkte für den Listentyp.

  • Die Wert-Konfiguration für den hinzuzufügenden Eintrag (rechts) verwendet in beiden Fällen einen Firma der Session-Wertauflöser.
    HINWEIS◄ Auf einen expliziten Lesezugriff auf das "ID" (id)-Feld über einen Objekt-Feld-Wertauflöser wurde hier verzichtet, da im gegebenen Szenario eine automatische Typumwandlung (Entität → Long) greift.

    • Im ersten Fall wird auf die Firma der Session direkt - als ohne Vorgabe für den Firmentyp (im Parameter des Typs) - zugegriffen.

    • Im zweiten Fall soll eine Firma mit dem Firmentyp "Rechnungsempfänger" (INV) ermittelt werden. Dabei wird ausgehend von der Firma der Session die Firmenhierarchie aufwärts durchsucht, bis eine Firma gefunden wird, die diesen Firmentyp im Feld "Firmentypen" (types) enthält. Bei dem Feld "Firmentypen" (types) handelt es sich übrigens um ein weiteres Beispiel für eine "Eindeutige Liste".

images/download/attachments/189462039/image-2025-1-29_7-27-8-version-1-modificationdate-1738132027767-api-v2.png

Für das Laufzeitverhalten dieser Konfiguration sind folgende Szenarien denkbar:

  • Falls das Benutzerkonto noch nicht gespeichert wurde, sodass zu Beginn noch keine companies-Liste vorliegt, wird das Feld automatisch mit einer leeren "Eindeutigen Liste" initialisiert. Im Unterschied zum vorherigen Beispiel erübrigt sich der Einsatz des Erzeuge Instanz-Wertauflösers.

  • Falls die "ID" (id) der Firma der Session noch nicht in der companies-Liste enthalten ist, wird sie hinzugefügt.

  • Falls sich das Konto der Firma der Session per Listenfeld "Firmentypen" (types) auf den Firmentyp "Rechnungsempfänger" bezieht, ist die zweite Instanz der Liste modifizieren-Ereignisaktion wirkungslos, da die "ID" (id) der Firma der Session der companies-Liste ggf. bereits hinzugefügt wurde.

  • Anderenfalls wird in der übergeordneten Firmenhierarchie nach einer als "Rechnungsempfänger" qualifizierten Firma gesucht.

    • Falls eine entsprechende Firma gefunden wird und deren "ID" (id) noch nicht in der companies-Liste des Benutzers enthalten ist, wird sie hinzugefügt.

    • In allen anderen Fällen (kein "Rechnungsempfänger" auffindbar oder ermittelter "Rechnungsempfänger" bereits in der companies-Liste enthalten) ist die zweite Instanz der Liste modifizieren-Ereignisaktion wirkungslos,

Komplexerer Anwendungsfall: Typisiertes plurales Attribut hinzufügen

Wenn ein neues Benutzerkonto (s. Benutzer) erstellt wird, soll die Adresse der Firma der Session zu dessen Adresskontakten mit dem Kontakttyp "Location" (LOCATION) hinzugefügt werden.

Konfiguration:

In einer Ereignisbehandlung, die auf das Ereignis "Erstellen" (s. Allgemein (Ereignisse)) reagiert und per Typprüfung sicherstellt, dass eine Entität des Typs "Benutzer" (User) erstellt werden soll, wird eine Liste modifizieren-Ereignisaktion wie folgt konfiguriert:

images/download/attachments/189462039/image-2025-1-28_17-45-33-version-1-modificationdate-1738082733162-api-v2.png

  • Die Wert-Konfiguration für die zu modifizierende Liste (links) verwendet eine Wertauflöserkette:

    • Der Objekt-Feld-Wertauflöser greift zunächst auf das address-Feld des als Bezugsobjekt vorliegenden Benutzerkontos zu.

    • Der verkettete Typisierte plurale Attribute (Wertauflöser) bezieht sich per Auswahl für Typisiertes Attribut auf den Typ "Adresskontakt" und dessen Subtyp "Location" (LOCATION), der vorher in der Dynamischen Aufzählung Kontakttyp als benutzerdefinierter Wert angelegt wurde.

  • Die Wert-Konfiguration für den hinzuzufügenden Eintrag (rechts) verwendet den Erzeuge Instanz mit Werten-Wertauflöser, um einen Attributwert für den Typ "Adresskontakt" (AddressContact) zu erzeugen.

    • Die einzige Eigenschaft, die für diesen neuen Attributwert explizit gesetzt werden muss, ist das contactAddress-Feld, dem als Wert die Adresse der Firma der Session zugewiesen wird.

    • Da die zu modifizierende Liste (links) über die Konfiguration für den Typisierte plurale Attribute (Wertauflöser) den Subtyp "Location" (LOCATION) eindeutig qualifiziert, muss dieser im Adresskontakt-Wert rechts nicht explizit zugewiesen werden.

HINWEIS◄ Falls beim Erstellen des Benutzerkontos mehrere Adresskontakte mit unterschiedlichem Kontakttyp zugewiesen werden sollen, könnte man den Alle Attribute eines Typs-Wertauflöser mit dem Typ "Adresskontakt" verwenden, um die zu modifizierende Liste zunächst ohne Bezug zu einem Subtyp zu definieren. Diese Liste kann dann von eienr Serie unterschiedlicher Liste modifizieren-Instanzen modifiziert werden, die allerdings für den jeweils hinzuzufügenden Eintrag eine explizite Zuweisung für das Feld "Kontakttyp" (contactType) beinhalten müssen.

ANMERKUNG◄ In diesem Beispiel werden die Adressdaten der Firma der Session dem neuen Adresskontakt des erstellten Benutzers übergeben. Da es sich bei Adressen um Referenzierte Objekte handelt, verweisen das address-Feld der Firma und das contactAddress-Feld des Adresskontakts momentan auf dieselbe "Adresse"-Entität. Allerdings können die Adressdaten in beiden Kontexten jederzeit geändert werden, was jeweils eine Änderung der Referenz zu einer anderen "Adresse"-Entität zur Folge hätte. Es besteht keine dauerhafte Verknüpfung zwischen der Firmenadresse und dem Adresskontakt.