Regelwert
Wertauflöser - Kurzfassung
Zweck: Wertet die konfigurierte Regel aus und liefert das Prüfergebnis als booleschen Wert (true/false).
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 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. |
|
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:
|
|
►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:
Die erste Prüfung soll feststellen, ob das Feld "Kontonummer" (accNumber) in der zu prüfenden Adresse überhaupt ausgefüllt ist.
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:
|
|
Für den Verlauf der Prüfungen durch dieses Zuordnungskriteriums ergibt sich folgende Kombinatorik:
Eingabewert: |
Eingabewert: |
PrüfergebnisaccountSpecified |
PrüfergebnisfoundInAddressBook |
Zuordnungskriterium |
|
n/a |
$null |
$null |
|
|
<leer> |
(Fehler) false |
$null |
|
<neu> |
(Haken) true |
(Fehler) false |
||
<bekannt> |
(Haken) true |
|
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 |
|
17252 |
(Haken) gefunden |
Zuordnungskriterium |
|
Karola |
|
17051 |
|
└SONST: Variable foundInAddressBook = false |
|
Maik-Viktor |
|
<leer> |
n/a |
└SONST: Variable accountSpecified = false |
|
|
<leer> |
<leer> |
n/a |
└SONST |
Konfiguration:
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. |
|
►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.