Hi,

I have two rules :

rule "rule 1 - 1"
   
    salience 90
    ruleflow-group "rfg1"
    when
        a : A(
            eComputed == "false",
            c < 15,
            d >= 75)       
    then
        c.setE(0);
end



rule "rule 1 - 2"

    salience 10
    ruleflow-group "rfg1"
    when
        a : A(
            eComputed == "false",
            c >= 15,
            d >= 75)       
    then
        c.setE(1);
end



and part of the corresponding business code :

public class A {

    ...

    public String getEComputed(){
       if(eComputed)
          return "true";
       else
          return "false";
    }

    ...

    public void setE(int e){
        this.e = e;
        eComputed = true;
    }

    ...

}



so, I expected that if the first rule is activated, the second won't be. But according to my tests, the two rule can be fired on the same object A.
While debugging, I noticed the getEComputed method was only called once. I suppose that I should write this :


rule "rule 1 - 1"
   
    salience 90
    ruleflow-group "rfg1"
    when
        a : A(
            eComputed == "false",
            c < 15,
            d >= 75)       
    then
        c.setE(0);
        c.setEComputed("true);
end



rule "rule 1 - 2"

    salience 10
    ruleflow-group "rfg1"
    when
        a : A(
            eComputed == "false",
            c >= 15,
            d >= 75)       
    then
        c.setE(1);
        c.setEComputed("true);
end

But I would prefer another solution. Thanks for help.


Plus de 15 millions de français utilisent Windows Live Messenger ! Téléchargez Messenger, c'est gratuit !