I am building my app’s rules from decision tables using Drools 4.0.7.

At one point, I expect a particular rule to fire but it never does. The rule originally was constrained to the presence of a POJO to store the results of the rule’s evaluation that is as yet not evaluated and a POJO that containing the data to be evaluated. While trying to diagnose why it never fires, I have reduced the constraints to the presence of the POJO results container. It still doesn’t fire.

 

Excerpts from the initialization and evaluation decision tables (compiled to DRL):


# Construct DecisionPoint container to hold results of evaluation

#From row number: 53

rule "Init Plus 5V PS Overtemp"

     

      salience 65484

      no-loop true

      ruleflow-group "Initialize Testpoint Groups"

      when

      then

            subtestName = "Fault Sum";

            ruleName = "Plus 5V PS Overtemp"; serviceProvider.create("DecisionPoint",ruleName);

            dsl.addDebugString("row called " + "IN_52");

end

 

# Record that  +5V PS Overtemp condition exists in DecisionPoint object

#From row number: 26

rule "Plus 5V PS Overtemp Set"

     

      salience 65510

      no-loop true

      ruleflow-group "PS Overtemp"

      when

            outputDecision: DecisionPoint(name == "Plus 5V PS Overtemp")

      then

            subtestName = "Fault Sum";

            ruleName = "Plus 5V PS Overtemp";

            ID = "PASSED";

modifyRetract(outputDecision);

outputDecision.setEvaluation(ruleName, ID);

modifyInsert(outputDecision);

            dsl.addDebugString("row called " + "DE_26");

end

 

Enabling listeners for working memory updates and ruleflow transitions, I see that the container is built and added to memory but is not found when the PS Overtemp ruleflow group is activated.

 

Sep 28, 2009 1:52:49 PM com.lmco.orts.equipmentFDFI.controller.rules.engine.RulesHelper contineStatefulRunWithMoreInputs

INFO: in  continue stateful run (obj). class com.lmco.orts.equipmentFDFI.controller.rules.data.DecisionPoint Plus 5V PS Overtemp EV_NOT_EVAL

Sep 28, 2009 1:52:49 PM com.lmco.orts.equipmentFDFI.controller.rules.data.DecisionPoint getPassed

INFO: [Plus 5V PS Overtemp] passed == false

Sep 28, 2009 1:52:49 PM com.lmco.orts.equipmentFDFI.controller.rules.engine.RulesHelper$2 objectInserted

INFO: ~~~~~~~~~~~~~workingmemory Inserted:  DecisionPoint: [Plus 5V PS Overtemp] EV_NOT_EVAL

row called IN_52

 

 

Sep 28, 2009 1:52:57 PM com.lmco.orts.equipmentFDFI.controller.rules.engine.RulesHelper$1 ruleFlowGroupActivated

INFO: RFG Activated: PS Overtemp

Sep 28, 2009 1:52:57 PM com.lmco.orts.equipmentFDFI.controller.rules.engine.RulesHelper$1 ruleFlowGroupDeactivated

INFO: RFG Deactivated: OT Fault Sum

Sep 28, 2009 1:52:57 PM com.lmco.orts.equipmentFDFI.controller.rules.engine.RulesHelper$1 ruleFlowGroupActivated

INFO: RFG Activated: Report Fault Sum Faults

Sep 28, 2009 1:52:57 PM com.lmco.orts.equipmentFDFI.controller.rules.engine.RulesHelper$1 ruleFlowGroupDeactivated

INFO: RFG Deactivated: PS Overtemp

 

It is probably something obvious, but I am so close to it that I can’t see the forest for the trees.

J. Matthew Wicks

(856) 359-1115