Regelwert

Wertauflöser - Kurzfassung

Zweck: Wertet die konfigurierte Regel aus und liefert das Prüfergebnis als booleschen Wert (true/false).

images/download/attachments/78256085/image2022-9-1_10-21-27-version-1-modificationdate-1662020487237-api-v2.png

Der Regelwert-Wertauflöser wertet die konfigurierte Regel aus und liefert das Prüfergebnis als booleschen Wert (true/false).

Auf diesem Weg kann ein Prüfergebnis in einer Wertzuweisung oder als Vergleichswert in einer Regel verwendet werden.

Konfiguration

Ein Klick auf das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg -Symbol öffnet das Kontextmenü zum Hinzufügen eines Regeltyps für die Regel.

Das Angebot der Regeltypen und Regeltyp-Kategorien im Kontextmenü kann abhängig von den installierten/lizenzierten Modulen und dem durch den Kontext definierten Eingabewert-Typ unterschiedlich ausfallen.

Ausgehend von der initial erstellten Regel können weitere Regeltypen UND- oder ODER-verknüpft hinzugefügt werden, um beliebig komplexe Logiken abzubilden (Details s. Regeleditor).

HINWEIS◄ Wird keine Regel konfiguriert, dann lautet der Rückgabewert per Definition true.

images/download/attachments/78256085/image2022-9-1_12-55-9-version-1-modificationdate-1662029709976-api-v2.png

Beispiele

Einfacher Anwendungsfall: Prüfergebnis als Wertzuweisung für ein Feld

Bei jedem Speichern (Erstellen/Ändern) eines Benutzerkontos (s. Benutzer) soll geprüft werden, ob in der Adresse des Benutzers das Feld "Kontonummer" (accountNumber) gefüllt ist.

Das Ergebnis dieser Prüfung soll den Status für das Boolean-Feld "Aktiv" (active) bestimmen, sodass das ein Konto mit "Kontonummer" automatisch "aktiv" und eines ohne "Kontonummer" automatisch "inaktiv" ist bzw. wird.

Konfiguration:

Eine eigens eingerichtete Ereignisbehandlung, die auf die Auslösenden Ereignisse "Ändern" und "Erstellen" (s. Allgemein) reagiert, wird wie rechts abgebildet konfiguriert:


Die Prüfende Regel stellt per Typprüfung sicher, dass als Eingabewert ein Benutzerkonto (s. Benutzer) vorliegt, das erstellt oder geändert werden soll.


Als Aktion bei bestandener Regel wird hier eine Setze Wert-Ereignisaktion für die automatische Wertzuweisung benutzt:

  • Als Ziel für die Zuweisung wird links per Objekt-Feld-Wertauflöser das Feld "Aktiv" (active) im als Bezugsobjekt gegebenen Benutzerkonto definiert.

  • Auf der rechten Seite wird der Wert für die Zuweisung durch den Regelwert-Wertauflöser bestimmt:

images/download/attachments/78256085/image2022-9-1_14-14-47-version-1-modificationdate-1662034487567-api-v2.png

ANMERKUNG◄ Die Wertzuweisung des Rückgabewerts aus dem Regelwert-Wertauflöser löst die gegebene Aufgabenstellung wesentlich eleganter als das eine Wenn Dann Sonst-Ereignisaktion mit zwei alternativen Instanzen der Setze Wert-Ereignisaktion im WENN- und DANN-Zweig könnte.

Komplexerer Anwendungsfall: Prüfergebnisse in Variablen speichern

Ein Zuordnungskriterium, das als "Logik-Baustein" verwendet wird, soll eine Adresse (s. Adressen) schrittweise prüfen und das Prüfergebnis je Schritt (soweit dieser Schritt ausgeführt wurde) in je einer Variable speichern. Diese Variablen mit den Prüfergebnissen können dann von nachfolgenden Zuordnungskriterien oder oder in einer Ereignisbehandlung, die sich auf das Zuordnungskriterium als Sub-Zuordnungskriterium in der "Prüfenden Regel" bezieht, ausgewertet werden, ohne dass die eigentliche Prüfung wiederholt werden muss.

Für einen übersichtlichen Anwendungsfall soll der "Logik-Baustein" nur zwei UND-verknüpfte Prüfungen beinhalten:

  1. Die erste Prüfung soll feststellen, ob das Feld "Kontonummer" (accNumber) in der zu prüfenden Adresse überhaupt ausgefüllt ist.

  2. Die zweite Prüfung soll - falls überhaupt eine "Kontonummer" angegeben ist - nachschlagen, ob ein Adressbucheintrag existiert, der sich auf diese "Kontonummer" bezieht.

Konfiguration: Ein Zuordnungskriterium XF_ACCOUNT_EXISTS wird wie unten beschrieben konfiguriert.

WICHTIG◄ Dieses Zuordnungskriterium verwendet den Prüfung vorhanden-Wertauflöser, der einen Zugriff auf die Datenbank von Lobster Data Platform / Orchestration impliziert. Solche Datenbankzugriffe sollten mit Rücksicht auf die Performance möglichst selten und nur gezielt angestoßen werden. Für unser Zuordnungskriterium kann dies über das Auswählen der Option Logikbaustein (s. Zuordnungskriterien als Logikbausteine) erreicht werden. Diese bewirkt, dass Die Auswertung des Zuordnungskriteriums nur stattfindet, wenn es direkt adressiert wird und nicht automatisch bei jedem Aktualisieren des Kontexts.

Das Zuordnungskriterium für die zweistufige Prüfung der Adresse wird wie rechts abgebildet konfiguriert:

  • Zuerst stellt eine Typprüfung sicher, dass als Eingabewert eine Adresse vorliegt. Ist dies nicht der Fall gilt die Regel ohne weitere Prüfungen als nicht bestanden.

  • Die innerhalb der UND-Verknüpfung nachfolgende Objekt-Feld-Regel prüft, ob das Feld "Kontonummer" (accountNumber) der Adresse gefüllt ist. Wie üblich erfolgt diese Prüfung über eine Objekt-Feld-Regel mit dem Ist leer-Matcher, der negiert wird, da das Ergebnis true lauten soll, wenn eine Kontonummer vorliegt.

    • Ausnahmsweise wird diese Prüfung als Regel in einem Regelwert-Wertauflöser abgewickelt, der seinerseits im Kontext einer (äußeren) Objekt-Feld-Regel steht, die den Rückgabewert aus dem Regelwert (links) mit dem statischen Wert true (rechts) vergleicht.

    • Der Regelwert-Wertauflöser ermöglicht das Speichern des Prüfergebnisses in einer Variablen über den verketteten Wert als Variable speichern-Wertauflöser.

  • Der zweite Schritt der Prüfung wird nach demselben Schema abgewickelt. Allerdings kommt hier im Regelwert-Wertauflöser eine Prüfung vorhanden-Regel zum Einsatz, die per Datenbankzugriff ermittelt, ob ein Adressbucheintrag existiert, dessen "Kontonummer" mit der "Kontonummer" der zu prüfenden Adresse übereinstimmt.

    • Das Ergebnis dieser Prüfung wird in der Variablen foundInAddressBook gespeichert.


images/download/attachments/78256085/image2022-9-1_16-49-21-version-1-modificationdate-1662043761920-api-v2.png images/download/attachments/78256085/image2022-9-1_17-2-40-version-1-modificationdate-1662044560229-api-v2.png

Für den Verlauf der Prüfungen durch dieses Zuordnungskriteriums ergibt sich folgende Kombinatorik:

Eingabewert:
Typ

Eingabewert:
Kontonummer

PrüfergebnisaccountSpecified

PrüfergebnisfoundInAddressBook

Zuordnungskriterium

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg keine Adresse

n/a

$null

$null

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg nicht bestanden

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg Adresse

<leer>

(Fehler) false

$null

<neu>

(Haken) true

(Fehler) false

<bekannt>

(Haken) true

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg bestanden

Wenn dieses Zuordnungskriterium als Sub-Zuordnungskriterium z. B. in einer Wenn Dann Sonst-Ereignisaktion eingebunden wird, sind bei Bedarf die folgenden vier unterschiedlichen Szenarien anhand der beiden Variablen unterscheidbar.

Auf dieser Grundlage soll eine Prüfung der Adressen für eine Liste von Benutzerkonten ausgeführt und das Prüfergebnis je Eintrag ausgegeben werden.

Laufzeitbeispiel:

Benutzer

Adresse

Kontonummer

Adressbucheintrag

Prüfbedingung

Ausgabe

Ima

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

17252

(Haken) gefunden

Zuordnungskriterium
XF_ACCOUNT_EXISTS → Regel bestanden!

images/download/attachments/78256085/image2022-9-2_10-17-30-version-1-modificationdate-1662106650469-api-v2.png

Karola

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

17051

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg nicht vorhanden

└SONST: Variable foundInAddressBook = false

Maik-Viktor

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

<leer>

n/a

└SONST: Variable accountSpecified = false

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg n/a
(Gastbenutzer)

<leer>

<leer>

n/a

└SONST
(ohne jede Bedingung)


Konfiguration:

images/download/attachments/78256085/image2022-9-2_14-52-33-version-1-modificationdate-1662123155130-api-v2.png

  • Im Wertauflöser für Einträge der Schleife (s. Für jeden Eintrag wiederholen (Schleife)) soll ein Sammle Werte-Wertauflöser ausgehend von einer gegebenen Liste von Long-Werten ("Benutzer-IDs") die Adressen der zugehörigen Benutzerkonten ermitteln. Je Eintrag wird dabei die folgende Verkettung von Wertauflösern abgearbeitet:

    • Eingabeobjekt (Typsicher): zum Umwandeln der Long-Werte in Benutzer.

    • Objekt-Feld-Wertauflöser für den Zugriff auf das Feld address im Benutzerkonto.

    • Standardwert-Wertauflöser, der falls keine Adresse gefunden wird den statischen Boolean-Wert false in die Liste einträgt.
      ANMERKUNG◄ Ein $null-Wert würde vom Sammle Werte-Wertauflöser sonst einfach weggelassen.

  • Die beiden Setze Wert-Ereignisaktionen dienen dazu, dass in jeder Iteration der Schleife die Variablen accountSpecified und foundInAddressBook auf "kein Wert" zurückgesetzt werden, bevor das Zuordnungskriterium XF_ACCOUNT_EXISTS ausgewertet wird.

  • Die Wenn Dann Sonst-Ereignisaktion prüft die vierfache Fallunterscheidung "von links nach rechts" durch, bis eine der Regeln zutrifft. Dann werden die Aktionen unterhalb ausgeführt. Im Beispiel wird jeweils eine Hinweis anzeigen (Popup)-Ereignisaktion mit einer spezifischen Meldung ausgeführt.

    • Die erste Bedingung prüft das Zuordnungskriterium XF_ACCOUNT_EXISTS als Sub-Zuordnungskriterium. Dabei werden über den Regelwert-Wertauflöser abhängig vom Verlauf die Variablen accountSpecified und foundInAddressBook belegt.

      • Das Sub-Zuordnungskriterium trifft genau dann zu, wenn beide Variablen den Wert $true enthalten. Dieser Fall kann daher ohne direkte Prüfungen für Variablen identifiziert werden.

    • Die zweite Bedingung prüft, ob die Variable foundInAddressBook den Wert false hat. Dieser Wert wird genau dann zugewiesen, wenn eine "Kontonummer" zum Nachschlagen vorliegt, die bisher in keinem Adressbuch enthalten ist.

    • Die dritte Bedingung prüft, ob die Variable accountSpecified den Wert false hat. Dieser Wert wird genau dann zugewiesen, wenn eine Adresse vorliegt und diese keine "Kontonummer" angibt.

    • Der vierte Zweig der Fallunterscheidung verwendet keine Bedingung. Er wird nur betreten, wenn keine der Bedingungen für andere Zweige greift. Das ist nur dann der Fall, wenn die Typprüfung für den Typ "Adresse" im Sub-Zuordnungskriterium scheitert, weil keine Adresse zum Prüfen vorliegt, sondern der Boolean-Wert false aus dem Standardwert-Wertauflöser im Wertauflöser für Einträge (s. oben).

Besonderer Anwendungsfall: Eine Regel im Kontext einer Suche auswerten

Der Regelwert-Wertauflöser kann auch nützlich sein, wenn die Bedingung einer Suche (s. Such API) das Prüfergebnis einer Regel oder einer Zuordnungskriteriums (als Sub-Zuordnungskriterium) einbeziehen soll.

Das folgende Beispiel demonstriert dies am Beispiel einer Konfiguration für die Bedingung einer Zeilenformatierung in einem Datengrid (s. Zeilenformatierung in Datengrids, Datengrid-Einstellungsübersicht).

Die Zeilenformatierung "HIGHLIGHT" soll im Datengrid einer Übersicht für Benutzer alle Benutzer hervorheben, für die die Firma der Session als "Besitzer" (ownerId) gilt.

Allerdings soll dieses Format nur dann greifen, wenn die Mobiles Endgerät?-Regel zu dem Schluss kommt, dass Lobster Data Platform / Orchestration auf einem mobilen Endgerät ausgeführt wird.

Innerhalb der Bedingung wird hier zunächst die konventionelle Prüfung per Feld Einschränkung für das Feld "Besitzer" (ownerId) ausgeführt, die mit der ID (id) der Firma der Session übereinstimmen soll.

Per UND-Verknüpfung folgt dann eine weitere Feld Einschränkung nach, die die Mobiles Endgerät?-Regel auswertet.

Ausschließlich auf der rechten Seite einer Feld Einschränkung kann dabei auf Wertauflöser zugegriffen werden, deren Rückgabewert im Kontext der Suche als statisch (also "für alle Zeilen gleich") gilt.

Über den Regelwert-Wertauflöser kann damit abhängig vom Ergebnis der Mobiles Endgerät?-Regel für die aktuelle Sitzung ein Boolescher Wert erzeugt werden, der wie im Bild zu sehen beispielsweise mit einem statischen Boolean Wert (als Literale Projektion) verglichen werden kann.

images/download/attachments/78256085/image2022-9-2_11-40-22-version-1-modificationdate-1662111622127-api-v2.png

HINWEIS◄ Es ist nicht möglich die Daten der "auszuwertende Zeile", auf die sich die Bedingung bezieht als Eingabewert an den Regelwert-Wertauflöser zu übergeben. Wenn die rechte Seite keine Projektion definiert, wird nur einmalig ein Wert aufgelöst, nämlich bevor die Suche startet.