Prüfe Client-Objektstruktur (Wertauflöser)

Wertauflöser - Kurzfassung

Zweck: Verknüpft ein als Eingabewert vorliegendes anonymes Datenobjekt ("Client-Objekt") oder einer Liste von solchen Objekten mit einer definierten Zielstruktur zu einem der folgenden Zwecke:

Keine Prüfung

Eingabewert
wird unverändert
"durchgereicht"

Die Zielstruktur wird innerhalb der Konfiguration für den Rückgabewert angenommen.

Nur Prüfen

Abweichungen von der Zielstruktur werden als Feststellungen protokolliert.

Typänderungen
aktualisieren

Eingabewert
wird ggf. "angepasst"

Zusätzlich zur Prüfung (inkl. Feststellungen) finden abhängig vom Feld-Datentyp in der Zielstruktur bestimmte Typumwandlungen statt (z. B. String → Dynamischer Aufzählungswert)

Vereinfachen

Eingabewert
wird ggf. "vereinfacht"

Zusätzlich zur Prüfung (inkl. Feststellungen) finden für bestimmte Datentypen "Vereinfachungen" statt (z. B. Dynamischer Aufzählungswert → String).
Außerdem entfallen in der Zielstruktur "unerwartete" Daten im Rückgabewert weg. Dieses "Vereinfachen" ist z. B. sinnvoll für Antworten einer Rest API.

Siehe auch: Eigene Client-Objektstruktur, Prüfe Client-Objektstruktur (Regel)

images/download/attachments/159866121/image-2024-5-22_10-46-0-version-1-modificationdate-1716367560258-api-v2.png

Der Prüfe Client-Objektstruktur (Wertauflöser)-Wertauflöser verknüpft ein als Eingabewert vorliegendes anonymes Datenobjekt ("Client-Objekt") oder einer Liste von solchen Objekten mit einer als Eigene Client-Objektstruktur oder eigens im Kontext des Wertauflösers definierten Client-Objektstruktur.

Der ausgewählte Modus definiert die Auswirkungen dieser Verknüpfung, sodass der Wertauflöser für unterschiedliche Zwecke eingesetzt werden kann:

Effekte

Modus

Einsatzzweck

Rückgabewert

Feststellungen

Keine Prüfung

Nur Prüfung

Typänderungen
aktualisieren

Vereinfachen

Konfiguration unterstützen
(z. B. Objekt-Feld-Wertauflöser) anhand der Client-Objektstruktur

Eingabewert
wird unverändert "durchgereicht"

keine

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

Eingabewert prüfen und Abweichungen von der Client-Objektstruktur als Feststellungen sammeln.

alle Feststellungstypen

MISSING
WRONG_TYPE
INVALID_CONTENT
UNEXPECTED_CONTENT


images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

Automatische Typkonvertierung
zu den in der Client-Objektstruktur angegebenen Typen (soweit möglich).

Eingabewert wird ggf. "angepasst"

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg

Vereinfachen von bestimmten Datentypen und Entfernen von allen nicht in der Client-Objektstruktur enthaltenen Inhalten.

Eingabewert wird ggf. "vereinfacht"

alle Feststellungstypen außer UNEXPECTED_CONTENT(weil: unerwartete Inhalte entfallen im Rückgabewert)

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

Die einzelnen Modi unterscheiden sich also einerseits darin, ob und ggf. wie sie den Rückgabewert gegenüber dem Eingabewert verändern.

Andererseits unterscheiden sie sich darin, ob und ggf. welche Typen von Feststellungen aus einer Prüfung des Eingabewerts zu erwarten sind.

Was sind "Feststellungen"?


Wenn ein "Client-Objekt" gegen eine definierte Client-Objektstruktur geprüft wird, werden Abweichungen als Feststellungen in einer Liste von Datenobjekten des Typs "Client-Objektstruktur Feststellung" (ClientStructureFinding) protokolliert, die in folgenden Feldern Informationen enthalten kann:

  • Das Feld input gibt die ausgewerteten Eingangsdaten für die ausgeführte Prüfung (soweit anwendbar) wieder.

  • Das Feld loc definiert welche Position (en.: location) der Objektstruktur geprüft wurde.

  • Das Feld msg (en.: message) gibt das Prüfergebnis in englischem Klartext wieder.

  • Das Feld type klassifiziert einen "Client-Objektstruktur Feststellungstyp" aus der folgenden Aufzählung:

    • MISSING → Für ein nicht-optional definiertes Feld der Objektstruktur existieren keine Angaben.

    • WRONG_TYPE → Der im Eingabewert vorgefundene Datentyp entspricht nicht dem per Objektstruktur deklarierten.

    • INVALID_CONTENT → Der im Eingabewert vorgefundene Wert hat eine in der Objektstuktur definierte Validierung nicht bestanden.

    • UNEXPECTED_CONTENT → Der Eingabewert enthält ein Feld, das in der Objektstruktur nicht enthalten ist.

  • Das Feld validValues gibt im Kontext einer WRONG_TYPE-Feststellung ggf. Hinweise alle im Kontext einer Aufzählung alle als valide akzeptierten Werte wieder.


HINWEIS◄ Das String-Abbild für die Klasse "Client-Objektstruktur Feststellung" (ClientStructureFinding) erzeugt unter Berücksichtigung der hier aufgelisteten Felder einen informativen Text, sodass das String-Abbild einer Liste von "Feststellungen" z. B. so aussehen kann:

[MISSING in [body, active]: missing mandatory value, 
WRONG_TYPE in [body, salutation]: the value is not of type Salutation, valid values are [COMPANY, MR, MS],
 UNEXPECTED_CONTENT in [body, nickname]: unexpected property found]

Der Parameter Feststellungen im Prüfe Client-Objektstruktur (Wertauflöser)-Wertauflöser definiert wohin die Liste der "Feststellungen" gespeichert werden soll.

HINWEIS◄ Typischerweise verwendet man eine Variable zum Speichern der Liste. Allerdings kann man z. B. auch ein Objekt-Feld als Ziel angeben, wenn ein geeignetes Zielobjekt existiert oder das Prüfergebnis über den Dateireferenz-Wertauflöser als Datei abspeichern.

Details je Modus

Modus "Keine Prüfung"

Der Modus "Keine Prüfung" (SKIP_VERIFY) dient ausschließlich dazu, die Konfiguration im Kontext des Wertauflösers zu unterstützen:

  • Das als Eingabewert vorliegende Objekt wird ungeprüft und unverändert als Rückgabewert bereitgestellt.

  • Das als Client-Objektstruktur ausgewählte oder ad hoc definierte Datenmodell wird für diesen Rückgabewert deklariert, sodass in dessen Kontext z. B. in einem Objekt-Feld-Wertauflöser die entsprechenden Felder per Dropdown auswählbar sind.

  • Da keine Prüfung stattfinden, sind auch keine Prüfungsergebnisse zu erwarten. Der Parameter Feststellungen wird für diesen Modus deshalb ausgeblendet.
    HINWEIS◄ Wenn keine Prüfung stattfindet ist auch die Option Optional unerheblich, die jedem anderen Modus eine Feststellung erzeugen würde, wenn "Kein Wert" ($null) als Eingabewert vorliegt.

Beispiel:

Im Kontext einer Ereignisbehandlung wird, z. B. aus den Formulardaten eines Portals, ein anonymes Datenobjekt ("Client-Objekt") erwartet, das eventuell aber nicht notwendigerweise über die Felder "username" (String) und "active" (Boolean) verfügt.

Für eine bestimmte Sequenz von Ereignisaktionen soll jedenfalls angenommen werden, dass das Objekt über diese beiden Felder verfügen könnte und keine weiteren Felder relevant sind.

Der Screenshot rechts zeigt eine Ausführen mit-Ereignisaktion, in deren Kontext die betreffenden Ereignisaktionen ausgeführt werden sollen:

  • Im Parameter Objekt-Wertauflöser wird der Prüfe Client-Objektstruktur (Wertauflöser) eingesetzt, um exklusiv für den folgenden Aktionsblock eine bestimmte Objektstruktur (als "Neue Client-Objektstruktur" mit dem Namen "userAccount" und den Feldern username und active) zu deklarieren:

    • Mit dem Modus "Keine Prüfung" gilt der Eingabewert (hier: das äußere Bezugsobjekt) unverändert als temporäres Bezugsobjekt für den Aktionsblock.

    • Als Datentyp erscheint in der Konfiguration daraufhin der willkürlich gewählte Name "userAccount" in Verbindung mit dem Hinweis, dass es sich um eine "Client-Objektstruktur" handelt.

  • Im Aktionsblock, der im Beispiel nur eine Hinweis anzeigen-Ereignisaktion enthält, bietet eine Objekt-Feld-Wertauflöser (s. Titel) im Dropdown die beiden deklarierten Felder zur Auswahl an, die ohne Vorgabe einer definierten Objektstruktur als Freitext eingegeben werden müssten. Die Gefahr eines Tippfehlers kann dadurch effektiv minimiert werden. Und die je Feld "erwarteten" Datentypen gelten auch für weitere Konfigurationen als Deklaration.


Wenn für die Meldung (s. unten) abhängig vom Boolean-Wert im active-Feld ein spezifischer Text zugewiesen werden soll, schlägt eine Objekt-Feld-Regel mit diesem Feld als Prüfwert (links) anhand der Deklaration in der Client-Objektstruktur für den Vergleichswert (rechts) automatisch den Boolescher Wert-Wertauflöser vor.

images/download/attachments/159866121/image-2024-6-3_11-40-49-version-1-modificationdate-1717407649108-api-v2.png


images/download/attachments/159866121/image-2024-6-3_11-44-16-version-1-modificationdate-1717407855576-api-v2.png

Modus "Nur Prüfung"

Der Modus "Nur Prüfung" (VERIFY_ONLY) validiert den Eingabewert gegen die definierte Client-Objektstruktur und protokolliert die Feststellungen, sofern die Wert-Konfiguration auf ein geeignetes Ziel verweist.

Die Unterstützung für den Kontext der Konfiguration (s. Modus "Keine Prüfung") ist ebenfalls gewährleistet.

Die Validierung prüft folgende Aspekte:

  1. Wie "Kein Wert" ($null) als Eingabewert bewertet wird, entscheidet die Option Optional:

    • Ist die Option Optional abgewählt (Standard), dann ergibt "Kein Wert" ($null) als Eingabewert folgende Feststellung:

      • MISSING in [body]: missing mandatory value

        • Die Referenz body verweist auf den Eingabewert als Ganzes, der - weil nicht "optional" - als "fehlend" beanstandet wird (→Feststellungstyp MISSING).

        • Weitere Prüfungen entfallen.

    • Ist die Option Optional ausgewählt, dann wird der Eingabewert als "optional" behandelt. Das Fehlen des Eingabewerts erzeugt dann keine Feststellung.

        • Weitere Prüfungen entfallen.

  2. Handelt es sich beim Eingabewert nicht um ein anonymes Objekt - also um einen simplen Wert oder ein Datenobjekt das eine Instanz einer konkreten Klasse ist - dann lautet die einzige Feststellung immer so:

      • WRONG_TYPE in [body]: value is not an anonymous object

        • Die Referenz body verweist auf den Eingabewert als Ganzes, dessen Typ ungeeignet ist (→Feststellungstyp WRONG_TYPE).

        • Liegt dieser Fall vor, dann werden keine weiteren Prüfungen durchgeführt.

  3. Handelt es sich beim Eingabewert um ein anonymes Objekt, dann werden dessen Felder wie folgt ausgewertet:

    • Enthält der Eingabewert ein unerwartetes Feld, das in der Client-Objektstruktur nicht enthalten ist, dann wird für dieses Feld folgende Feststellung erzeugt:

      • UNEXPECTED_CONTENT in [body, statusCode]: unexpected property found

        • Die Feststellung verweist hier auf ein unmittelbares Feld statusCode des Objekts im Eingabewerts, das als unerwarteter Inhalt (→ Feststellungstyp UNEXPECTED_CONTENT) beanstandet wird, weil es in der Client-Objektstruktur fehlt.
          HINWEIS◄ Der Feststellungstyp UNEXPECTED_CONTENT tritt häufig dann auf, wenn ein Tippfehler in einem Feldnamen vorliegt, wofür bereits ein Fehler in der Groß-/Kleinschreibung ausreicht.

    • Fehlen im Eingabewert Daten für ein Feld, das die Client-Objektstruktur als Pflichtfeld (nicht "Optional") deklariert, wird eine Feststellung wie die folgende erzeugt:

      • MISSING in [body, active]: missing mandatory value

        • Die Feststellung vermisst Angaben für ein unmittelbares Feld active des Objekts im Eingabewert (→ Feststellungstyp MISSING), das in der Client-Objektstruktur als nicht-optional definiert ist.
          WICHTIG◄ Mit einer expliziten Zuweisung von $null als Wert (z. B. per JSON-Struktur { "active" : null }) gilt ein Pflichtfeld ebenfalls als MISSING.

    • Handelt es sich beim Wert für ein erwartetes Feld um einen unerwarteten Datentyp, dann wird dieser wie folgt als unpassend (→ Feststellungstyp WRONG_TYPE) beanstandet:

      • WRONG_TYPE in [body, active]: the value is not of type Boolean

        • Das active-Feld in der Client-Objektstruktur ist hier offenbar als Boolean deklariert. Übergeben wurde im Test der Text "false" (in JSON: { "active" : "false" } wo { "active" : false } korrekt wäre.

      • WRONG_TYPE in [body, salutation]: the value is not of type Salutation, valid values are [COMPANY, MR, MS]

        • Diese Beanstandung betrifft das salutation-Feld, das die Client-Objektstruktur mit der Dynamischen Aufzählung Anrede (Salutation) verknüpft. Der Eingabewert im Test (in JSON: { "salutation" : "TBD" }) liefert einen String-Wert, der keinem Namen für einen Wert in dieser Aufzählung entspricht. Die listet hier alle zulässigen Werte (valid values) auf.

    • Beinhaltet der Eingabewert einen dem Datentyp nach geeigneten Wert für ein Feld, für das der Client-Objektstruktur Validierer vorsieht, werden diese sämtlich ausgewertet und ggf. das Nicht-Bestehen beanstandet (→ Feststellungtyp INVALID_CONTENT):

      • INVALID_CONTENT in [body, username]: >=5 characters required

        • Offensichtlich ist die Validierung für das username-Feld gescheitert, weil der zugewiesene Textwert nicht genügend Zeichen enthielt.

        • Die spezifische "Fehlermeldung" (>=5 characters required) ist ein optionaler Bestandteil der Validierer-Konfiguration in der Client-Objektstruktur.

      • INVALID_CONTENT in [body, username]: user exists

        • Hier wurde offenbar geprüft, ob der im username-Feld des Eingabewerts angegebene Text bereits zu Identifikation eines Benutzerkontos (s. Benutzer) beansprucht wird.
          HINWEIS◄ Falls der Eingabewert für den username weniger als 5 Zeichen umfasst und der betreffende Benutzername bereits in Verwendung ist, würden ggf. beide Feststellungen generiert.

Unabhängig davon ob/welche Feststellungen im Kontext der Validierung erzeugt wurden, wird im Modus "Nur Prüfung" der Eingabewert unverändert zurückgegeben,

Modus "Typänderungen aktualisieren"

Der Modus "Typänderungen aktualisieren" (UPDATE_CASTED_VALUES) führt die für den Modus "Nur Prüfung" beschriebene Validierung aus und protokolliert die beschriebenen Feststellungen, sofern die Wert-Konfiguration auf ein geeignetes Ziel verweist.

Zusätzlich werden aber die im Kontext Prüfung implizit vorgenommene Typumwandlungen (z. B. von String-Werten zu Dynamischen Aufzählungswerten mit dem adressierten "Namen") auch explizit auf den Rückgabewert abgebildet:

Erfolgreiche Typumwandlungen werden dabei nicht über Feststellungen dokumentiert.

Beispiel:

Eingabewert
(JSON für Objekt)

Rückgabewert
(JSON für Objekt)

Feststellungen (ausgegeben als Liste von Strings)
(in Anlehnung an die Beispiele für Modus "Nur Prüfung")

{ "active": "true",
"salutation": "MR",
"type": "DROID",
"username": "R2D2",
}
{ "active": "true", 
"salutation": { "class": "de.lobster.scm.denum.DynamicEnumDto",
"enumName": "de.lobster.scm.base.address.Salutation",
"name": "MR" },
"type": "DROID",
"username": "R2D2"
}
["INVALID_CONTENT in [body, username]: >=5 characters required",
"WRONG_TYPE in [body, active]: the value is not of type Boolean",
"UNEXPECTED_CONTENT in [body, type]: unexpected property found"]

WICHTIG◄ Die erfolgreiche Typumwandlung für das salutation-Feld (vom String "MR" zu einem existierenden Wert der Dynamischen Aufzählung für die Anrede) erzeugt keine Feststellung.

HINWEIS◄ Die Typumwandlung von einem String-Namen zu einem Dynamischen Aufzählungswert ist weit mehr als reine "Formsache". Nur nach einer erfolgreichen Umwandlung von Aufzählungswerten im Rückgabewert greift die volle Unterstützung für Dynamische Aufzählungswerte im Kontext des Client-Objekts im Rückgabewert. Sofern für die betreffende Aufzählung Konfigurationsmerkmale vorgesehen und gepflegt sind, kann auf diese im Kontext des angereicherten "Client-Objekts" im Rückgabewert zugegriffen werden.

Beispiel:

Der Eingabewert beinhaltet ein Feld origin mit der Zeichenfolge US. Die Client-Objektstruktur bezieht dieses Feld auf die Dynamische Aufzählung Land. Nach der Prüfung mit dem Modus "Typänderungen aktualisieren" unterstützt der Rückgabewert erweiterte Konfigurationsmerkmale:

Eingabewert
(JSON für Objekt)

Rückgabewert
(JSON für Objekt)

Konfiguration

{ "origin": "US",
"active": "true",
"salutation": "MR",
"username": "R2D2",
}
{ "origin": { "class": "de.lobster.scm.denum.DynamicEnumDto", 
"enumName": "de.lobster.scm.localization.Country",
"name": "US" },
"active": "true",
"salutation": { "class": "de.lobster.scm.denum.DynamicEnumDto",
"enumName": "de.lobster.scm.base.address.Salutation",
"name": "MR" },
"username": "R2D2" }

images/download/attachments/159866121/image-2024-6-3_12-37-37-version-1-modificationdate-1717411057053-api-v2.png

Konfiguration:

Im Kontext des per Typumwandlung "angereicherten" Client-Objekts im Rückgabewert aus dem Prüfe Client-Objektstruktur (Wertauflöser)-Wertauflöser können Konfigurationsmerkmale für das im Eingabewert per String "US" adressierte Land verwendet werden:

Im Screenshot rechts wird im Kontext des Rückgabewerts eine Hinweis anzeigen-Ereignisaktion ausgeführt:

  • Der Titel zeigt nur das username-Feld an, das im Eingabewert auch ohne Prüfung und Typumwandlung greifbar gewesen wäre.

  • In der Meldung wird hier auf den alpha-3-Code aus der Konfiguration für das Land zugegriffen, indem auf das Objekt-Feld staticConfiguration.alpha3Code zugegriffen wird.


HINWEIS◄ Die JSON-Darstellung für den Rückgabewert (s. oben) bildet das origin-Feld über die Transferobjekt-Klasse (DynamicEnumDto) ab, die nur die Felder enumName und name wiedergibt. Tatsächlich erlaubt der Wert im origin-Feld nach der Typumwandlung auch Zugriff auf die spezifischen Konfigurationsmerkmale für das im Eingabewert per String (US) adressierte Land. die im JSON für das generische "Transferobjekt" nicht sichtbar sind.


Laufzeitbeispiel:

images/download/attachments/159866121/image-2024-5-24_18-49-11-version-1-modificationdate-1716569351485-api-v2.png

ANMERKUNG◄ Neben den mehr oder weniger umfangreichen spezifischen Konfigurationsmerkmalen für eine bestimmte Dynamische Aufzählung können nach der Typumwandlung auch generische Felder für den Aufzählungswert verwendet werden. Im Beispiel könnte etwa der Pfad zu einer ggf. in der Aufzählung zugewiesenen Icon- oder Bilddatei für die Landesflagge nachgeschlagen werden, der im Feld configuration.iconUri zu finden ist.

Das entsprechende Icon/Bild kann zwar nicht in der Hinweis anzeigen-Ereignisaktion aber zum Beispiel neben anderen Details zum Land in einem Bild/Icon-Element in einem Portal erscheinen, das mit dem Rückgabewert als Formulardaten geöffnet wird:

images/download/attachments/159866121/image-2024-6-3_12-10-53-version-1-modificationdate-1717409453246-api-v2.png

Modus "Vereinfachen"

Der Modus "Vereinfachen" (SIMPLIFY) führt die für den Modus "Nur Prüfung" beschriebene Validierung aus und protokolliert die beschriebenen Feststellungen, sofern die Wert-Konfiguration auf ein geeignetes Ziel verweist.

Der Eingabewert wird dabei nach folgenden Regeln überarbeitet:

  • Felder im Eingabewert, die in der Client-Objekstruktur nicht enthalten sind, entfallen im Rückgabewert ohne dass eine Feststellung vom Typ UNEXPECTED_CONTENT erscheint.

  • Felder im Eingabewert, für die in der Prüfung ein unerwarteter Datentyp (laut Client-Objekstruktur) festgestellt wird, entfallen im Rückgabewert und es wird eine Feststellung vom Typ WRONG_TYPE erzeugt.

  • Felder im Eingabewert, die eine in der Client-Objektstruktur definierte Validierung nicht bestehen, erscheinen im Rückgabewert und es wird eine Feststellung vom Typ INVALID_CONTENT erzeugt.

  • Felder im Eingabewert, deren Datentyp laut Client-Objektstruktur eine Typumwandlung unterstützt, werden - soweit nötig - in den einfacheren Datentyp (z. B. String für einen Aufzählungswert) umgewandelt.

HINWEIS◄ Der Modus "Vereinfachen" ist z. B. sinnvoll für Antworten einer Rest API (s. Rest API Definition).

Beispiel:

Im Kontext einer Ausführen mit-Ereignisaktion soll ein Block von Ereignisaktionen mit einer für diesen Zweck definierten Client-Objektstruktur ( MailAddess) ausgeführt werden, die bestimmte Merkmale für die Adressierung von Briefpost (nachfolgend als "Anschrift" bezeichnet) festlegt.

Als Eingabewert für die Ausführen mit-Ereignisaktion dient ein Client-Objekt das Formulardaten aus einem Portal abbildet, in dem neben der konventionellen Anschrift noch viele weitere Merkmale (Telefonnummern, Kundennummern, usw.) eingegeben werden können.

Für den auszuführenden Aktionsblock interessieren nur die für die Anschrift relevanten Felder, die mit Hilfe des Prüfe Client-Objektstruktur (Wertauflöser)-Wertauflösers geprüft werden sollen:

  • Das temporäre Bezugsobjekt für den Aktionsblock der Ausführen mit-Ereignisaktion soll ausdrücklich nur die Felder aus dem Client-Objekt im Eingabewert wiedergeben, die für das MailAddress-Objekt definiert sind.

  • Einige Felder sind Pflichtfelder (salutation, name1, street1, streetNo, countryCode, postalCode, city), für die ein Wert vorliegen muss.

  • Für Felder mit Bezug zu einer Dynamischen Aufzählung (salutation, countryCode) sind nur Werte aus der betreffenden Aufzählung zulässig.

  • Andere Felder sind optional (name2, name3, street2). Sie werden in das temporäre Bezugsobjekt übernommen, soweit ein Wert vorhanden ist.

Konfiguration:

Der Screenshot rechts zeigt einen Ausschnitt aus der Konfiguration für den "Objekt-Wertauflöser" im Kopf der Ausführen mit-Ereignisaktion, mit der Definition für die MailAddress-Client-Objektstruktur im Prüfe Client-Objektstruktur (Wertauflöser)-Wertauflöser:

  • Der Modus "Vereinfachen" stellt sicher, dass Felder im Eingabewert nur in den Rückgabewert (und damit das temporäre Bezugsobjekt für den nicht dargestellten Aktionsblock) übernommen werden, wenn sie explizit in der Definition für die MailAddress-Struktur aufgeführt sind, die im Parameter Client-Objektstruktur ausgewählt bzw. definiert ist.

  • Die Wert-Konfiguration per Parameter Feststellungen ordnet die beim Prüfen anfallenden "Beanstandungen" der Variablen findings zu.


images/download/attachments/159866121/image-2024-6-3_13-3-36-version-1-modificationdate-1717412616308-api-v2.png


Laufzeitbeispiel:

Eingabewert
JSON-Abbild

Rückgabewert des Wertauflösers
JSON-Abbild

Feststellungen (→Variable findings)
JSON-Abbild

{
"accNumber": "159486423",
"city": "Friesenried",
"countryCode": "DE",
"id": "23351",
"name1": "Karola",
"name3": "Mustermann",
"salutation": "MS",
"stateCode": "BY",
"stateProvince": "Bayern",
"street1": "Am Leuchtturm",
"streetNo": "32",
"zipcode": "87654"
...
}
{
"salutation": "MS",
"name1": "Karola"
"name2": null,
"name3": "Mustermann",
"street1": "Am Leuchtturm",
"street2": null,
"streetNo": "32",
"countryCode": "DE",
"city": "Friesenried"
}
{
"class": "list",
"data": [
{
"class": "de.lobster.scm.client.structure.ClientStructureFinding",
"input": null,
"loc": [
"body",
"postalCode"
],
"msg": "missing mandatory value",
"type": "MISSING",
"validValues": null
}
]
}
  • Die einzige "Feststellung" in der findings-Variable vom Typ MISSING bezieht sich hier auf das Pflichtfeld postalCode für die Postleitzahl.

    • Die Datenstruktur im Eingabewert stellt zwar eine Postleitzahl (87654) bereit, verwendet dafür allerdings ein Feld zipcode.

    • Das zipcode-Feld erscheint genausowenig im Rückgabewert des Wertauflösers, wie alle anderen Felder des Eingabewert-Objekts, die in der MailAddress-Client-Objektstruktur nicht definiert sind.

  • Die Werte für die Felder salutation und countryCode werden gegen die jeweilige Dynamische Aufzählung (Anrede, Land) geprüft.

    • Sofern sich der Textwert im Eingabewert nicht auf den Namen für einen bekannten Aufzählungswert bezieht, entfällt das betreffende Feld im Rückgabewert.

    • Stimmt der Textwert im Eingabewert mit dem Namen eines Werts in der betreffenden Aufzählung, erscheint (im Unterschied zum Modus "Typänderungen aktualisieren") trotzdem nur der Textwert im Rückgabewert.

Man könnte den Rückgabewert im Modus "Vereinfachen" als Schnittmenge zwischen den Daten aus dem Eingabewert und Client-Objektstruktur bezeichnen.

ANMERKUNG◄ Die Feldnamen von Eingabewert und der Client-Objektstruktur MailAddress sind hier - abgesehen vom postalCode-Feld - in Anlehnung an die vordefinierte Datenstruktur für Adressen in Lobster Data Platform / Orchestration gewählt. Trotzdem scheitert der Versuch eine "Adresse"-Instanz direkt als Eingabewert für den Prüfe Client-Objektstruktur (Wertauflöser) zu verwenden, um die "Schnittmenge" mit einer benutzerdefinierten "Client-Objektstruktur" (hier: MailAddress) zu gewinnen. Dies liegt daran, dass der Entitätstyp "Adresse" (Address) eben nicht als anonymes Objekt gilt. Stattdessen lautet in diesem Fall die einzige Feststellung: WRONG_TYPE in [body]: value is not an anonymous object und der Rückgabewert ist "Kein Wert" ($null).