Typisierte plurale Attribute (Wertauflöser)

Prev Next

Regeltypen - Kurzfassung

Zweck: Gibt im Kontext eines Bezugsobjekts (Entitätstyp muss Attributbesitzer sein), die Einzelwerte für ein durch den "Subtyp" bestimmtes "typisiertes plurales Attribut" als Liste zurück, auf die lesend und schreibend zugegriffen werden kann.

Tooltip

  • Verwendung: Der Zugriff auf das über die Parameter Typisiertes Attribut und Subtyp in zwei Stufen ausgewählte Attribut ermöglicht Lese- und Schreibzugriffe, die typischerweise per Verkettung (z. B. mit einem Listenwert-Wertauflöser) erfolgen.

  • Parameter:

    • Die statische Auswahl für das Auswahlfeld Typisiertes Attribut legt den Attributtyp (z. B. Textattribut oder Kennzeichenattribut) fest.

    • Der Parameter Subtyp definiert per Auswahl innerhalb der Dynamischen Aufzählung für das Typisierte Attribut (z. B. Texttyp oder Kennzeichentyp) das typisierte Attribut, das zurückgegeben werden soll.

  • Hinweis: Die Auswahl für den Subtyp bietet auch Attribut-Subtypen an, die nicht als "plural" definiert sind. Zur Laufzeit wird das betreffende Attribut (sofern vorhanden) als einziges Element einer Liste zurückgegeben.

images/download/attachments/83165608/image2021-10-6_11-52-15-version-1-modificationdate-1633513937657-api-v2.png

Der Typisierte plurale Attribute (Wertauflöser)-Wertauflöser ermöglicht den Zugriff auf ein (plurales) typisiertes Attribut einer Entität. Er erwartet als Bezugsobjekt eine Entität, die dem Typ nach als "Attributsbesitzer" gilt (s. Attribut (Wertauflöser)) und dessen Datenmodell mindestens einen typisierten Attributtyp vorsieht. Der Rückgabewert ist eine Liste von Einzelwerten mit der spezifische Datenstruktur für den jeweiligen Attributtyp, die auch leer sein kann. Für gezielte Schreib- und Lesezugriffe (s. "Beispiele") können die für Listen spezifischen Wertauflöser (z. B. Listenwert, Regel-Listen Resolver) und Ereignisaktionen (z. B. Für jeden Eintrag wiederholen (Schleife), Liste modifizieren) eingesetzt werden. Ein Schreibzugriff auf ein Feld impliziert ggf. das Erzeugen eines Einzelwerts.

Der Parameter Typisiertes Attribut legt den Typ des typisierten Attributs fest, das zurückgeben werden soll. Der ausgewählte Typ definiert die Datenstruktur des Attributs. Jeder Attributtyp (Kennzeichenattribut, Textattribut, Datumsattribut, usw.) verwendet ein spezifisches Feld (flagType, textType, dateType, usw.), für den Subtyp. Spezifische Aufzählungen je Typ (Kennzeichentyp, Texttyp, Datumstyp, usw.) definieren die Werte, die jeweils als Subtyp ausgewählt werden können (s. Geschäftsobjekte und Attribute).

WICHTIG◄ Das Schreiben und Lesen des Attributs betrifft in der Regel einen oder mehrere Feldwerte innerhalb der spezifischen Datenstruktur für den Attributtyp. Die entsprechenden Felder müssen - wie auch die "Beispiele" unten demonstrieren - in der Regel explizit adressiert werden, damit eine Wertzuweisung erfolgreich ist bzw. der Rückgabewert dem gewünschten Ergebnis entspricht. Dies kann entweder durch Verkettung (s. Verketteter Wertauflöser) erreicht werden oder z. B. im Kontext einer Ausführen mit-Ereignisaktion, die das Attribut als abweichendes Bezugsobjekt definiert.

Konfiguration

Der Typisierte plurale Attribute (Wertauflöser)-Wertauflöser erwartet ein Bezugsobjekt, dessen Datenmodell mindestens einen typisierten Attributtyp enthalten kann.

Der Parameter Typisiertes Attribut sieht eine statische Einfachauswahl für den Attributtyp vor, auf den zugegriffen werden soll. Solange der Kontext der Konfiguration nicht auf einen spezifischen Entitätstyp als Bezugsobjekt verweist, erscheinen alle Typen von Typisierten Attributen zur Auswahl, die das System unterstützt.

Das Auswahlfeld/Combobox-Element bietet eine Suchfunktion an, die die internen Klassennamen der Attribute ebenso berücksichtigt wie zugehörige Lokalisierungen aus der Sprachverwaltung.

images/download/attachments/83165608/image2021-10-6_13-20-49-version-1-modificationdate-1633519251750-api-v2.png

Bezieht sich der Kontext der Konfiguration dagegen auf einen spezifischen Entitätstyp für das Bezugsobjekt, dann erscheinen nur die Attributtypen zur Auswahl, die im betreffenden Datenmodell explizit implementiert sind.

Rechts verweist eine Typprüfung (nicht im Bild) auf einen Routingtabelleneintrag, so dass im Dropdown nur die vier Attributtypen erscheinen, die dieser Entitätstyp vorsieht.

images/download/attachments/83165608/image2021-10-6_13-21-56-version-1-modificationdate-1633519318721-api-v2.png

Erst wenn im Parameter Typisiertes Attribut ein Attributtyp ausgewählt ist, bietet das Dropdown für den Subtyp die Werte der jeweiligen Dynamischen Aufzählung (z. B. Texttyp) zur Auswahl an.

WICHTIG◄ Falls im Kontext einer Sitzung Aufzählungsfilter für die betreffende Aufzählung anwendbar sind, schränken diese auch die Auswahl für den Subtyp im Zuge der Konfiguration ein. Auf die Auswertung des Wertauflösers zur Laufzeit haben Aufzählungsfilter dagegen keinen Einfluss.

images/download/attachments/83165608/image2021-10-6_13-22-56-version-1-modificationdate-1633519378818-api-v2.png

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svgACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Die Auswahl für den Subtyp bietet auch Attribut-Subtypen an, die in der Definition der Dynamischen Aufzählung nicht als "Plural" gekennzeichnet sind. Wird ein "singulärer" Subtyp ausgewählt, gibt der Typisierte plurale Attribute (Wertauflöser)-Wertauflöser zur Laufzeit das betreffende Attribut (sofern vorhanden) als einziges Element einer Liste zurück.

Wird kein Typisiertes Attribut ausgewählt, dann ist der Rückgabewert des Wertauflösers immer "kein Wert" (null).

Wird ein ausgewähltes Typisiertes Attribut vom Typ des zur Laufzeit vorliegenden Bezugsobjekts nicht unterstützt, ist der Rückgabewert ebenfalls "kein Wert" (null).

Falls das zur Laufzeit vorliegende Bezugsobjekt ein ausgewähltes Typisiertes Attribut unterstützt, im Bezugsobjekt aber keine betreffenden Daten enthalten sind, wird eine leere Liste zurückgegeben.

Beispiele

Beispiel für "Schreibzugriff"

Ein Allgemeines Geschäftsobjekt soll einen "Zug" für die Abwicklung von Schienenverkehr abbilden. Innerhalb des Zugs soll die Abfolge der Waggons als "Wagenreihung" gepflegt werden können. Für jeden Wagen soll einerseits der Waggontyp und andererseits eine eindeutige Kennung ("ID") angegeben werden müssen.

Verfügbare "Waggontypen" (WAGON_TYPES) sind bereits in einer eigens definierten Dynamischen Aufzählung hinterlegt. Auf dieser Basis wurde ein Freie-Aufzählung-Typ "Zug" (TRAIN) angelegt, für den die Option "Plural" gesetzt wurde, so dass ein "Zug" als Liste von "Waggons" behandelt werden kann.

Jeder Waggon wird dabei durch eine Instanz des Freie-Aufzählung-Attributs "Zug" repräsentiert. Die Datenstruktur dieses Attributtyps sieht neben dem "Enum Wert" (enumValue) für den "Waggontyp" auch ein Textfeld "Text Wert" (textValue) vor, das zur Eingabe der eindeutigen Kennung je Waggon genutzt werden kann. Im Beispiel rechts wurden die Elemente für die beiden Felder innerhalb einer Erfassungsmaske bereits als "Waggontyp" und "ID" beschriftet und als Pflichtfeld (*) deklariert.

images/download/attachments/83165608/image2021-10-6_14-24-13-version-1-modificationdate-1633523055651-api-v2.png

Anforderung:

Immer wenn innerhalb einer Erfassungsmaske oder Übersicht der Button "Neu" verwendet wird, um ein neues Allgemeines Geschäftsobjekt dieses Typs anzulegen, soll automatisch der Eintrag für den ersten Waggon mit dem Typ "Gedeckter Güterwagen" generiert werden, ohne dass dabei eine ID zugewiesen wird.

Konfiguration:

Eine Ereignisbehandlung, die auf das Ereignis "Neu" (s. Allgemein (Ereignisse)) als Auslösendes Ereignis reagiert, wird wie rechts abgebildet konfiguriert:

  • Die Prüfende Regel stellt per Typprüfung UND mit einer Objekt-Feld-Regel sicher, dass als Bezugsobjekt ein Allgemeines Geschäftsobjekt des betreffenden Typs vorliegt.

  • Als Aktion bei bestandener Regel wird eine Setze Wert-Ereignisaktion ausgeführt, die (links) das Ziel für eine Wertzuweisung definiert. Hier wird zunächst durch einen Typisierte plurale Attribute (Wertauflöser)-Wertauflöser das Freie-Aufzählung-Attribut "Zug" (TRAIN) identifiziert, in dem als Typisiertes Attribut "Freies Auzählungsattribut" und als Subtyp "Zug" ausgewählt wird.

  • Der verkettete Listenwert-Wertauflöser greift hier per Modus "Wert (vom Anfang)" mit Offset 0 auf den ersten Eintrag in der Liste der Attribut-Instanzen zu.

    ANMERKUNG◄ Es wird davon ausgegangen, dass in Verbindung mit dem "Neu"-Ereignis noch kein solcher Eintrag existiert. Sofern das Ereignis noch eine andere Ereignisbehandlung auslöst, die mit höherer Priorität ausgeführt wurde und bereits einen Eintrag erzeugt hat, würde dieser durch die Zuweisung aktualisiert. Durch einen Wechsel zu einem anderen Modus ("Hinzufügen...") könnte das Überschreiben vermieden werden.

  • Da nur der "Waggontyp" definiert werden soll, wird die Verkettung zum Objekt-Feld "Enum Wert" (enumValue) fortgesetzt. Diesem Feld soll der (rechts) statisch definierte Waggontyp "Gedeckter Güterwagen" zugewiesen werden.

images/download/attachments/83165608/image2021-10-6_14-56-2-version-1-modificationdate-1633524964525-api-v2.png

Beispiel für "Lesezugriff"

In Anlehnung an das vorherige Beispiel soll, wenn ein Allgemeines Geschäftsobjekt des betreffenden Typs gespeichert wird, geprüft werden, ob der zusammengestellte Zug mindestens einen "Gedeckten Güterwagen" enthält. Ist dies nicht der Fall, soll die Transaktion mit einer Fehlermeldung abgebrochen werden.

Konfiguration:

Eine Ereignisbehandlung, die auf die Ereignisse "Ändern" und "Erstellen" (s. Allgemein (Ereignisse)) reagiert, wird wie folgt konfiguriert:

  • Die Prüfende Regel (nicht im Bild) muss wie oben überprüfen, ob als Bezugsobjekt ein Allgemeines Geschäftsobjekt des relevanten Typs vorliegt.

  • Als Aktion bei bestandener Regel wird hier eine Wenn Dann Sonst-Ereignisaktion verwendet, um zu prüfen, ob ein "Gedeckter Güterwagen" in der Liste der Waggons im typisierten pluralen Attribut "Zug" (TRAIN) enthalten ist:

    • Die Prüfung basiert auf einer Objekt-Feld-Regel, die Ist leer als Vergleichstypen (Matcher) verwendet. Als "Datenquelle" für die Objekt-Feld-Regel soll der erste Treffer ("Gedeckter Güterwagen") in der Liste aller Waggons ermittelt werden:

      • Die Liste aller Waggons liefert ein Typisierte plurale Attribute (Wertauflöser) für das Typisierte Attribut "Freies Aufzählungsattribut" mit dem Subtyp "Zug" (TRAIN).

      • Der verkettete Regel-Listen Resolver prüft die Bedingung, ob der "Enum Wert" auf den gesuchten Waggontyp "Gedeckter Güterwagen" verweist. Da die Option Alle Werte als Liste abgewählt ist, wird (nur) der erste Treffer zurückgegeben.

      • Falls kein Treffer existiert, wird "kein Wert" zurückgegeben, die Ist leer-Bedingung der Objekt-Feld-Regel erfüllt ist. Dann wird die Abbrechen unterhalb ausgelöst und die Transaktion zurückgerollt. Das "Speichern" ist damit unwirksam und dem Benutzer wird eine Semantic Exception angezeigt, der hier der Lokalisierungstext für den Fehlercode NO_BOXCAR als Meldung zugewiesen wird.

images/download/attachments/83165608/image2021-10-6_15-34-14-version-1-modificationdate-1633527256897-api-v2.png