Eingabeobjekt (Typsicher)

Wertauflöser - Kurzfassung

Zweck: Prüft, ob der Eingabewert mit dem angegebenen Typ kompatibel ist und gibt "kein Wert" ($null) zurück, falls nicht. Der Rückgabewert im Erfolgsfall variiert abhängig von Eingabewert-Typ und Ziel-Typ.

Siehe auch: Typprüfung, Variable

images/download/attachments/200673324/image-2025-2-13_15-34-9-version-1-modificationdate-1739457248647-api-v2.png

Der Eingabeobjekt (Typsicher)-Wertauflöser versucht den Eingabewert auf den angegebenen Typ abzubilden und unterstützt dabei vier unterschiedliche Anwendungsfälle:

  • Typumwandlung in simple Werte (String, Long, usw.)

  • Nachschlagen eines Aufzählungswerts aus einer statischen oder Dynamischen Aufzählung per Textschlüssel

  • Nachschlagen einer Entität per ID ►WICHTIGFunktioniert NICHT in einem Client Workflow!

  • Typprüfung (Prüfen der Klassenzugehörigkeit eines Datenobjekts)

Die Einsatzmöglichkeiten sind vielfältig. Das folgende Schema beschreibt die Varianten im Überblick. Konkrete Konfigurationen s. "Beispiele" (unten).

HINWEIS◄ Sofern der Eingabewert in einer Variable vorliegt, kann anstelle des Eingabeobjekt (Typsicher)-Wertauflösers oft auch direkt der Variable-Wertauflöser für die beschrieben Zwecke eingesetzt werden. Dieser unterstützt dieselben Parameter und ähnliche Umwandlungslogiken mit dem wichtigsten Unterschied, dass nicht der Eingabewert sondern der Wert einer Variablen verarbeitet wird. Ein wichtiger Unterschied ist allerdings, dass der Eingabeobjekt (Typsicher)-Wertauflöser ohne Angabe für den Typ grundsätzlich $null zurückgibt, während beim Variable-Wertauflöser auf die "Typ"-Auswahl verzichtet werden kann, um den Wert der Variablen zu erhalten.

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Der Eingabeobjekt (Typsicher)-Wertauflöser ignoriert beim Zugriff auf Entitäten per ID - ebenso wie der Variable-Wertauflöser - jegliche Zugriffsbeschränkungen. Der Zugriff erfolgt - anders als z. B. im Kontext einer Suche - ausdrücklich ohne Berücksichtigung von Rollenberechtigungen (s. Rolle) für den Entitätstyp und Besitzrechten bzw. Firmenfreigaben für die konkrete Entität. Konkret ermöglicht das z. B. den ungehinderten (Lese-)Zugriff auf jede per ID "bekannte" Entität (z. B. ein Benutzerkonto, das als creator in den Daten einer Entität registriert ist), ohne dass dafür im Kontext einer Ausführen als-Ereignisaktion in eine bestimmte Rolle oder die passende Firma gewechselt werden müsste. Entsprechende Zugriffe sind deshalb auch in Ausführungskontexten möglich, in denen ein Firmen- oder Rollenwechsel technisch nicht möglich ist (z. B. Zuordnungskriterien, Eigene Übersichten, Such API, usw.).

Typumwandlung in simple Werte

Eingabewert-Typ

Ziel-Typ

Bedingung

Rückgabewert

Simpler Wert
oder
Datenobjekt

Simpler Wert

Umwandlung des Eingabewerts in den Ziel-Typ möglich

in "Ziel-Typ" umgewandelter Wert

Umwandlung des Eingabewerts in den Ziel-Typ nicht möglich

kein Wert ($null)

Beispiel: Anstelle eines Timestamp Werts (z. B. lastModified-Feld einer Entität) wird für eine Berechnung der Long-Wert (Anzahl der Millisekunden seit 01.01.1970 UTC) benötigt.

Timestamp

Long

Timestamp kann in Long umgewandelt werden.

(z. B.) 1658833400122

Timestamp

"Datum mit Zeit" (DateTime)

Timestamp kann nicht in DateTime umgewandelt werden.

kein Wert ($null)

Nachschlagen eines Aufzählungswerts aus einer statischen oder Dynamischen Aufzählung per Textschlüssel

Eingabewert-Typ

Ziel-Typ

Bedingung

Rückgabewert

Textwert
(String)

Klasse für Werte einer
statischen oder
dynamischen Aufzählung

Eingabewert entspricht einem Schlüsselwert (name) für einen Wert der Aufzählung

Aufzählungswert

Eingabewert gilt nicht als Schlüsselwert für einen Wert der Aufzählung

kein Wert ($null)

Beispiel: Aus einem Feldwert wird ein Teilstring als "Länderkennzeichen" gewonnen, zu dem das passende Land aus der Dynamischen Aufzählung ermittelt werden soll.

(z. B.) MT

Land (Country)

MT ist der Name eines Werts in der Dynamischen Aufzählung Land (→"Malta")

Land "Malta"

(z. B.) XY

XY ist kein Name in der Dynamischen Aufzählung Land

kein Wert ($null)

Nachschlagen einer Entität per ID ◄ Funktioniert NICHT in einem Client Workflow!

Eingabewert-Typ

Ziel-Typ

Bedingung

Rückgabewert

Long-Wert

Entitätstyp

Der Eingabewert verweist auf die ID (id) einer Entität des Ziel-Typs.

Entität als "Eingabeobjekt"
(wird vom Server in den aktuellen Kontext "geholt", sofern dort nicht schon vorhanden)

Eingabewert gilt nicht als Schlüsselwert für einen Wert der Aufzählung

kein Wert ($null)

Beispiel: Ausgehend vom Feld "Besitzer" (ownerId) soll das komplette Konto der betreffenden Firma (s. Firmen) "herangezogen" werden.

(z. B.) ownerId="21"

"Firmenkonto" (CompanyAccount)

Ein Firmenkonto mit der id 21 existiert.

"Firmenkonto" mit der id=21

(z. B.) ownerId="404"

Es existiert kein Firmenkonto mit der id 404.

kein Wert ($null)

Typprüfung: Prüfen der Klassenzugehörigkeit eines Datenobjekts

Eingabewert-Typ

Ziel-Typ

Bedingung

Rückgabewert

Simpler Wert
oder
Datenobjekt

Klasse

Datenobjekt ist mit dem Ziel-Typ kompatibel

Datenobjekt (identisch mit dem Eingabewert, also
nicht umgewandelt in die als Ziel-Typ angegebene Klasse)

Datenobjekt mit Ziel-Typ nicht kompatibel

kein Wert ($null)

Beispiel: Es soll geprüft werden, ob der Benutzer der Session-Wertauflöser einen Benutzer oder einen Gastbenutzer liefert.

HINWEIS◄ Das folgende Schema zeigt auch den Effekt einer Prüfung gegen den übergeordnete Klasse "Schnittstelle > Benutzer" (IUser) als Typ, der Benutzer und Gastbenutzer abdeckt. Auch wenn daraufhin im nachfolgenden Konfigurationskontext (etwa in einem verketteten Objekt-Feld-Wertauflöser) nur die für die "Schnittstellenklasse" definierten Merkmale (eine eng begrenzte Auswahl aus der Schnittmenge der Felder für Benutzer und Gastbenutzer) unterstützt werden, liefert der Eingabeobjekt (Typsicher)-Wertauflöser trotzdem immer das komplette Datenobjekt des jeweiligen konkreten Entitätstyps (Benutzer oder Gastbenutzer). Auch die Variable entityClass wird automatisch mit dem Klassennamen des konkreten Entitätstyps besetzt, so dass eine nachfolgende Typprüfung oder Auswertung mit einer weiteren Instanz des Eingabeobjekt (Typsicher)-Wertauflösers immer noch die Zugehörigkeit einer Entität zu den von der übergeordneten "Schnittstellenklasse" abgedeckten Klassen (ob konkret oder nicht) differenzieren kann.

Rückgabewert von
Benutzer der Session

Benutzer (User)

Ein Benutzer ist angemeldet.

das angemeldete Benutzer-Konto

Ein Gastbenutzer ist angemeldet.

kein Wert ($null)

"Schnittstelle > Benutzer" (IUser)

Ein Benutzer ist angemeldet.

das angemeldete Benutzer-Konto

Ein Gastbenutzer ist angemeldet.

das angemeldete Gastbenutzer-Konto

Gastbenutzer (GuestUser)

Ein Gastbenutzer ist angemeldet.

das angemeldete Gastbenutzer-Konto

Ein Benutzer ist angemeldet.

kein Wert ($null)

Konfiguration

Der Wertauflöser erwartet immer einen Eingabewert. Ohne Eingabewert (bzw. mit dem Eingabewert "kein Wert", also: $null) lautet der Rückgabewert immer $null.

Der Parameter Typ definiert die Klasse (oder den Datentyp bzw. Entitätstyp), die abhängig vom Einsatzzweck das Ziel einer Typumwandlung, Typprüfung oder eines Datenabrufs ist.

Im Auswahlfeld für den Typ erleichtert eine Suchfunktion (s. Bild rechts) das Auffinden der passenden Klasse für den jeweiligen Zweck. Diese durchsucht die Lokalisierungstexte der Klassen ebenso wie die intern verwendeten eindeutigen Klassennamen.

WICHTIG◄ Wie das [+]-Symbol andeutet, lässt das Auswahlfeld auch Freitexteingaben zu, die dann als interner Klassenname interpretiert werden. Wenn man sehr schnell einen Suchbegriff eingibt und dann sofort die Eingabetaste drückt, um den vermeintlichen Treffer auszuwählen, kann es passieren, dass der Suchbegriff als Eingabe für einen internen Klassennamen interpretiert wird, wie im folgenden Beispiel.

Sofort nach dem Eingeben des Suchtexts long für den Typ wird unmittelbar die Eingabetaste gedrückt. Wenn die Suchfunktion die gewünschte Klasse "Long" (java.lang.Long) zu diesem Zeitpunkt noch nicht "gefunden" hatte, verweist der Parameter (s. Bild rechts) unsinnigerweise auf eine unbekannte Klasse (long).

Liegt das gewünschte Ergebnis der Suchfunktion beim Drücken der Eingabetaste bereits vor, erscheint im Auswahlfeld die gewünschte Klasse "Long" (java.lang.Long). Für die meisten Klassen erscheint das Label nicht vollständig im Auswahlfeld. Im Zweifel sollte man daher den Tooltip beachten, der erscheint, wenn der Mauszeiger über das Label bewegt wird.

images/download/attachments/200673324/image-2025-2-13_15-36-30-version-1-modificationdate-1739457390086-api-v2.png

FALSCH:
images/download/attachments/200673324/image-2025-2-13_15-38-46-version-1-modificationdate-1739457525638-api-v2.png

RICHTIG:
images/download/attachments/200673324/image-2025-2-13_15-40-53-version-1-modificationdate-1739457652492-api-v2.png

Die Option Ist Liste von (per Standard "abgewählt") kann ausgewählt werden, um in Verbindung mit dem Typ festzulegen, dass der "Ziel-Typ" eine Liste von Elementen sein soll, die der Klasse Typ entsprechen.

  • Ist mindesten ein Listeneintrag im Eingabewert nicht mit der als Typ ausgewählten Klasse kompatibel, dann lautet der Rückgabewert $null.

  • Enthält der Eingangswert keine Liste, lautet der Rückgabewert $null.

images/download/attachments/200673324/image-2025-2-13_15-41-35-version-1-modificationdate-1739457694462-api-v2.png

WICHTIG◄ Die Option Ist Liste von veranlasst nicht etwa, dass für alle Elemente einer Liste im Eingabewert "Typumwandlungen" oder "Abrufe von Aufzählungen" ausgeführt werden (s. "FALSCH" unten). In Verbindung mit dem Sammle Werte-Wertauflöser kann der Eingabeobjekt (Typsicher)-Wertauflöser allerdings auch für diesen Zweck genutzt werden.

Das Bild rechts zeigt, wie aus einer Liste von IDs von Benutzerkonten eine Liste der betreffenden Benutzer(-konten) gewonnen werden kann.


FALSCH:

images/download/attachments/200673324/image-2025-2-13_15-53-37-version-1-modificationdate-1739458416712-api-v2.png

Diese "Fehlkonfiguration" prüft effektiv, ob die Variable entityIds eine Liste von Benutzern enthält. Tatsächlich ist diese als Liste von Long-Werten definiert (s. a. Typhinweis Long[]am unteren Rand der Wertauflöserkette. Der Eingabeobjekt (Typsicher)-Wertauflöser wird daher immer nur $null zurückgeben.

RICHTIG:

images/download/attachments/200673324/image-2025-2-13_15-55-3-version-1-modificationdate-1739458502890-api-v2.png

ANMERKUNGSammle Werte ignoriert $null-Werte. Falls nicht zu allen in der Variable entityIds aufgelisteten IDs wirklich Benutzer existieren, enthält der Rückgabewert weniger Elemente als die Variable und nicht etwa $null-Werte anstelle der betreffenden Einträge.

Beispiele

Beispiel: Typumwandlung in simple Werte

Über das für jede Entität in Lobster Data Platform / Orchestration automatisch registrierte "Erstelldatum" im Feld created soll eine einfache Statistik für einen bestimmten Entitätstyp (hier: "ITEM") erstellt werden, die die Anzahl aller vorhandenen Entitäten des Typs ermittelt und die Dauer der Zeitspanne gegenüberstellt, in der diese erstellt wurden.

Laufzeitbeispiel:

Eine Hinweis anzeigen (Popup)-Ereignisaktion informiert (z. B. immer dann, wenn ein entsprechend befugter Benutzer ein neues "ITEM" erstellt) über den aktuellen Stand der Statistik für diesen Entitätstyp.

images/download/attachments/200673324/image-2025-2-13_16-6-38-version-1-modificationdate-1739459198148-api-v2.png

Konfiguration:

Die "Rohdaten" für die Statistik können durch eine Tupel-Suche gewonnen werden, die sinngemäß das folgende SQL-Statement abbildet:

SELECT COUNT(*) AS COUNT_items, MIN(created) as MIN_created, MAX(created) AS MAX_created FROM items [WHERE ...]

Der Rückgabewert ist eine einzige "Zeile" bzw. in einer geeignet parametrierten Suche (Ereignisaktion) ein Client-Objekt mit den Feldern COUNT_items (Long), MIN_created (Timestamp) und MAX_created (Timestamp).

Für die Angabe der Zeitspanne zwischen dem Erstelldatum der ältesten und der jüngsten ITEM-Entität, die hier nicht näher bezeichneten Suchkriterien erfüllen, ist eine einfache Differenzberechnung notwendig.

Die Berechnung soll ausgehend von den Felder für die Projektionen MIN_created und MAX_created im Egebnis der Tupel-Suche durch einen Berechne Wert-Wertauflöser erfolgen.

Damit der Datentyp verrechnet werden kann, muss er zuvor in einen numerischen Datentyp umgewandelt werden. Das Bild zeigt, wie in der Definition für die Variable EARLIEST der Timestamp-Wert aus dem Feld MIN_created über den Eingabeobjekt (Typsicher)-Wertauflöser in einen Long-Wert umgewandelt wird.

Entsprechend verfährt man, um der Variablen LATEST den Long-Wert zum Timestamp aus dem Feld MAX_created zuzuweisen.

Die Long-Werte geben den Datumswert in Millisekunden seit dem 01.01.1970 (UTC) an, sodass die Zeiteinheit für die Differenz noch von Millisekunden (ms) in die Zieleinheit Tage (D) umgerechnet und auf ganze Tage gerundet werden muss. Details zur Umrechnung s. Berechne Wert).

images/download/attachments/200673324/image-2025-2-13_16-4-2-version-1-modificationdate-1739459041679-api-v2.png

Beispiel: Nachschlagen eines Aufzählungswerts per Textschlüssel

In einem Bestellformular sollen Benutzer einen "Promotion Code" als Freitext eingeben können, um besondere Konditionen zu erhalten:

images/download/attachments/200673324/image-2025-2-13_16-23-30-version-1-modificationdate-1739460209850-api-v2.png

In Lobster Data Platform / Orchestration ist eine Liste von gültigen Promotion Codes als Dynamische Aufzählung "Promotion code" (PROMOCODE) hinterlegt (s. Screenshot rechts) .

images/download/attachments/200673324/image-2025-2-13_16-15-9-version-1-modificationdate-1739459709022-api-v2.png

images/download/attachments/200673324/image-2025-2-13_16-33-8-version-1-modificationdate-1739460788046-api-v2.png

  • Im Kopfbereich der Erfassungsmaske für Bestelllungen öffnet ein Klick auf den Button "Promotion code" die Eingabeaufforderung (s. o.).

  • Stimmt der eingegebene Code mit einem der internen Namen (s. "Name" in der Liste rechts oben) überein, dann soll der entsprechende Aufzählungswert im pluralen Freie-Aufzählungsattribut "Order Options" hinzugefügt werden, das die Erfassungsmaske als schreibgeschützte Multi-Combobox anzeigt.

  • Ist der Code ungültig, soll der Benutzer durch eine Fehlermeldung informiert werden.

ANMERKUNG◄ Man könnte den Workflow vereinfachen, indem der Benutzer direkten Zugriff auf die Multi-Combobox für die "Order Options" erhält. Allerdings würden dem Benutzer dann alle legitimen "Promotion codes" zur Auswahl im Dropdown angeboten. Diese sollen aber naturgemäß ausschließlich über dedizierte Marketing-Kanäle und selektiv bekannt gemacht werden.

Konfiguration:

Der Button "Promotion code" löst ein Eigenes Aktionsevent (XF_CHECK_PROMOCODE) aus, dem die (volatilen) Daten der Bestellung als Eingabewert mitgegeben werden.

Auf dieses Auslösende Ereignis reagiert die rechts abgebildete Ereignisbehandlung. Sofern die Typprüfung in der Prüfenden Regel (nicht im Bild) den Eingabewert als "Bestellung" anerkennt, werden die folgenden Aktionen ausgeführt:

  • Die Eingabeaufforderung und der Abgleich der Eingabe mit den über die benutzerdefinierte Dynamischen Aufzählung "Promotion Code" (PROMOCODE) legitimierten Codes kann über eine Verkettung von Wertauflösern direkt in der Objekt-Feld-Regel einer Wenn Dann Sonst-Ereignisaktion erledigt werden:

    • Der Benutzereingabe-Wertauflöser definiert die Eingabeaufforderung und liefert als Rückgabewert die Eingabe des Benutzers.

    • Der Eingabeobjekt (Typsicher)-Wertauflöser versucht die Eingabe des Benutzers in einen Wert der Dynamischen Aufzählung "Promotion code" umzuwandeln. Taucht die Eingabe nicht als interner "Name" in dieser Aufzählung auf, lautet der Rückgabewert $null. Anderenfalls wird der Aufzählungswert (vom Typ PROMOCODE) zurückgegeben.

    • Der verkettete Wert als Variable speichern-Wertauflöser "speichert" das Ergebnis der Typumwandlung für die Zuweisung (im Erfolgsfall) ab.

  • Bestätigt der Eingabeobjekt (Typsicher)-Wertauflöser die Eingabe als "Promotion code"-Aufzählungswert, dann wird der Wert der Variablen promoCode durch die Setze Wert-Ereignisaktion einem neu hinzugefügten Listenwert (nicht im Bild) des Freie-Aufzählungsattributs "Order options" in der Bestellung übertragen.

  • Verweist die Eingabe nicht auf einen legitimen "Promotion code", dann wird per Abbrechen eine Warnung mit einem lokalisierbaren Fehlertext (error/INVALID_PROMOCODE) ausgelöst.

images/download/attachments/200673324/image-2025-2-13_16-19-18-version-1-modificationdate-1739459957681-api-v2.png

Nachschlagen einer Entität per ID

WICHTIG◄ Diese Funktionalität wird in einem Client Workflow nicht unterstützt!

Eine Ereignisbehandlung soll dem angemeldeten Benutzer durch eine Serie von Benachrichtigungen Informationen über alle Firmenkonten bereitstellen, in deren Kontext er sich bei Lobster Data Platform / Orchestration anmelden kann.

Die Funktion soll Benutzern, deren Rolle keinen direkten Zugriff auf die "Firmenüberischt" (s. Firmen anlegen und verwalten) gewährt, das Ausführen von Tests erleichtern, die das spezifische Laufzeitverhalten von Lobster Data Platform / Orchestration im Kontext unterschiedlicher Firmen betreffen.

Das Laufzeitbeispiel rechts zeigt, wie die Ausgabe aussehen soll:

  • Im "Titel" der Benachrichtigung soll der Firmen-Metatyp der Firma erscheinen. Im Beispiel ist das entweder "COMPANY" oder "GROUP".

  • Die "Meldung" unterhalb soll folgende Informationen enthalten:

    • die ID des betreffenden Firmenkontos

    • ausgewählte Adressdaten der Firma ("Name", "Stadt", "Land")

    • die Standard-Zeitzone (optional)

    • Alle Firmentypen (s. Firmentyp), die dem Firmenkonto zugeordnet sind

Die besondere Herausforderung für die Beschaffung dieser Daten besteht darin, dass das in einer Sitzung verwendete Benutzerkonto (Benutzer der Session) im Feld "Firmen" (companies) zwar auf diese Firmenkonten verweist, deren Detailsdaten aber nicht Datenmodell für Benutzer eingebettet sind. Sie müssen für die gewünschte Ausgabe also ausdrücklich vom Lobster Data Platform / Orchestration-Server abgerufen werden.

Laufzeitbeispiel:

images/download/attachments/200673324/image-2025-2-14_8-2-22-version-1-modificationdate-1739516542001-api-v2.png

Konfiguration:

Eine Ereignisbehandlung, die über ein eigenes eingerichtetes Eigenes Aktionsevent ausgelöst wird, wird wie rechts abgebildet konfiguriert:

  • Die Für jeden Eintrag wiederholen (Schleife) iteriert über die Liste der relevanten Firmenkonten-IDs aus dem Konto des angemeldeten Benutzers. Dieser wird über den Benutzer der Session ermittelt.

    ANMERKUNG◄ Der verkettete Eingabeobjekt (Typsicher)-Wertauflöser wird hier nur eingesetzt, damit im folgenden Objekt-Feld-Wertauflöser das Feld "Firmen" (companies) per Dropdown ausgewählt werden kann, was die übergeordnete Klasse "Schnittstelle > Benutzer" nicht der Fall wäre. Solange nicht ein Gastbenutzer die Ereignisbehandlung auslöst, verbessert dieser Eingabeobjekt (Typsicher)-Wertauflöser effektiv nur die Transparenz und den Bedienkomfort bei der Konfiguration.

  • Den Zugriff auf Firmen ausgehend von den im Feld companies aufgelisteten Long-Werten für deren IDs erreichen wir hier im Inneren der Schleife über den Eingabeobjekt (Typsicher)-Wertauflöser mit dem Typ "Firmenkonto" im Parameter Objekt Resolver einer Ausführen mit-Ereignisaktion. In deren Aktionsblock gilt das jeweilige Firmenkonto als Bezugsobjekt, sodass in der Hinweis anzeigen (Popup)-Ereignisaktion für die Parameter Titel und Meldung Details dieses Firmenkontos (und seiner Adresse) "gelesen" werden können.

    ANMERKUNG◄ Die Meldung wird hier über einen Vorlage-Wertauflöser definiert, über den das gewünschte Ausgabeformat effizienter dargestellt werden kann als über ein Aggregat aus Wertauflösern der Kategorie Textverarbeitung (Wertauflöser), mit denen zweifellos ein vergleichbares Ergebnis erzielt werden könnte.

images/download/attachments/200673324/image-2025-2-14_8-3-56-version-1-modificationdate-1739516635753-api-v2.png

images/download/attachments/200673324/image-2025-2-14_8-5-23-version-1-modificationdate-1739516722612-api-v2.png

Typprüfung: Prüfen der Klassenzugehörigkeit eines Datenobjekts

In einer Ereignisbehandlung soll der Benutzer einen oder mehrere Zahlwerte (ggf. komma-separiert) eingeben können, die für eine Suche (Ereignisaktion) als Positivliste verwendet werden sollen. In einem typischen Anwendungsfall sollen z. B. Bestellungen über Artikelnummern der den enthaltenen Bestellpositionen referenzierten Produkte ermittelt werden.

Auch wenn Produkte in Lobster Data Platform / Orchestration technisch jederzeit über alphanumerische Artikelnummern identifiziert werden könnten, soll im Anwendungsfall die Suche (Ereignisaktion) ausdrücklich nur dann ausgeführt werden, wenn der Benutzer ausschließlich numerische Werte eingegeben hat.

Laufzeitbeispiel:

images/download/attachments/200673324/image-2025-2-14_8-55-36-version-1-modificationdate-1739519735688-api-v2.png

Konfiguration:

Im Kopf einer Ausführen mit-Ereignisaktion wird der Benutzereingabe-Wertauflöser verwendet, um dem Benutzer eine Eingabeaufforderung für eine eine komma-separierte Liste von EAN-Codes (als "Artikelnummern") anzuzeigen, die wie folgt verarbeitet wird:

  • Die Benutzereingabe-Wertauflöser wird für einen Teilstring innerhalb eines Textverkettung-Wertauflösers eingesetzt, der die eingegebene Zeichenfolge als Nutzlast einer Liste in JSON-Notation formatiert. Für die Eingabe im Laufzeitbeispiel oben wird der folgende Text an den nachfolgenden Objekt aus JSON erzeugen-Wertauflöser weitergegeben: [4005556270415,4105250028005]

  • Der Objekt aus JSON erzeugen-Wertauflöser erzeugt aus der aufbereiteten Zeichenfolge das "Objekt" für den folgenden Aktionsblock. Im Idealfall handelt es sich dabei um eine Liste mit einem oder mehreren Werte, die numerisch sein sollten.

Die durch den Benutzereingabe -Wertauflöser erzeugte Eingabeaufforderung sieht keinerlei Eingaberestriktionen oder Validierungen für den eingegebenen Text vor. Insofern soll bevor die Suche ausgeführt wird, sichergestellt werden, dass das über den JSON-Text erzeugte Objekt den Anforderungen entspricht:

  • Sofern der Benutzer z. B. durch die Eingabe von Sonderzeichen (etwa ]) die JSON-Notation unbrauchbar macht, wird kein Objekt erzeugt. Im Aktionsblock steht dann kein Bezugsobjekt (bzw. der Wert $null) zur Verfügung.

  • Falls dies der Fall ist, oder der Benutzer abgesehen von den trennenden Kommas nicht-numerische Zeichen eingibt, soll die Suche (Ereignisaktion) im Aktionsblock nicht ausgeführt werden. Dies ermöglicht der Eingabeobjekt (Typsicher)-Wertauflöser, der hier verwendet wird, um zu prüfen, ob das Datenobjekt im Eingabewert eine Liste von Zahlenwerten ist. Als Typ wird dazu "Number" java.lang.Number ausgewählt, also eine übergeordnete Klasse für konkrete Datentypen wie "Long" oder "Double".

Die Wenn Dann Sonst-Ereignisaktion im Aktionsblock stellt über eine Objekt-Feld-Regel mit dem Ist leer-Vergleichstyp sicher, dass die Suchaktion ein Objekt vorhanden ist, bei dem es sich dem Typ nach um eine Liste von numerischen Werten handelt.

ANMERKUNG◄ Im "Sonst"-Zweig könnte über das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg -Symbol eine Fehlermeldung bzw. eine Abbrechen konfiguriert werden, um für den Benutzer transparent zu machen, dass keine Suche ausgeführt wird.

images/download/attachments/200673324/image-2025-2-14_8-46-40-version-1-modificationdate-1739519200011-api-v2.png

In der vorliegenden Konfiguration könnte anstelle der Objekt-Feld-Regel im Aktionsblock auch eine Typprüfung mit den Parametern aus dem Eingabeobjekt (Typsicher)-Wertauflöser verwendet werden:

Bisherige Konfiguration:

images/download/attachments/200673324/image-2025-2-14_8-48-33-version-1-modificationdate-1739519312354-api-v2.png

Alternative Konfiguration:

images/download/attachments/200673324/image-2025-2-14_8-50-28-version-1-modificationdate-1739519427417-api-v2.png

HINWEIS◄ Die Typprüfung löst die Aufgabe gleichwertig und sogar eleganter. Dies dürfte für die meisten Anwendungsfälle des Eingabeobjekt (Typsicher)-Wertauflösers gelten, wenn dieser zum Prüfen der Objektklasse eingesetzt wird.

Da es sich bei der Typprüfung um eine Regel (s. Regeln und Werte) und nicht im einen Wertauflöser handelt, bietet der Eingabeobjekt (Typsicher)-Wertauflöser Vorteile, wenn der Rückgabewert $null so genutzt werden kann, dass im gegebenen Kontext konstruktiv keine Wenn Dann Sonst-Ereignisaktion zur Fallunterscheidung nötig ist.

  • Das wäre etwa dann der Fall, wenn mit dem Rückgabewert ein Eigenes Aktionsevent- ausgelöst wird, das die auszuführende Typprüfung ohnehin ausführt.

  • Oder der Eingabeobjekt (Typsicher) wird mit einem Standardwert-Wertauflöser verkettet, um den Fall "abzufangen", dass kein "passendes" Objekt vorliegt.

Im vorliegenden Anwendungsfall könnte z. B. eine Liste mit einer "Dummy-Artikelnummer" (s. u.) an die Suche (Ereignisaktion) weitergegeben werden, wenn die Liste aus der Eingabeaufforderung nicht-numerische Werte enthält:

Wenn in Verbindung mit dem Standardwert-Wertauflöser die Suche (Ereignisaktion) immer ausgeführt werden soll, kann die Fallunterscheidung per Wenn Dann Sonst-Ereignisaktion wegfallen. Der Eingabeobjekt (Typsicher)-Wertauflöser kann dann per Verkettung direkt im Kopf der Ausführen mit-Ereignisaktion verwendet werden, wie rechts abgebildet.

Falls der Eingabeobjekt (Typsicher)-Wertauflöser feststellt, dass das via JSON-Notation erzeugte Objekt nicht ausschließlich Number-Werte enthält, soll der verkettete Standardwert-Wertauflöser eine Liste erzeugen, die genau einen Wert enthält - hier: die Dummy-Nummer 9999999999999.

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Falls als Eingabewert für den Eingabeobjekt (Typsicher)-Wertauflöser eine leere Liste ([]) vorliegt, wird diese als "typkonform" behandelt, also nicht durch den Rückgabewert $null ersetzt, sondern als leere Liste ([]) zurückgegeben. Die leere Liste besteht den Test, weil sie keine Elemente enthält, die nicht dem in der Konfiguration ausgewählten Typ entsprechen.

Der Standardwert-Wertauflöser greift in diesem Sonderfall nicht ein, weil die leere Liste ([]) nicht als $null gewertet wird. Im Kontext unseres Beispiels tritt eine leere Liste ([]) auch dann auf, wenn der Benutzer den Button "Abbrechen" in der Eingabeaufforderung betätigt.

images/download/attachments/200673324/image-2025-2-14_8-52-50-version-1-modificationdate-1739519569730-api-v2.png