Agenda und Priorität
Um zu verstehen, wie die Geschäftsregel-Engine Regeln auswertet und Aktionen ausführt, müssen Sie die Konzepte von Agenda und Priorität verstehen.
Agenda
Die Agenda ist ein Zeitplan, der von der Engine dazu verwendet wird, Regeln für die Ausführung in eine Warteschlange zu stellen. Die Agenda existiert für eine Engine-Instanz und agiert auf der Basis einer einzelnen Richtlinie, nicht einer Reihe von Richtlinien. Wenn ein Fakt an den Arbeitsspeicher übergeben wird und die Bedingungen einer bestimmten Regel erfüllt sind, wird die Regel in der Agenda abgelegt und nach Priorität ausgeführt. Die Aktionen einer Regel werden der Reihe nach von oben nach unten ausgeführt. Anschließend werden die Aktionen der nächsten Regel in der Agenda ausgeführt.
Die Aktionen, die zu einer Regel gehören, werden als Block behandelt. Daher werden alle Aktionen ausgeführt, bevor zur nächsten Regel übergegangen wird. Es werden alle Aktionen in einem Regelblock unabhängig von anderen Aktionen im Block ausgeführt. Weitere Informationen zur Assertion finden Sie unter Engine Control Functions.
Das folgende Beispiel veranschaulicht die Funktionsweise der Agenda:
Regel1
IF
Fact1 == 1
THEN
Action1
Action2
Regel2
IF
Fact1 > 0
THEN
Action3
Action4
Der Fakt "Fact1", der einen Wert von "1" hat, wird an die Engine übergeben. Da die Bedingungen von Regel 1 und Regel 2 erfüllt sind, werden beide Regeln zur Ausführung ihrer Aktionen in die Agenda verschoben.
Arbeitsspeicher | Agenda |
---|---|
Fact1 (Wert=1) | Regel1 - Aktion1 - Aktion2 Regel2 - Aktion3 - Aktion4 |
Priority
Die Priorität für die Ausführung wird für jede einzelne Regel festgelegt. Der Wert für die Standardpriorität lautet für alle Regeln "0". Die Priorität kann weniger oder mehr als "0" betragen, wobei höhere Werte eine höhere Priorität kennzeichnen. Aktionen werden der Reihe nach ausgeführt, von der höchsten Priorität bis zur niedrigsten Priorität.
Das folgende Beispiel verdeutlicht, wie sich die Priorität auf die Ausführungsreihenfolge für Regeln auswirkt.
Regel 1 (Priorität = 0)
IF
Fact1 == 1
THEN
Discount = 10%
Regel 2 (Priorität = 10)
IF
Fact1 > 0
THEN
Discount = 15%
Die Bedingungen für beide Regeln sind erfüllt, Regel 2 wird jedoch zuerst ausgeführt, da sie eine höhere Priorität hat. Der endgültige Rabatt beträgt 10 Prozent, da er das Ergebnis der Aktion ist, die für Regel 1 ausgeführt wurde, wie in der folgenden Tabelle gezeigt.
Arbeitsspeicher | Agenda |
---|---|
Fact1 (Wert=1) | Regel2 Rabatt = 15% Regel1 Rabatt = 10% |