Show TOC

 When Is a Rule Executed?

General Criteria

A rule is executed in the EH&S Expert under the following conditions:

  • It has not yet been executed. Rules are not executed for a second time. You can disable this system behavior by using the process control command RESET .

Note Note

Explicitly intervening in the processing of a set of rules by means of Enable and Disable commands can lead to facts of rules that have already been executed being subsequently changed. This results in the rule being executed again.

End of the note.
  • All facts in the IF condition have been filled with data.

Exceptions:

  • Facts whose values are to be tested specifically using IsNull() .

  • If one part is TRUE in an OR condition, the other can contain zero.

  • All activities in the THEN part of the rule (ToDos) can be executed, or in other words, if all facts to the right of the assignments are filled with data.

Exception: ToDos that only make direct assignments of the kind X:=Y can also be executed if Y has the value zero, or in other words, has no real value.

  • The IF condition is logically true.

  • The rule has not been explicitly deactivated using the process control command DISABLE .

The system finishes analyzing whether rules are to be executed when no more rules fulfill these conditions.

Example Example

End of the example.
 

X := 1

Default: Facts X and Y have data, Z is empty (null).

 

Y := 2

 

Z

 

RULE R1

The condition X=1 is true. The rule is therefore executed and the rules of rule group Group1 are deactivated.

   

IF X = 1

   

THEN DISABLE(GROUP1)

 

END

 

RULE R2 GROUPS GROUP1

The rule was deactivated by rule R1 and can therefore not be applied.

   

IF X > 0

   

THEN Z := 1

 

END

 

RULE R3

This rule can be applied as the empty Z does not appear in a complex expression.

   

IF TRUE()

   

THEN Y := Z

 

END

 

RULE R4

Rule cannot be applied because Z has no value within the expression Z + 1.

   

IF TRUE()

   

THEN Z := Z + 1

 

END

 

RULE R5

The empty Z is part of the condition and the rule therefore cannot be applied.

   

IF Z = 0

   

THEN Y := Z

 

END

 

RULE R6

This rule can be applied as the empty Z appears within the IsNull() function.

   

IF IsNull(Z)

   

THEN Z = X

 

END

 

RULE R7

This rule cannot be executed because the condition is not true.

   

IF X > 10

   

THEN X := X + 1

 

END

Data-Dependent Rule Execution

The strategy of data dependency applies to the sequence in which rules are executed. This means that if rule A can be executed according to the criteria not yet executed and not deactivated , before checking the other criteria relevant to the data, the system first executes all the rules that could change the value of facts that are used in A as input data. These facts are those that appear in the condition or to the right of assignments.

Data-dependent rule execution is performed recursively. In other words, if when checking rule A the system determines that rule A requires data from rule B , but rule B is dependent on data changed in rule C , then rule C is executed first, followed by rule B , and then rule C .

The rule editor shows you the dependencies that exist between rules using the following color conventions. Choose the required presentation mode under Start of the navigation path Debug Next navigation step Visualize Recursive Rule Dependencies. End of the navigation path

Color

Single-Level Dependency Mode

Multilevel Dependency Mode

Blue

Selected rule

Selected rule

Red

Rule on which the selected rule depends directly

All rules on which the selected rule depends

Green

Rule that depends directly on the selected rule

All rules that depend on the selected rule

Gray

All rules that have no direct connection to the selected rule

Rule that has no connection to the selected rule

When performing this dependency check, if the system determines that the search ends back in the starting rule, the search is terminated and the system begins with the execution of the last rule to be identified, thus avoiding an endless loop.

The rule editor gives you the option of checking for circular dependencies. To do this, choose Start of the navigation path Tools Next navigation step Check Circular Dependencies. End of the navigation path

Example Example

Here is an example of data-dependent rule execution:

End of the example.
 

X := 1

Default: Facts X and Y have data, Z is empty (null).

 

Y := 2

 

Z

 

RULE R1

Before checking the condition of this rule, the EH&S Expert first searches for rules that could change the value of X. X is used not only in the condition, but also to the right of an assignment.

   

IF X = 1

   

THEN Y := X

 

END

 

RULE R2

This rule changes X (X is on the left of an assignment), but X is dependent on the value of Z. Therefore the Expert searches for rules that change Z.

   

IF Z > 0

   

THEN X := 1

 

END

 

RULE R3

This rule sets the value of Z and is not dependent on any other input data. In other words, the dependency check has finished. The EH&S Expert executes rule R3 and then rule R2 as no further rules can change Z. Finally rule R1 is executed as the value of X is now established.

   

IF TRUE()

   

THEN Z := 5

 

END

Explicit Dependency

You can also directly influence the rule execution process in other ways (see Control of the Rule Execution Process ).

Note Note

The sequence of rules in the set of rules is therefore only relevant to a certain extent.

End of the note.