A rule is not executed

Symptoms

In Decision Designer, when you run a decision model, a rule is not executed.

Important: This troubleshooting topic does not apply to task models.

Causes

There can be different reasons for a rule not to execute, including the definition of the decision logic or the interaction policy you selected.

Another potential reason might be that an exception occurred because of unknown values in the rule condition. The following types of semantic exceptions can result in an unknown value:
  • ArithmeticException
  • NumberFormatException
  • NullPointerException
  • IndexOutOfBoundsException

Expressions in conditions that result in exceptions during their evaluation are treated as unknown values and are handled by the rule engine. The rule engine evaluates the overall rule conditions by using the following three-valued logic:

Three-valued logic

If the rule condition evaluates to true, despite unknown values in the condition expressions, the action of the then part is applied. If the rule condition evaluates to false, despite unknown values in the condition expressions, the action of the else part is applied. If the rule condition evaluates to unknown, because of unknown values in the condition expressions, the rule is not executed.

In the following example, if the status of the borrower is unknown, no rule action is executed.

if
   the status of Borrower starts with "duplicate"
then
   reject 'the loan' ;
   add "duplicate detected" to the messages of 'the loan' ;
else 
   add "no duplicate found" to the messages of 'the loan' ;

In the following example, if the status of the borrower is unknown and the comment of the loan contains the word duplicate, then the loan is rejected and a duplicate detected message is sent.

if 
   the status of Borrower starts with "duplicate" or the comment of 'the loan' contains "duplicate"
then
   reject 'the loan' ;
   add "duplicate detected" to the messages of 'the loan' ;
else 
   add "no duplicate found" to the messages of 'the loan' ;

However, if the status of the borrower is unknown and the comment is unknown, then no rule action is taken. The loan is not rejected and the message no duplicate found is not added to the loan.

In the following example, if the status of the borrower is unknown and the comment in the loan contains the word duplicate, neither the then nor the else actions are taken. In other words, the loan is not rejected and the message no duplicate found is not added to the message of the loan.

if 
   the status of Borrower starts with "duplicate" and the comment of 'the loan' contains "duplicate"
then
   reject 'the loan' ;
   add "duplicate detected" to the messages of 'the loan' ;
else 
   add "no duplicate found" to the messages of 'the loan' ;

For the loan to be rejected, both expressions must be true.