Objekt-Feld

Wertauflöser - Kurzfassung

Zweck: Greift auf ein per Parameter spezifiziertes Feld des Objekts zu, das als Eingabewert vorliegt, und gibt dessen Wert zurück, sofern vorhanden.

Siehe auch: Objekt-Feld-Regel

images/download/attachments/128386792/image2023-2-9_15-0-8-version-1-modificationdate-1675951208134-api-v2.png

Der Objekt-Feld-Wertauflöser greift auf ein per Parameter spezifiziertes Feld des Objekts zu, das als Eingabewert vorliegt, und gibt dessen Wert zurück.

Der Rückgabewert steht dabei für Lesezugriffe und - soweit für das betreffende Feld bzw. Datenobjekt zulässig - auch für Schreibzugriffe zur Verfügung.

Falls der optionale Parameter im Wertauflöser nicht verwendet wird, um ein Feld zu spezifizieren, wird der Eingabewert als Rückgabewert weitergegeben.
HINWEIS Das klingt nicht besonders sinnvoll, kann aber in der Praxis gelegentlich durchaus nützlich sein, um auf das Bezugsobjekt als Ganzes zu verweisen (s. Beispiel).

Der Wertauflöser gibt "kein Wert" (null) zurück, falls eine der folgenden Bedingungen erfüllt ist:

  • Es liegt kein Eingabewert vor.

  • Das als Eingabewert übergebene Objekt verfügt nicht über das adressierte Feld.

  • Das als Eingabewert übergebene Objekt verfügt über das adressierte Feld aber dessen Wert ist "kein Wert" (null).

Konfiguration

Der einzige, optionale Parameter des Wertauflösers bietet die Möglichkeit genau ein bestimmtes Feld des Datenobjekts zu adressieren, das als Eingabewert vorliegt.

Wird kein Feldname ausgewählt oder angegeben, dann gibt der Wertauflöser den Eingabewert zurück.

Abhängig vom Typ des Eingabewerts bietet das Dropdown des betreffenden Auswahlfeld/Combobox-Element spezifische Auswahlmöglichkeiten an, die sich in der Regel direkt oder indirekt aus dem Datenmodell dieses Typs ergeben.

HINWEIS◄ Wie im Bild zu erkennen liefert die Suchfunktion für eine Entität vom Typ "Firmenkonto" (s. Firmen) für den Suchbegriff "id" zahlreiche Felde, die das Firmenkonto direkt (Auswahl "ID") oder indirekt (z. B. "address.ID") betreffen.

images/download/attachments/128386792/image2022-2-8_14-13-49-version-1-modificationdate-1675951185212-api-v2.png

Abhängig vom Typ des adressierten Felds gibt der Objekt-Feld-Wertauflöser einen simplen Wert (z. B. den Long-Wert für die "ID" einer Entität) zurück oder auch ein komplexeres Datenobjekt, wie im Beispiel rechts die einem Firmenkonto zugeordnete "Adresse" (address), die ihrerseits wieder zahlreiche Felder beinhaltet.

In der Situation rechts wird die über den Wertauflöser ermittelte Firmenadresse komplett verwendet, um sie per Setze Wert-Ereignisaktion einer Variablen companyAddress als Wert zuzuweisen.

images/download/attachments/128386792/image2022-2-8_14-45-9-version-1-modificationdate-1675951185206-api-v2.png

Wie das Beispiel rechts verdeutlicht, können Objekt-Feld-Wertauflöser auch "verkettet" eingesetzt werden, um stufenweise in komplexere Datenstrukturen einzutauchen:

  • Analog zum vorigen Beispiel wird hier zunächst das wieder das Feld address eines Firmenkontos adressiert.

  • Der unterhalb verkettete zweite Objekt-Feld-Wertauflöser soll dann auf das Feld "Postleitzahl" (zipcode) innerhalb vom Vorgänger zurückgegebenen Adresse zugreifen.

HINWEIS◄ Das Suchergebnis im Dropdown verweist hier außerdem auf das "Feld" zipcode.length. Das length-Feld wird für Felder mit dem Datentyp "Text" (string) automatisch angeboten, weil ein Text als "Liste von Zeichen" behandelt wird und die Anzahl der Einträge in einer Liste immer über das Feld length gelesen werden kann.

images/download/attachments/128386792/image2022-2-8_14-55-30-version-1-modificationdate-1675951185202-api-v2.png

Nicht für jedes Feld, dessen Inhalt eine "Liste" sein kann, wird automatisch das zugehörige length-Feld im Dropdown angeboten.

Das Beispiel rechts zeigt eine Regel für ein Zuordnungskriterium, das prüft, ob einem Benutzerkonto im Feld "Rollen" (roles) mehrere Rollen zugeordnet wurden, was eine Auswahl beim Anmelden erfordert.

Auf der linken Seite der Objekt-Feld-Regel folgen hier zwei Objekt-Feld-Wertauflöser aufeinander:

  • Im ersten Schritt liest der Wertauflöser das Feld "Rollen" (roles), das eine Liste von Long-Werten (IDs der Rollen) zurückgibt.

  • Der zweite Schritt liest das length-Feld der Long-Liste, ermittelt also wie viele Rollen dem Benutzer zur Auswahl stehen. Das Ergebnis ist eine Ganzzahl (Integer).

HINWEIS◄ In Kenntnis der Datenstruktur inkl. der betreffenden Feldnamen kann man anstelle der Verkettung auch den gesamten "Pfad" (roles.length) als Freitext in das Auswahlfeld/Combobox-Element eingeben:

images/download/attachments/128386792/image2022-2-8_16-20-47-version-1-modificationdate-1675951185189-api-v2.png

Auch wenn das Dropdown diesen zusammengesetzten Feldnamen nicht unterstützt, liefert die Kombination zur Laufzeit das gewünschte Ergebnis.

images/download/attachments/128386792/image2022-2-8_15-14-4-version-1-modificationdate-1675951185195-api-v2.png

Existiert keine definierte Datenstruktur für das als Eingabewert vorliegende Objekt (im Bild rechts verweist der Kontext auf das undefinierte "Client Objekt"), dann erscheint das Dropdown in der Regel leer.

Wie das "+"-Symbol rechts im Auswahlfeld/Combobox-Element unterstreicht, kann immer ein Freitext als Feldname eingegeben werden. Für das "Client Objekt" im Beispiel bedeutet die abgebildete Zuweisung per Setze Wert, dass dieses Feld sofern es noch nicht existiert ggf. neu angelegt wird.

HINWEIS◄ In den Daten einer Entität kann auf diesem Weg kein zusätzliches Feld angelegt werden, obwohl die Eingabe von Freitext rein technisch funktioniert.

images/download/attachments/128386792/image2022-2-8_14-31-28-version-1-modificationdate-1675951185209-api-v2.png

Beispiel

Eine Ereignisbehandlung soll aus den Daten eines Geschäftstransaktionsobjekts vom Typ "Sendung" (s. Sendungen) eine bestimmte Position entfernen. Die Position wird dabei durch die Angabe der internen ID eines bestimmten Produkts (s. Produkte) identifiziert, das als Merkmal in der Position enthalten ist.

Die "Produkt.ID" wird zu diesem Zweck vorher einer Variablen (removeProductId) als Wert zugewiesen.

Konfiguration:

Innerhalb einer Ausführen mit-Ereignisaktion wird zunächst ein Direkte Positionen-Wertauflöser verwendet, um die Liste aller direkten Positionen mit dem Typ "Standard" innerhalb der Position als Bezugsobjekt für die Verarbeitung im Aktionsblock festzulegen:

  • Die Liste modifizieren-Ereignisaktion erwartet auf der linken Seite die zu modifizierende Liste und - nach der Auswahl der Operation "Entfernen" ([-]-Symbol) - das zu entfernende Element der Liste.

  • Auf der linken Seite wird ein Objekt-Feld-Wertauflöser ohne Feldnamen verwendet, der die als Bezugsobjekt definierte Liste komplett zurückgibt. Der Wertauflöser referenziert hier nur das äußere Bezugsobjekt, ohne ein Feld "aufzulösen". Derselbe Effekt könnte auch mit jedem anderen Wertauflöser erzielt werden, der den Eingabewert unverändert als Rückgabewert liefert (z. B. Wert als Variable speichern oder Eingabeobjekt (Typsicher) mit geeigneter Typauswahl).

  • Auf der rechten Seite wird ein Regel-Listen Resolver verwendet, um die zu löschende Position in der als Bezugsobjekt übergebenen Liste von "Direkten Positionen" zu identifizieren. Innerhalb der Regel-Definition wird eine Objekt-Feld-Regel verwendet, die auf der linken Seite wiederum einen Objekt-Feld-Wertauflöser verwendet, um die "Produkt.ID" zu lesen. Als Eingabewert für diesen Wertauflöser gilt dabei die einzelne zu prüfende Sendungsposition.

images/download/attachments/128386792/image2022-2-8_16-50-22-version-1-modificationdate-1675951185183-api-v2.png