Wann wird eine Regel ausgeführt?

 

Allgemeine Kriterien

Eine Regel im EH&S Expert wird ausgeführt,

  • wenn sie noch nicht ausgeführt worden ist. Regeln werden kein zweites Mal ausgeführt. Mit dem Ablaufkontrollkommando RESET können Sie dieses Verhalten außer Kraft setzen.

Hinweis Hinweis

Der explizite Eingriff in den Regelwerkablauf mittels Enable/Disable-Kommandos kann dazu führen, daß Fakten bereits ausgeführter Regeln nachträglich geändert werden. Dies hat zur Folge, daß die Regel erneut ausgeführt wird.

Ende des Hinweises
  • wenn alle Fakten in der IF-Bedingung mit Daten belegt sind.

Ausnahmen:

  • Fakten, deren Wertbelegung explizit mittels IsNull() getestet werden soll.

  • Wenn in einer OR-Bedingung ein Teil TRUE ist, darf der andere NULL enthalten

  • wenn alle Aktionen im THEN-Teil der Regel (ToDo’s) ausführbar sind, d.h. wenn alle Fakten auf der rechten Seite der Zuweisungen mit Daten belegt sind.

Ausnahme: ToDo’s die nur direkte Zuweisungen der Art X:=Y machen, gelten auch als ausführbar, wenn Y den Wert NULL, d.h. keinen echten Wert hat.

  • wenn die IF-Bedingung logisch wahr ist.

  • wenn die Regel nicht explizit durch das Ablaufkontrollkommando DISABLE deaktiviert ist.

Die Auswertung ist beendet, wenn keine Regel mehr diesen Bedingungen genügt.

X := 1

Vorgabe: Die Fakten X und Y haben Daten, Z ist leer (NULL).

Y := 2

Z

RULE R1

Die Bedingung X=1 ist wahr. Somit wird die Regel ausgeführt und Regeln der Regelgruppe Gruppe1 werden deaktiviert.

IF X = 1

THEN DISABLE(GRUPPE1)

END

RULE R2 GROUPS GRUPPE1

Die Regel wurde durch die Regel R1 deaktiviert und kann daher nicht angewendet werden.

IF X > 0

THEN Z := 1

END

RULE R3

Diese Regel kann angewendet werden, da das leere Z nicht in einem komplexen Ausdruck auftritt.

IF TRUE()

THEN Y := Z

END

RULE R4

Regel kann nicht angewendet werden, da Z innerhalb des Ausdrucks Z + 1 ohne Wert ist.

IF TRUE()

THEN Z := Z + 1

END

RULE R5

Das leere Z kommt in der Bedingung vor, die Regel kann also nicht angewendet werden.

IF Z = 0

THEN Y := Z

END

RULE R6

Diese Regel kann angewendet werden, da das leere Z innerhalb der IsNull()-Funktion auftritt.

IF IsNull(Z)

THEN Z = X

END

RULE R7

Diese Regel kann nicht ausgeführt werden, da die Bedingung nicht wahr ist.

IF X > 10

THEN X := X + 1

END

Datenabhängige Regelausführung

Für die Reihenfolge der Regelausführung gilt die Strategie der Datenabhängigkeit. D.h., wenn eine Regel A nach den Kriterien noch nicht ausgeführt und nicht deaktiviert für ausführbar befunden wird, dann werden vor Prüfung der restlichen datenbezogenen Kriterien zunächst alle Regeln ausgeführt, die Werte von Fakten ändern können, die in A als Eingabedaten benutzt werden. Dies sind diejenigen Fakten, die in der Bedingung oder auf der rechten Seite von Zuweisungen vorkommen.

Die datenabhängige Regelausführung erfolgt rekursiv. D.h., wenn bei Prüfung von Regel A festgestellt wird, daß Regel A Daten von Regel B braucht, Regel B jedoch wiederum von in Regel C geänderten Daten abhängt, dann wird zunächst Regel C , dann Regel B und zuletzt Regel A ausgeführt.

Der Regeleditor zeigt Ihnen Abhängigkeiten, die zwischen Regeln bestehen über die folgende Farbkonvention an. Wählen Sie den gewünschten Präsentationsmodus über Anfang des Navigationspfads Debug Navigationsschritt Visualize Recursive Rule Dependencies. Ende des Navigationspfads

Farbe

Modus singlelevel dependency

Modus multilevel dependency

blau

selektierte Regel

selektierte Regel

rot

Regel, von der die selektierte Regel direkt abhängt

alle Regeln, von denen die selektierte Regel abhängt

grün

Regel, die von der selektierten Regel direkt abhängt

alle Regeln, die von der selektierten Regel abhängen

grau

Alle Regeln die nicht direkt mit der selektierten Regel in Zusammenhang stehen

Regel, die mit der selektierten Regel in keinerlei Zusammenhang stehen

Wenn bei dieser Abhängigkeitsprüfung festgestellt wird, daß die Suche wieder bei der Ausgangsregel ankommt, dann wird die Suche abgebrochen und mit der Ausführung der zuletzt identifizierten Regel begonnen, um eine Endlosschleife zu verhindern.

Der Regeleditor bietet Ihnen die Möglichkeit eine Prüfung auf zirkulare Abhängigkeiten durchzuführen. Wählen Sie hierzu Anfang des Navigationspfads Tools Navigationsschritt Check Circular Dependencies. Ende des Navigationspfads

Beispiel Beispiel

Eine datenabhängige Regelausführung könnte folgendermaßen aussehen:

Ende des Beispiels.

X := 1

Vorgabe: Die Fakten X und Y haben Daten, Z ist leer (NULL).

Y := 2

Z

RULE R1

Vor Prüfung der Bedingung dieser Regel sucht der EH&S Expert zunächst nach Regeln, die den Wert von X verändern können. X wird sowohl in der Bedingung als auch auf der rechten Seite einer Zuweisung verwendet.

IF X = 1

THEN Y := X

END

RULE R2

Diese Regel verändert X (X steht auf der linken Seite einer Zuweisung), hängt jedoch vom Wert von Z ab. Also wird nach Regeln gesucht, die Z verändern.

IF Z > 0

THEN X := 1

END

RULE R3

Diese Regel setzt den Wert von Z und hängt von keinen weiteren Eingabedaten ab. D.h., die Abhängigkeitsprüfung ist zu Ende. Der EH&S Expert führt R3 aus und danach R2 , da keine weiteren Regeln Z verändern können. Zum Schluß wird R1 ausgeführt, da nun der Wert von X feststeht.

IF TRUE()

THEN Z := 5

END

Explizite Abhängigkeit

Sie haben außerdem mehrere Möglichkeiten, den Ablauf der Regelausführung direkt zu beeinflussen (siehe Ablaufkontrolle der Regelausführung ).

Hinweis Hinweis

Die Reihenfolge der Regeln im Regelwerk ist somit nur sehr bedingt relevant.

Ende des Hinweises