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