[rules-users] Are all predicates evaluated each time?

Rahul Phadnis rahul.phadnis at fatspaniel.com
Thu Apr 5 16:46:32 EDT 2007


I have the following rule in my DRL file

rule "inverteroff-evaluate-based-on-pvpower"
    # the if part
    when
        alertDefinition : Alert
($configID:alertConfigID) 
        alertCondition: AlertCondition(name ==
"InverterOff")
        context: EvaluationContext (
                     timeRight == true,
                     pvPower!= null, 
                     pvPower <= 0   
                 ) 
    then
        # what do we do if the rule evaluates to true
        log("Triggered inverteroff alert for
alertConfigID" + $configID);
       
alertDefinition.setState(AlertState.TRIGGERED);
        log("Context info:" + context);
end

I would like to know if I assert an EvaluationContext
for which timeRight == false, will the getPvPower()
method still be called ? (logically it shouldn't be
called since the "," separated conditions are "AND"
conditions)

>From my tests it seems like the getPvPower method is
called irrespective of the value of timeRight.

If that is the expected behaviour how can I improve my
rule definition to ensure that getPvPower isn't called
if it is not necessary.

Thank you,

Rahul Phadnis



More information about the rules-users mailing list