3
我在Drools 4.0.7中遇到了一些奇怪的行为,但也许这只是因为我不明白Drools是如何工作的。假设有一个类“A”,它有一个名为“property”的属性。Drools撤回导致规则不起火
作为事实,我有以下A的列表: A1,属性= 123 A2,属性= 345 A3,属性= 123
我有两个规则如下:
rule "Rule 1 - Remove all A's that have property set to 123"
salience 1000
lock-on-active true
when
$listOfAs : ArrayList collect(A(property == "123"))
then
for (Object a: $listOfAs) {
retract (a)
}
end
rule "Rule 2 - Do stuff with remaining A's"
salience 900
lock-on-active true
when
$listOfAs : ArrayList collect(A())
then
...
end
我的理解是“规则1”将删除A级属性为123的事实。当它到达“规则2”时,“listOfAs”不应该只有一个A(即属性被设置为“345”)。我注意到的是,即使我假设仍然有一个“A”对象没有被收回,“规则2”根本不会执行。如果我注释掉“收回”,它会执行“规则2”罚款。
我错过了关于这些规则的工作吗?
谢谢。 Justin
你让它工作?我正在观察Drools 5.4中的类似行为。 – 2013-02-28 01:23:26