Logische Verknüpfung

Die Verhaltensweise Logische Verknüpfung prüft ob eine bestimmte Bedingung erfüllt ist, die unter Bezug auf andere für dasselbe ausführenden Element konfigurierte Verhalten formuliert wird.


images/download/attachments/189432026/image-2024-9-30_12-39-4-version-1-modificationdate-1727692743308-api-v2.png


Der Logische Ausdruck definiert eine beliebig komplexe Logik auf der Basis der drei logischen Grundoperationen Konjunktion (UND), Disjunktion (ODER) und Negation (NICHT) in der unten ausgeführten Syntax.

Als Argumente dieser Funktionen werden Verhaltensnamen eingesetzt, die zur Laufzeit den Wahrheitswert (true/false) der zugehörigen Verhaltensweise liefern. Anders als bei einem direkten Aufruf des jeweiligen Verhaltens wird dabei nur ermittelt, ob deren Verhaltensweise die Aktionen bei "wahr" oder die Aktionen bei "falsch"ausführen würde. Tatsächlich werden keine Aktionen des ausgewerteten Verhaltens ausgeführt. Das Verhalten muss keinerlei Aktionen enthalten, um einen Wahrheitswert zurückzugeben.

  • Liefert der Logische Ausdruck insgesamt true, werden die Aktionen bei "wahr" ausgeführt.

  • Liefert der Logische Ausdruck insgesamt false, werden die Aktionen bei "falsch" ausgeführt.

Im Fehlerfall sind zwei Verläufe zu unterscheiden:

  • Entweder die Aktionen bei "falsch" werden mit einer Fehlermeldung als Daten ($input) ausgeführt, die z. B. per Hinweis anzeigen-Aktion ausgegeben werden kann. Danach läuft die Verhaltenskette weiter.

  • Oder die Verhaltenskette bricht insgesamt ab, etwa weil eine Fehlkonfiguration in einem der ausgewerteten Verhalten vorliegt. Dies ist ggf. über die Aktion In die Konsole loggen feststellbar. Oberflächlich ist das Verhalten nur wirkungslos.


images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Sofern die Verhaltensweise eines Verhaltens, das beim Auswerten des Logischen Ausdrucks geprüft wird, neben dem Prüfergebnis ("wahr"/"falsch") auch einen Rückgabewert in Form von Daten liefert, überschreibt dieser ggf. anliegende Eingabedaten ($input) mit sofortiger Wirkung. Gleichzeitig wird die Auswertung der im Logischen Ausdruck adressierten Verhalten unter Umständen abhängig vom Ausgang einer einzelnen Prüfung beendet, ohne dass alle Verhalten ausgewertet wurden (s. Details zur UND-/ODER-Verknüpfung unten). Welche Daten eine Logische Verknüpfung unter welchen Bedingungen effektiv als $input an die Aktionen weitergibt, muss unter Berücksichtigung dieser Abhängigkeiten sorgfältig geprüft werden. Es ist nicht grundsätzlich gewährleistet, dass vom Auslöser bzw. aus dem Aufruf des Verhaltens per Verhalten ausführen-Aktion übergebene Eingabedaten an die Aktionen weitergegeben werden.

Syntax für logische Operationen

Operation

Syntax

Verhalten

Auswerten eines Verhaltens

Verhalten

Gibt den Wert true an den Logischen Ausdruck zurück, falls im Verhalten die Aktionen bei "wahr" ausgeführt würden.
Gibt den Wert false an den Logischen Ausdruck zurück, falls im Verhalten die Aktionen bei "falsch" ausgeführt würden.

►HINWEIS◄ Eine fehlerhafte Konfiguration im ausgewerteten Verhalten (etwa das Fehlen eines erforderlichen Parameters) kann zum Abbruch der Auswertung führen.

Verneinung
(Negation)

!Ausdruck

Ermittelt den Rückgabewert von Ausdruck und wendet eine logische Verneinung an. Dabei wird true zu false und false zu true. Der Ausdruck kann ein Verhalten oder ein Aggregat von Verhalten durch Operationen sein. Das vorangestellte '!'-Symbol (Ausrufezeichen) ist als "NICHT(Ausdruck)" zu verstehen, ohne dass eine Klammersetzung notwendig ist. Der Ausdruck !OR(A|B|C) bedeutet damit sinngemäß "Weder A noch B noch C ist erfüllt.". Dies ist übrigens gleichbedeutend mit dem Ausdruck AND(!A|!B|!C).
►HINWEIS◄ Eine mehrfache Verneinung ist sinnlos, aber mit Klammersetzung technisch möglich: Der Ausdruck !!A sucht nach einem Verhalten mit dem Namen "!A", während !(!A) als doppelte Verneinung mit dem Ausdruck A gleichwertig ist.

UND-Verknüpfung
(Konjunktion)

AND( Ausdruck1 | Ausdruck2 | ... )

Innerhalb der UND-Verknüpfung werden die mit dem Pipe-Symbol "|" separierten Ausdrücke von links nach rechts ausgewertet.

  • Sobald die Auswertung eines Ausdrucks false ergibt, bricht die Auswertung ab und die UND-Verknüpfung gibt insgesamt false zurück.

  • Nur wenn alle Ausdrücke true zurückgeben, gibt die UND-Verknüpfung insgesamt true zurück.

ODER-Verknüpfung
(Disjunktion)

OR( Ausdruck1 | Ausdruck2 | ... )

Innerhalb der ODER-Verknüpfung werden die mit dem Pipe-Symbol "|" separierten Ausdrücke von links nach rechts ausgewertet.

  • Sobald die Auswertung eines Ausdrucks true ergibt, bricht die Auswertung ab und die ODER-Verknüpfung gibt insgesamt true zurück.

  • Nur wenn alle Ausdrücke false zurückgeben, gibt die ODER-Verknüpfung insgesamt false zurück.

►ACHTUNG◄ Ein fehlerhafter Ausdruck (z. B. mit einem Tippfehler in einem Verhaltensnamen) führt nur dann zu einer Fehlermeldung für das gesamte Verhalten, wenn der betreffende Ausdruck tatsächlich ausgewertet werden soll. Da die Auswertung von Ausdrücken innerhalb einer UND-Verknüpfung beim ersten false-Rückgabwert und in einer ODER-Verknüpfung beim ersten true-Rückgabewert beendet wird, bleiben fehlerhafte Ausdrücke in diesen Funktionen unter Umständen lange unentdeckt, um dann doch irgendwann als akute Fehlerquelle in Erscheinung zu treten:

  • Der Ausdruck AND(fast immer falsch|gibt es nicht) funktioniert, solange es ein Verhalten mit dem Namen "fast immer falsch" gibt und dieses false ergibt. Ob es ein Verhalten "gibt es nicht" gibt, ist dann fast immer unerheblich.

  • Der Ausdruck OR(fast immer wahr|gibt es nicht) funktioniert, solange es ein Verhalten mit dem Namen "fast immer wahr" gibt und dieses true ergibt. Ob es ein Verhalten "gibt es nicht" gibt, ist dann fast immer unerheblich.

Eine Logische Verknüpfung sollte daher intensiven systematischen Tests unterzogen werden, die auch ausgefallene Konstellationen hinsichtlich der Eingangsdaten abdecken.

►HINWEISE◄

  • Der Logische Ausdruck kann durch das Einfügen von Zeilenwechseln und Leerzeichen in eine übersichtliche Form gebracht werden. Ausdrücke und Verhalten werden vor einer Interpretation beidseitig getrimmt.

  • Verhaltensnamen sollte so gewählt werden, dass Konflikte mit der obigen Syntax möglichst ausgeschlossen sind. Leerzeichen innerhalb des Namens sind unproblematisch. Das Pipe-Symbol darf in einem Verhaltensnamen nicht enthalten sein, da es auch außerhalb von AND() und OR() als Trennzeichen gilt. Ein führendes Ausrufezeichen sollte nicht verwendet werden. Runde Klammern sind paarweise "( ... )" eingesetzt als Namensbestandteil verwendbar, etwa in einem Verhaltensnamen wie "Empfänger-Adresse (CNE)".

  • Sollte ein Verhaltensname innerhalb desselben ausführenden Elements nicht eindeutig sein, wird das Verhalten ausgewertet, das an oberster Position steht.

Beispiel

In einer Erfassungsmaske für Sendungen soll ein bestimmter Button genau dann erscheinen, wenn eine kritische Kombination bestimmter Merkmalen für den planmäßigen Zeitablauf gegeben ist.

Folgende Regeln müssen eingehalten sein, damit der "Zeitablauf" als machbar akzeptiert wird:

  • Das Abholdatum fix ist ein Pflichtfeld und muss ein valides Datum in der Zukunft enthalten. Zulässig sind (per Validierer) außerdem nur Werte die außerdem kleiner oder gleich dem Lieferdatum angefragt sind.

  • Das Lieferdatum angefragt muss ebenfalls ein Datum in der Zukunft enthalten.

  • Außerdem dürfen Abholdatum und Lieferdatum nur dann identisch sein, wenn ein Servicetyp ausgewählt ist, der als "Express-Service" gilt.

images/download/attachments/189432026/image2020-3-26_13-0-35-version-1-modificationdate-1727692737135-api-v2.png

  • Ist auch nur eine Regel verletzt, erscheint der Button Termine und/oder Servicetyp prüfen! als Hinweis.

Konfiguration:

Ob der Zeitablauf für eine Sendung als "machbar" gilt, soll eine Logische Verknüpfung ermitteln, die im Beispiel für einen Spaltenlayout-Container um die Datumsauswahl konfiguriert wurde. Das Verhalten muss per Verhalten ausführen-Aktion von allen involvierten Eingabefeldern aus aufgerufen werden, sooft dort eine Änderung erfolgt (s. Auslöser Geändert) .

Für denselben Container wurde außerdem für jede einzelne Regel ein Verhalten (ohne eigene Aktionen) eingerichtet:

  • Das Verhalten Abholdatum zulässig prüft per Element validieren, ob eine gültige Eingabe für Abholdatum fix vorliegt.

  • Das Verhalten Lieferung am selben Tag prüft per Berechnen, ob Abholdatum fix und Lieferdatum angefragt identisch sind.

  • Das Verhalten Express-Service prüft per Gefüllt mit auf Servicetyp "Express-Parcel" oder "Euro Express-Parcel".

Der Logische Ausdruck im Verhalten Zeitablauf machbar verknüpft diese Eingangsdaten wie folgt:

AND( Abholdatum zulässig
| OR( !Lieferung am selben Tag | Express-Service)
)

►ANMERKUNG◄ Zeilenwechsel und Leerzeichen wurde hier manuell zwecks Transparenz eingefügt.

Abhängig vom Ergebnis wird für den Button die Aktion Element anzeigen oder Element verbergen ausgeführt.

images/download/attachments/189432026/image2020-3-26_13-0-2-version-1-modificationdate-1727692737124-api-v2.png