【发布时间】:2011-12-06 22:23:26
【问题描述】:
我对流口水有一个奇怪的问题:
我有以下规则:
rule "is my dog a baby?"
ruleflow-group "dog"
salience 10
when
dog : Dog(age <1 )
then
dog.setIsBaby(true);
end
rule "baby dog"
ruleflow-group "dog"
salience 9
when
myData : MyData( myDog.isBaby() == false)
then
System.out.println(myData.getMyDog().getIsBaby());
end
我在会话中插入 myData 和 myData.getMyDog(),其中 myData.getMyDog.isBaby==false
第一条规则被触发,我的狗被设置为婴儿。然后第二个被触发,甚至它打印 true 。(即使条件是 false)
当我在触发所有规则后进行测试时,myData 中的 myDog 被设置为婴儿。
我在这里做错了什么?为什么会触发第二条规则?是会话中的问题(在我的情况下是有状态的)吗?
我认为我需要说我在某处修改了 myData:myDog,但我不确定在哪里。
希望我的问题很清楚,如果不告诉我。
【问题讨论】: