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
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. |
|
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. |
|
Wie das Beispiel rechts verdeutlicht, können Objekt-Feld-Wertauflöser auch "verkettet" eingesetzt werden, um stufenweise in komplexere Datenstrukturen einzutauchen:
►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. |
|
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:
►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:
Auch wenn das Dropdown diesen zusammengesetzten Feldnamen nicht unterstützt, liefert die Kombination zur Laufzeit das gewünschte Ergebnis. |
|
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. |
|
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:
|
|