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.
Tooltip
Verwendung: Abhängig von der Kombination aus Eingabewert-Typ und dem in der Konfiguration ausgewählten Typ erfüllt der Wertauflöser einen der folgenden Zwecke:
Typumwandlung: Definiert der Typ einen simplen Wert, wird versucht den Eingabewert in diesen Typ umzuwandeln.
Aufzählungswert nachschlagen: Definiert der Typ eine statische oder Dynamische Aufzählung und der Eingabewert einen String, dann wird der Eingabewert als Schlüssel zum Nachschlagen eines Aufzählungswerts über dessen name verwendet.
Entität nachschlagen: Definiert der Typ einen konkreten Entitätstyp und der Eingabewert einen Long-Wert, dann wird der Eingabewert als Schlüssel zum Nachschlagen einer Entität über deren id verwendet.
Typprüfung: Trifft keiner der genannten Fälle zu, wird der Eingabewert analog zur Typprüfung gegen den angegebenen Typ geprüft. im Erfolgsfall wird der Eingabewert zurückgegeben.
Schlägt die Prüfung, Typumwandlung oder das Nachschlagen fehl, wird $null zurückgegeben.
Parameter:
Der Parameter Typ definiert die Klasse gegen die der Eingabewert geprüft wird bzw. den Ziel-Typ für eine Typumwandlung oder das Abrufen von Aufzählungswerten oder Entitäten. Ohne Auswahl lautet der Rückgabewert immer $null.
Die Option Ist Liste von definiert für eine Prüfung, dass der Eingabewert eine Liste sein muss, die keinen Eintrag enthält, der nicht dem ausgewählten Typ entspricht. Eine Liste ohne Einträge gilt dabei als "typneutral", besteht also jede Prüfung mit der Option Ist Liste von.
Hinweis: Die Nachschlage- und Typumwandlungsfunktionen greifen nur für Einzelwerte als Eingabewert und nicht für alle Einträge einer als Eingabewert bereitgestellten Liste. Bei Bedarf hilft der Sammle Werte-Wertauflöser.
Siehe auch: Typprüfung, Variable
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 ►WICHTIG◄ Funktioniert 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.
ACHTUNG
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.
|
|
FALSCH:
|
RICHTIG:
|
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.
|
|
►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:
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:
►ANMERKUNG◄ Sammle 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.
|
|
Konfiguration:
Die "Rohdaten" für die Statistik können durch eine Tupel-Suche gewonnen werden, die sinngemäß das folgende SQL-Statement abbildet:
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).
|
|
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:
In Lobster Data Platform / Orchestration ist eine Liste von gültigen Promotion Codes als Dynamische Aufzählung "Promotion code" (PROMOCODE) hinterlegt (s. Screenshot rechts) .
|
|
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.
|
|
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:
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:
|
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.
|
|
|
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:
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
-Symbol eine Fehlermeldung bzw. eine Abbrechen konfiguriert werden, um für den Benutzer transparent zu machen, dass keine Suche ausgeführt wird.
|
|
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:
|
Alternative Konfiguration:
|
►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.
ACHTUNG
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.
|
|