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
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.
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 | ||
IF X = 1 | |||
THEN DISABLE(GRUPPE1) | |||
END | |||
RULE R2 GROUPS GRUPPE1 | Die Regel wurde durch die Regel | ||
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
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
Beispiel
Eine datenabhängige Regelausführung könnte folgendermaßen aussehen:
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 | ||
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
Die Reihenfolge der Regeln im Regelwerk ist somit nur sehr bedingt relevant.