【发布时间】:2015-12-23 10:44:59
【问题描述】:
我在使用 Drools 时遇到了问题。 我尝试从嵌套成员更新属性。更新似乎有效,但when子句不考虑。
我有 2 个 Obj 对象,共享同一个 Cpt 对象。
Cpt cpt = new Cpt();
Obj obj1 = new Obj("obj1");
obj1.setComposant("R2");
obj1.counter = cpt;
Obj obj2 = new Obj("obj2");
obj2.setComposant("R2");
obj2.counter = cpt;
kSession.insert(obj2);
kSession.insert(obj1);
我的规则定义为:
rule "R2"
when
m : Obj(composant == "R2" && counter.value == 0)
then
System.out.println(m.getName() + " " + m.getCounter().getValue());
m.getCounter().increment();
end
我期待 Obj1 匹配 when 子句,然后更新计数器的值(从 0 到 1)。所以 Obj2 不应该匹配 where 子句。 但事实上,它确实如此,即使显示如我所料:
obj1 0
obj2 1
谁能解释一下我做错了什么?
【问题讨论】: