這篇文章表明,加入一些事實類作爲嵌套規則的方式嵌套規則。 http://drools.46999.n3.nabble.com/How-can-I-nested-rules-td4020488.html#a4020681Drools的 - 用事實類
我想知道 - 有沒有保證,「年齡和性別的女性」,「懷孕」和「懷孕」「Pregnant2」之前之前執行? 據我注意到,在我的應用程序中總是這樣。但是,它是否記錄在Drools文檔的某處,還是僅僅是等待崩潰的卡片房子?
rule "Age and gender women"
when
$p : Person(p1 >= 12 && p2 = 1)
then
insertLogical(new CouldHaveBeenPregnant($p));
end
rule "Pregnant"
when
$p : Person(p3 > 1)
CouldHaveBeenPregnant(person == $p)
then
insertLogical(new HasBeenPregnant($p));
end
rule "Pregnant2"
no-loop
when
$p : Person(p4 <= P3)
HasBeenPregnant(person == $p)
then
$p.setStatus("OK");
update($p);
end
感謝您的幫助提前
編輯: 當我必須添加新的規則我的問題出現了,說:「沒有懷孕」,在那裏我必須做一些事情的時候人不在HasBeenPregnant (person == $ p)。推理原則有時並不奏效(如預期)。因爲有時候,「不懷孕」的規則會先被執行,然後事後證明這個人正在懷孕,即「懷孕」後來會變得真實。但「不懷孕」的結果已經運行。
因此,在任何建議如何克服呢?
據我所知,其中的規則進行測試的順序不應該的問題。當插入(或刪除或更改)與某些其他規則相關的事實時,將再次測試這些規則。 –