2009-08-05 82 views
4

我正在使用Drools來驗證對象。該對象還有一個getChildrenList()方法,它返回與此對象相關的子對象(主 - 關係關係)。Drools:如何在檢查工作內存中是否存在後插入事實

我做一些驗證的對象,然後我要驗證的子對象一樣,所以我插入所有子對象以及到工作內存使用以下規則:

rule "Insert Children" 
    when 
      $parent : Parent (eval(childrenList != empty)) 
        $ch : Child() from $p.childrenList 
    then 
      insert($ch); 
    end 

現在如果孩子已經插入,我怎麼能確保這個規則不會被解僱。我的意思是因爲我修改了一些事實,規則被重新啓動。我怎樣才能防止呢?

感謝

回答

2

你可以嘗試添加此行到when條件,但我懷疑這是不是「正確」的成語:

not(Child(this == $ch)) 
+0

沒有,這似乎很好 - 做這樣的事情。或者你可以使用一個流程組或其他東西來確保你只在前面做這個... – 2009-08-05 23:34:43