Subject: RE: [rules-users] Synch Business Object / Working Memory
Date:
Fri, 11 Apr 2008 09:47:43 +0100
From: manstis1@ford.com
To:
rules-users@lists.jboss.org
I guess the example is a simplification as "c" (in RHS) has
not been bound to a fact.
Anyway, that aside, do you call "update" to ensure WM knows of
changes to facts otherwise properties need to be "time-constant" which in
your example they are not.
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 !