Verknüpfung

Regeltypen - Kurzfassung

Der Regeltyp "Verknüpfung" definiert eine logische Verknüpfung für die booleschen Rückgabewerte mehrerer anderer Regeln.

Der Regeltyp "Verknüpfung" definiert eine logische Verknüpfung für die booleschen Rückgabewerte mehrerer anderer Regeln.

Im Unterschied zu den meisten anderen Regeltypen werden Verknüpfungen im Regeleditor nicht durch eine explizite Auswahl im Kontextmenü hinzugefügt, sondern implizit erstellt, wenn eine bestehende Regel-Konfiguration erweitert wird.

Durch die Auswahl der Einfügeposition für eine neue Regel wird dabei einer der folgenden Verknüpfungstypen verwendet:

Verknüpfungstyp

Symbol

Einfügeposition

Logik

UND-Verknüpfung (CONJUNCTION)

<AND>

oben oder unten

Eine UND-Verknüpfung gilt als erfüllt, wenn sämtliche direkt enthaltenen Regeln erfüllt sind.

ODER-Verknüpfung (DISJUNCTION)

<OR>

links oder rechts

Eine ODER-Verknüpfung gilt als erfüllt, sobald irgendeine der direkt enthaltenen Regeln erfüllt ist.

In Verbindung mit dem ebenfalls implizit anwendbaren Regeltyp für die Negation (s. Nicht-Regel) können mit diesen beiden Verknüpfungstypen beliebig komplexe Logiken aufgebaut werden.

Das folgende Beispiel definiert ein "Aggregat" aus insgesamt 5 Regeln, darunter je eine UND- und eine ODER-Verknüpfung:

images/download/attachments/201666241/image-2025-3-31_13-36-23-version-1-modificationdate-1743420982992-api-v2.png

  • Das hier definierte Zuordnungskriterium ist genau dann erfüllt, wenn als Bezugsobjekt eine Eigener Entitätstyp vom Typ "Tour" ODER "Stop" vorliegt UND diese seit Beginn des aktuellen Kalendertags geändert wurde.

  • Mathematisch präzise lässt sich dieses Aggregat nur unter Verwendung von Klammern beschreiben: ( (Typ ist "Tour") \/ (Typ ist "Stop") ) /\ (Änderungsdatum ≥ "Anfang heute").

  • Das Schema im Regeleditor (s. Bild) visualisiert die Anordnungsbeziehung diese Logik auch ohne Klammersetzung eindeutig, soweit die entsprechenden Regeln weit genug "aufgeklappt" sind.

In der XML-Struktur für das obige Konfigurationsbeispiel erscheinen die verwendeten Verknüpfungen als Elemente des Typs <core:RuleJunction>. Die Hierarchie der verwendeten Regeln wird dabei durch die Einrückung und Verschachtelung unterstrichen:

<?xml version="1.0" encoding="UTF-8"?>
<core:RuleJunction xmlns:core="CORESYSTEM" junctionType="CONJUNCTION">
<core:RuleJunction junctionType="DISJUNCTION">
<core:CheckTypeRule type="custom.Tour" isCollectionOf="false" checkNullValue="false"/>
<core:CheckTypeRule type="custom.Stop" isCollectionOf="false" checkNullValue="false"/>
</core:RuleJunction>
<core:EntityPropertyRule>
<core:CompareableMatcher type="GREATER_OR_EQUALS_THAN">
<core:DateTimeValue type="START_TODAY"/>
</core:CompareableMatcher>
<core:PropertyResolver property="lastModified" expectedType="java.sql.Timestamp"/>
</core:EntityPropertyRule>
</core:RuleJunction>