Drools:如何在检查工作内存中是否存在事实后插入事实

时间:2009-08-05 03:44:12

标签: java drools

我使用drools来验证对象。该对象还有一个getChildrenList()方法,该方法返回与此对象相关的子对象(主 - 详细信息关系)。

我对该对象进行了一些验证,然后我也要验证子对象,所以我使用以下规则将所有子对象也插入到工作内存中:

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

现在,如果已插入子项,如何确保不会触发此规则。我的意思是因为我修改了规则被重新启动的事实。我该如何防止这种情况?

由于

1 个答案:

答案 0 :(得分:2)

您可以尝试将此行添加到when条件,但我怀疑这不是“正确的”习惯用法:

not( Child(this == $ch) )