I am new to Drools 3. My DRL dile is compiled and the test program runs well, 
however, the result is NOT my expectation. According to the input, it should 
output "Result = error1", but it print NOTHING. 

It works if I change lines <1> and <2> of the drl file to: 
ICoverage(healthPlan!="plan2"). So I guess the problem should come from 
"RuleParam(p:healthPlan)". I have checked the documentation of Drools 3 and the 
testing code in 
http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/not_with_bindings_rule_test.drl.
  But I didn't find out the reason.

Does anybody know why? The following is my source code that runs on Drools3 RC2.

Thanks a lot. 

Liang

===========================================================================================

My drl file:
-------------------------------------------------------------------------------------------
package gov.sc.eip.rules;
#generated from Decision Table
import java.lang.String;
 import gov.sc.eip.model.ICoverage;
import gov.sc.eip.helper.IConstants;
import gov.sc.eip.rules.test.RuleParam;

#From row number: 14
rule "HealthRules_14"
        
        salience 65522
        when
                RuleParam(changeReason=="MA") || RuleParam(changeReason=="CM")
                RuleParam(healthPlan!="blank") && 
RuleParam(healthPlan!="refused") 
<1>             RuleParam(p:healthPlan)
<2>             ICoverage(healthPlan!=p)
        then
                System.out.println("result = " + "error1");
end
---------------------------------------- drl end 
------------------------------------------

Snippet of Test program
-------------------------------------------------------------------------------------------
                ICoverage coverage = new Coverage();

                //paremeter
                RuleParam params = new RuleParam();
                params.setChangeReason("MA");
                params.setHealthPlan("plan2");

                //ICoverage object
                coverage.setHealthPlan("plan1");        
                
                t.engine = t.ruleBase.newWorkingMemory(); 
                t.engine.assertObject(params);
                t.engine.assertObject(coverage);

                t.engine.fireAllRules();
---------------------------------------------------------------------------------------------


Reply via email to