Alle Attribute eines Typs

Wertauflöser - Kurzfassung

Zweck: Gibt im Kontext eines Bezugsobjekts (Entitätstyp muss Attributbesitzer sein), die Einzelwerte aller Attribute eines bestimmten Typs als Liste zurück.

images/download/attachments/201661201/image-2025-3-7_16-45-18-version-1-modificationdate-1741362318292-api-v2.png

Der Alle Attribute eines Typs-Wertauflöser ermöglicht den Zugriff auf alle Attribute einer Entität, die einem bestimmten Attributtyp angehören. Er erwartet als Bezugsobjekt eine Entität, die dem Typ nach als "Attributbesitzer" gilt (s. Attribut (Wertauflöser)). Der Rückgabewert ist eine Liste von Einzelwerten des jeweils angegebenen Attributtyps, 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.

Als Attribut muss genau ein Attributtyp aus einer folgenden Kategorien ausgewählt werden:

Kategorie

Beispiel für "Attribut" (Attributtyp)

Rückgabewert des Wertauflösers

Singuläre Attribute

Eigenes singuläres Attribut

Eine Liste, die genau ein singuläres Attribut des ausgewählten Typs enthält oder leer ist.
HINWEIS◄ Für den Zugriff auf ein Singuläres Attribut ist der Singuläres Attribut-Wertauflöser zu bevorzugen.

Plurale Attribute

"Kommunikationsinformation" in Adressen

Eine Liste, die alle "Kommunikationsinformationen" (Attribute) der Adresse enthält oder leer ist.
HINWEIS◄ Im Unterschied zu einem Zugriff über den Plurale Attribute (Wertauflöser)-Wertauflöser wird diese Liste nicht nach dem Feld index sortiert.

Typisierte Attribute

"Textattribut" (z. B. in Adressen)

Eine Liste, die alle "Textattribute" (sämtlicher Subtypen, s. Texttyp) des Geschäftstransaktionsobjekts enthält oder leer ist.
HINWEIS◄ Soweit die Liste plurale Subtypen für den ausgewählten Attributtyp enthält, erscheint in der Liste jeder Einzelwert als eigener Eintrag.

Sonstige Attribute

"Produkt ID" / "Preisattribut" für Produkte

Eine Liste, die alle "Preisattribute" bzw. "Produkt ID"-Attribute für das Produkt enthält oder leer ist.
HINWEIS◄ Attributtypen in dieser Kategorie, sind die einzigen, auf die ausschließlich über den Alle Attribute eines Typs-Wertauflöser zugegriffen werden kann.

Konfiguration

Der Alle Attribute eines Typs-Wertauflöser erwartet ein Bezugsobjekt, dessen Datenmodell als "Attributbesitzer" gilt (s. Attribut (Wertauflöser)).

Der Parameter Attribut sieht eine statische Einfachauswahl für den Attributtyp vor, auf dessen Wertliste zugegriffen werden soll.

Solange der Kontext der Konfiguration nicht auf einen spezifischen Entitätstyp verweist, erscheinen alle Attributtypen 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/201661201/image-2025-3-7_16-51-35-version-1-modificationdate-1741362695661-api-v2.png

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

Rechts verweist eine Typprüfung (nicht im Bild) auf einen Routingtabelleneintrag, so dass nur die für diese Entität vorgesehenen (typisierten) Attribute auswählbar sind.

images/download/attachments/201661201/image-2025-3-7_17-0-39-version-1-modificationdate-1741363239016-api-v2.png

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

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

Fall das zur Laufzeit vorliegende Bezugsobjekt den ausgewählten Attribut-Typ unterstützt, im Bezugsobjekt aber keine betreffenden Daten enthalten sind, wird eine leere Liste zurückgegeben.

Beispiele

Beispiel für "Schreibzugriff"

Beim Speichern eines Produktkatalogeintrags in einem bestimmten Katalog, sollen die Daten der im Produkt enthaltenen Preisattribute automatisch "überarbeitet" werden:

  • Sofern für ein Preisattribut das Feld "Steuersatz" (taxRate)noch nicht befüllt wurde, soll in der Dynamischen Aufzählung Steuersatz nachgeschlagen werden, ob für das "Land" (country), auf das sich das Preisattribut bezieht, ein "Standard-Steuersatz" festgelegt wurde.

  • Ein "Standard-Steuersatz" soll per willkürlicher Konvention daran erkennbar sein, dass der interne Name für den betreffenden Wert (in der Dynamischen Aufzählung Steuersatz) die Textverkettung eines Länderkennzeichens (s. Land) mit dem Suffix "_default" ist.

  • Existiert ein "Standard-Steuersatz" für das "Land" (country), dann soll dieser dem Feld "Steuersatz" (taxRate) zugewiesen werden.

Laufzeitbeispiel:

Eingegebene Werte in Preisattributen (vor dem Speichern)

automatische Überarbeitung (nach dem Speichern)

images/download/attachments/201661201/image-2025-3-7_17-13-24-version-1-modificationdate-1741364004245-api-v2.png

images/download/attachments/201661201/image-2025-3-7_17-14-19-version-1-modificationdate-1741364058857-api-v2.png

  • Die Erfassungsmaske sieht je Preisattribut die Eingabe für den Nettowert und eine Auswahl für den Steuersatz (s. Steuersatz) vor.

  • Das Element für den Bruttowert ist hier als Berechnungsfeld (s. Berechnungsfelder) mit einem Ausdruck nach dem Schema $product($el(<netValue>),$taxRate($el(<taxRate>))) konfiguriert (s. product (Multiplikation), taxRate (Steuersatz)).
    ANMERKUNG◄ Das Element Bruttowert ist außerdem deaktiviert, damit es nicht geändert werden kann, und sein Datenfeld auf "Überspringen" gesetzt, damit der berechnete Wert nicht im Attribut-Feld (grossValue) gespeichert wird.

  • Nach dem Speichern (rechts) wurde das Feld Steuersatz (taxRate) nur für de Länder "Deutschland" und "Schweiz" befüllt. Offenbar ist für das Land "Österreich" (noch) kein Standard-Steuersatz (mit dem internen Namen AT_default) hinterlegt.

Konfiguration:

Eine Ereignisbehandlung, die auf die Ereignisse "Ändern" und "Erstellen", also das "Speichern" einer Entität (s. Allgemein (Ereignisse)) reagiert, wird wie rechts abgebildet konfiguriert:

  • Die Prüfende Regel (im Bild zugeklappt), stellt durch eine Typprüfung sicher, dass als Bezugsobjekt ein "Produktkatalogeintrag" vorliegt. Per UND-Verknüpfung wird außerdem über eine Objekt-Feld-Regel die productCatalogId geprüft, um zu prüfen, ob sich der Eintrag dem laut Anforderung "vorbestimmten" Produktkatalog angehört.

  • Als Aktion bei bestandener Regel wird eine Für jeden Eintrag wiederholen (Schleife)-Ereignisaktion ausgeführt. Die Grundlage für die Schleife bildet eine Liste aller Preisattribute für das im Produktkatalogeintrag referenzierte Produkt (s. Produkte), die wie unten beschrieben auf die Preisattribute eingeschränkt wird, für die noch kein Steuersatz angegeben und für deren "Land" ein Standard-Steuersatz hinterlegt ist.

  • Innerhalb der Schleife erfolgt für alle relevanten Preisattribute eine einfache Zuweisung an das Objekt-Feld "Steuersatz" (taxRate). Datei wird der interne Name für den betreffenden Steuersatz per Textverkettung systematisch aufgebaut aus dem Wert für das Objekt-Feld "Land" (country) des Preisattributs und dem durch die willkürliche Konvention festgelegte statischen Suffix "_default".

    ANMERKUNG◄ Da die Konfiguration für den Wertauflöser für Einträge (siehe unten) sicherstellt, dass die Schleife nur Preisattribute ausgeführt wird, für die ein geeigneter Steuersatz existiert, kann hier ohne weitere Vorkehrungen auf die automatische Typumwandlung von Textwert zu Aufzählungswert gesetzt werden.

images/download/attachments/201661201/image-2025-3-7_17-4-9-version-1-modificationdate-1741363449331-api-v2.png

Der Wertauflöser für Einträge, der die Basis für die Iteration innerhalb der Schleife definiert wird wie rechts abgebildet als Verkettung von Wertauflösern konfiguriert:

  • Im ersten Schritt muss per Objekt-Feld-Wertauflöser das Feld product ausgewertet werden, über das sich der Produktkatalogeintrag auf ein Produkt bezieht.

  • Innerhalb des Produkts kommt der Alle Attribute eines Typs-Wertauflöser zum Einsatz, in dem hier der Attribut-Typ "Preisattribut" ausgewählt werden muss. Der Rückgabewert ist eine Liste aller Preisattribute die für das Produkt gefunden werden.

  • Die Liste aller Preisattribute soll durch den verketteten Regel-Listen Resolver eingeschränkt werden auf Alle Werte als Liste, für die folgende Bedingungen erfüllt sind:

    • Die erste Bedingung ist, dass das Feld "Steuersatz" (taxRate) des Preisattributs noch keinen Wert enthält (s. Objekt-Feld-Regel und Ist leer). Wurde einem Preisattribut etwa schon ein vom Standard abweichender Steuersatz zugewiesen, bleibt diese Auswahl unverändert bestehen.

    • Die zweite UND-verknüpfte Bedingung soll sicherstellen, dass für das "Land" (country), auf das sich das Preisattribut definitionsgemäß gilt, ein Standard-Steuersatz hinterlegt ist. Diese Prüfung ist im Beispiel als Mit-Regel konfiguriert, in deren Objekt Feld Resolver per Textverkettung der interne Name konstruiert wird, der laut Konvention für den Standard-Steuersatz des jeweiligen Landes gelten sollte:

      • Zunächst wird (analog zur Zuweisung in der Setze Wert-Ereignisaktion, s. oben) an den internen Namen im Feld country das statische Suffix "_default" angehängt.

      • Diese Zeichenfolge wird an einen Eingabeobjekt (Typsicher)-Wertauflöser übergeben. Da es sich bei dem ausgewählten Typ Steuersatz um eine Dynamische Aufzählung handelt, wird ein eingehender Textwert als interner "Name" innerhalb dieser Aufzählung interpretiert und der entsprechende Aufzählungswert zurückgegeben (sonst: "kein Wert").

      • In der Regeldefinition der Mit-Regel kann deshalb eine Typprüfung auf den Typ Steuersatz ausgeführt werden, die nur bestanden wird, wenn ein Steuersatz hinterlegt ist, der auf den gemäß der Konvention aufgebauten "Namen" entspricht.

Der Regel-Listen Resolver gibt eine Liste aller Preisattribute des Produkts zurück, für die ein Standard-Steuersatz zugewiesen werden soll und kann. Nur für diese erfolgt die Zuweisung innerhalb der Schleife (s. o.).

ANMERKUNGProdukte sind Referenzierte Objekte, so dass Veränderungen an Attributen eines in einem Produktkatalogeintrag referenzierten Produkts nicht die Eigenschaften dieses Produkts verändern, sofern dieses bereits gespeichert wurde. Vielmehr wird beim Speichern geprüft, ob die geänderte Merkmalskombination einem bestehenden Produkt entspricht. Anderenfalls wird dieses Produkt automatisch neu erstellt. Anschließend wird die Referenz im Produktkatalogeintrag auf das vorhandene oder neu erstellte Produkt geändert. Bestehende Referenzen z. B. in Positionen von Geschäftsobjekten oder anderen Produktkatalogen verweisen weiter auf das ursprüngliche Produkt.

images/download/attachments/201661201/image-2025-3-7_17-6-58-version-1-modificationdate-1741363618748-api-v2.png images/download/attachments/201661201/image-2025-3-7_17-8-52-version-1-modificationdate-1741363732415-api-v2.png

Beispiel für "Lesezugriff"

In einer Übersicht für Benutzer soll ein Klick auf einen benutzerdefinierten Ribbon Button "Flags" (s. Ribbon-Makros) eine Benachrichtigung mit einer Liste aller "Kennzeichen" (engl. "flags") öffnen, die für einen ausgewählten Benutzer gesetzt sind.

Konkret sollen dazu alle Kennzeichenattribute ausgewertet werden, die der Adresse des Benutzers zugeordnet sind und für die der Kennzeichenwert den Wert $true lautet.

In der Liste soll dann jeweils der lokalisierte Name für den Kennzeichentyp aus dem jeweiligen Attribut erscheinen.

Laufzeitbeispiel:

images/download/attachments/201661201/image-2025-3-10_9-1-55-version-1-modificationdate-1741593715253-api-v2.png

Konfiguration:

Ein Eigenes Aktionsevent "Flags anzeigen (Benutzer)" muss angelegt und das zugehörige Ribbon-Makro im Kontext der "Benutzerübersicht" hinzugefügt und zugeordnet werden. Auf Details hierzu sei an dieser Stelle verzichtet.

Eine Ereignisbehandlung, die das Ereignis "Flags anzeigen (Benutzer)" als Auslösendes Ereignis verwendet, wird wie rechts abgebildet konfiguriert:

  • Die Prüfende Regel stellt durch eine Typprüfung sicher, dass als Bezugsobjekt ein "Benutzer" vorliegt.

  • Als Aktion bei bestandener Regel wird eine Hinweis anzeigen (Popup)-Ereignisaktion wie folgt konfiguriert:

    • Als Typ der Benachrichtigung wurde "Info" gewählt, was eine Anzeige als temporäre Einblendung am rechten Bildrand bedingt (s. "Laufzeitbeispiel").

    • Im Titel soll der ausgewählte Benutzer identifiziert werden. Zu diesem Zweck greift ein Objekt-Feld-Wertauflöser lesend auf das Feld "Benutzername" (username) zu.

    • Die Meldung enthält eine Wertauflöserkette (s. Verketteter Wertauflöser), durch die die gesamte Datenaufbereitung für die Ausgabe der gewünschten Informationen geleistet werden kann, ohne dass eine Für jeden Eintrag wiederholen (Schleife) konfiguriert werden muss (Details hierzu s. unten).

      ANMERKUNG◄ In der folgenden Detaildarstellung betrifft nur der zweite Schritt in der Verkettung von Wertauflösern unmittelbar den Lesezugriff per Alle Attribute eines Typs-Wertauflöser. Alle anderen Wertauflöser sollen demonstrieren, wie die zurückgegebene Liste von Attributen aufbereitet werden kann, um die konkreten Anforderungen im Beispiel zu erfüllen.

images/download/attachments/201661201/image-2025-3-10_9-13-46-version-1-modificationdate-1741594425529-api-v2.png

  • Innerhalb der Meldung greift zunächst ein Objekt-Feld-Wertauflöser auf das address-Feld des Benutzerkontos zu, da die Adresse des Benutzers typischerweise als Besitzer seiner Attribute gilt.

  • Für den verketteten Alle Attribute eines Typs ist der Attribut-Typ "Kennzeichenattribut" (FlagAttribute) ausgewählt, der eine Liste aller Kennzeichenattribute der Adresse liefert.

  • Der verkettete Regel-Listen Resolver soll diese Liste auf diejenigen Kennzeichentypen einschränken, die nicht nur vorhanden sind, sondern die auch als "zugewiesen" gelten. Dabei sollen als Rückgabewert an die unterhalb verketteten Wertauflöser Alle Werte als Liste übergeben werden, die die konfigurierte Objekt-Feld-Regel erfüllen: Per Ist Gleich-Vergleichstyp wird dabei geprüft, ob der "Kennzeichenwert" (flagValue) des Attributs den Wert $true hat.

An die unterhalb verketteten Wertauflöser wird also die Teilmenge aller Kennzeichenattribute weitergegeben, die für den Benutzer "gesetzt" sind. Diese Liste ist leer, falls keine Flags gesetzt sind.

  • Der Sammle Werte-Wertauflöser legt über den Parameter Wert zum Sammeln fest, wie die gefilterte Liste von Kennzeichenattributen in Ausgabetexte umgewandelt werden soll. Konkret wird hier ein Wertauflöser vom Typ Wert aus Sprachverwaltung verwendet:

    • Für das Bundle wird per Klasse-Wertauflöser als statischer Wert die Klasse Kennzeichentyp zugeordnet.

    • Der Name für die Resource in diesem Bundle ist dem Feld "Kennzeichentyp" (flagType) des ausgewerteten Kennzeichenattributs zu entnehmen. Konkret definiert der "Name" (name) des Kennzeichentyp-Werts die Resource.

    • Der angefragte Resource Name soll hier außerdem als Standardwert gelten, für den Fall, dass für einen Kennzeichentyp keine Lokalisierung vorliegt. Im Laufzeitbeispiel (s. o.) betrifft dies z. B. das Kennzeichen "VIP", für das absichtlich auf eine Lokalisierung verzichtet wurde.

  • Die Liste von Textwerten, die die ausgewählten Kennzeichentypen identifizieren sollen, wird anschließend noch über einen verketteten Text-Liste zusammenführen-Wertauflöser so aufbereitet, dass zwischen zwei Werten ein Zeilenumbruch eingefügt wird.

images/download/attachments/201661201/image-2025-3-10_9-22-42-version-1-modificationdate-1741594965431-api-v2.png