Direkte Positionen

Wertauflöser - Kurzfassung

Zweck: Liefert eine Liste von Positionen für einen bestimmten Positionstyp, die der Entität im Eingabewert direkt untergeordnet sind.

Auf Kopfebene:

Innerhalb der Positionshierarchie:

images/download/attachments/78256004/image2022-7-26_9-54-10-version-1-modificationdate-1658822050157-api-v2.png



images/download/attachments/78256004/image2022-7-26_9-55-10-version-1-modificationdate-1658822110526-api-v2.png

Der Direkte Positionen-Wertauflöser liefert eine Liste von Positionen für einen bestimmten Positionstyp, die der Entität im Eingabewert direkt untergeordnet sind.

  • Der Wertauflöser ermöglicht nicht nur den Zugriff auf bestehende Positionen innerhalb der Hierarchie, sondern ist auch nützlich, um der bestehenden Positionshierarchie in Verbindung mit dem Listenwert-Wertauflöser gezielt neue Positionen hinzuzufügen.

Er ist ausschließlich für den Kontext von Entitäten bestimmt, deren Typdefinition eine Positionshierarchie unterstützt. Innerhalb der Geschäftstransaktionsobjekte betrifft das Bestellungen, Sendungen und den Typ Allgemeines Geschäftsobjekt aber nicht Manifeste, da diese nicht über eine Positionshierarchie verfügen, sondern nur eine einzige Ebene von "Manifestpositionen" (mit den dem Manifest zugeordneten Sendungen) beinhalten.

Das Erscheinungsbild des Wertauflösers unterscheidet sich abhängig von der Ebene der Positionshierarchie, auf der er eingesetzt wird:

  • Auf Kopfebene (s. Bild oben links) - wenn der Eingabewert die übergeordnete Entität der Positionshierarchie angibt - muss über den Parameter Vom Typ der Positionstyp ausgewählt werden, für den die Positionen der obersten Hierarchieebene zurückgegeben werden sollen.

  • Innerhalb der Positionshierarchie - wenn der Eingabewert eine bestimmte hierarchische Position innerhalb der Hierarchie angibt - ist der Positionstyp durch die übergeordnete Position bereits vorbestimmt, so dass der Parameter entfällt.

Konfiguration

Beim Einsatz auf Kopfebene muss der Positionstyp ausgewählt werden. Für Lesezugriffe auf bestehende Positionen wirkt die Auswahl als Filter. Noch wichtiger ist die Auswahl, wenn über den Listenwert-Wertauflöser neue Positionen hinzugefügt werden sollen. Denn dann deklariert die Auswahl im Wertauflöser, welcher Positionstyp hinzugefügt werden soll.

Das Auswahlfeld für den Parameter Vom Typ (in Verbindung mit dem Namen des Wertauflösers zu lesen als "Direkte Positionen ... Vom Typ:") bezieht sich auf die Dynamische Aufzählung Positionstyp und unterstützt wie recht gezeigt eine Suchfunktion.

Im Kontext der Konfiguration anwendbare Dynamische Aufzählungsfilter für den Positionstyp können die Auswahloptionen einschränken. Auf das Laufzeitverhalten haben solche Einschränkungen keinen Einfluss.

images/download/attachments/78256004/image2022-7-26_10-45-43-version-1-modificationdate-1658825143281-api-v2.png

Beispiele

Auf Kopfebene eine Position eines bestimmten Positionstyps hinzufügen

Bei der Neuanlage einer Bestellung soll automatisch eine Service-Position mit Standarddaten angelegt werden.

Konfiguration:

Die rechts abgebildete Ereignisbehandlung reagiert auf das Auslösende Ereignis "Neu" (s. Allgemein (Ereignisse)), wird also aktiv, wenn in einer Erfassungsmaske der Button "Neu" betätigt wird. Der ideale Zeitpunkt, um die Daten der neuen Entität automatisch zu initialisieren.


Die Prüfende Regel stellt durch eine Typprüfung sicher, dass es sich bei der neuen Entität um eine Bestellung handelt. Nur dann sollen die folgenden Aktionen ausgeführt werden.


Als Aktion bei bestandener Regel wird eine Ausführen mit-Ereignisaktion ausgeführt. Über deren Parameter Objekt Resolver wird die neue Service-Position als Bezugsobjekt für den unterhalb folgenden Aktionsblock definiert:

  • Der Direkte Positionen-Wertauflöser definiert durch die Auswahl "Service" für den Parameter Vom Typ die Liste aller direkten Service-Positionen, der ein neues Element hinzugefügt werden soll.

  • Der verkettete Listenwert-Wertauflöser fügt per Modus "Hinzufügen (am Anfang)" die erste Service-Position hinzu.

Im Aktionsblock kann die neue Position nach Bedarf mit Standardwerten besetzt werden. Im Beispiel wird durch eine Setze Wert-Ereignisaktion nur dem Textattribut "Warenbeschreibung" ein Standardwert zugewiesen.

images/download/attachments/78256004/image2022-7-26_10-58-36-version-1-modificationdate-1658825916478-api-v2.png

Auf "Unterpositionen" mit bestimmten Eigenschaften prüfen

Ein Client Workflow soll im Kontext einer Erfassungsmaske für Sendungen feststellen, ob zu einer in der Maske angezeigten Position Unterpositionen existieren, für die das Kennzeichenattribut "Gefahrgut" gesetzt ist. Abhängig vom Ergebnis der Suche soll im Kontext der Position ein Warnsymbol aktiv (rot) oder inaktiv (hellgrau) erscheinen.

Laufzeitbeispiel:

images/download/attachments/78256004/image2022-7-26_12-13-17-version-1-modificationdate-1658830397290-api-v2.png

  • Das Warnsymbol für "Gefahrgut" erscheint nur in der Positionszeile, wenn für mindestens eine (direkte) Unterposition der Position das Kennzeichenattribut "Gefahrgut" gesetzt ist.

  • Die Unterpositionen selbst werden in der Erfassungsmaske nicht angezeigt.

Konfiguration:

Der rechts abgebildete Client-Workflow wird in der Erfassungsmaske für Sendungen beim Laden der Daten je Positionszeile mit den ausgeführt. Über eine Verknüpfung mit dem Element Container für die Positionsdaten als Eingabewert die "Sendungsposition" bereitgestellt.

  • Die Prüfende Regel stellt per Typprüfung sicher, dass im Eingabewert eine "Sendungsposition" vorliegt.

  • Als Aktion bei bestandener Regel wird eine Wenn Dann Sonst-Ereignisaktion ausgeführt, die genau ein Ziel verfolgt: Sofern die Sendungsposition im Eingabewert über keine Unterposition mit dem "Gefahrgut"-Kennzeichen verfügt, wird der Client-Workflow durch die Abbrechen beendet. Dann werden im umgebenden Verhalten (nicht im Bild) die "Aktionen bei 'falsch'" ausgeführt. Sonst - also wenn mindestens eine "Gefahrgut"-Unterposition gefunden wird, endet der Client-Workflow ohne Abbruch und die "Aktionen bei 'wahr'" werden ausgeführt. Die Prüfung wird wie folgt umgesetzt:

    • Die äußere Objekt-Feld-Regel ist genau dann erfüllt, wenn keine "Gefahrgut"-Unterpositionen gefunden werden, denn dann trifft das Kriterium Ist leer für den Rückgabewert aus dem Regel-Listen Resolver zu.

    • Der Direkte Positionen-Wertauflöser liefert für den Regel-Listen Resolver alle direkten Unterpositionen der als Eingabewert vorliegenden Position.

    • Der Regel-Listen Resolver sucht nach einer Unterposition, die über ein Kennzeichenattribut vom Typ "Gefahrgut" mit dem Wert "true" verfügt. Der erste Treffer wird zurückgegeben, sonst lautet der Rückgabewert "kein Wert" ($null).

images/download/attachments/78256004/image2022-7-26_11-56-9-version-1-modificationdate-1658829370020-api-v2.png