修改关键字不起作用 Drools

Modify keyword not working Drools

我正在使用 Modify 关键字测试无限循环。

但不是重新触发规则。

规则 1:

rule "Entitle for promotion"

when
$i: EmployeeFinancialFact(rating==Rating.ONE.getRating())
then
  PromotionFact $promotion=new PromotionFact($i.getEmpID(),$i.getEmpName());
  insert($promotion);
end

规则 2:

rule "Print EmployeeFinancialFact name entitled for promotion"

when
$p:  PromotionFact()
then
modify($p) {setSentForApproval(true);}
end

我希望规则 2 的 RHS 会再次重新触发规则 2,但它只被触发了一次。

谁能告诉我原因。

第一个明显的问题是您是否确定您的规则确实得到了执行(听起来像一个愚蠢的问题,但它已经解决了 SO 中的许多问题)。

其他一些相关问题是:

  • 您使用的是哪个版本的 Drools?
  • PromotionFact 是 java class 吗?或您的 DRL 中定义的声明?
  • 您知道您的 kbase 中是否启用了 Property Reactive 吗?它曾经在 < 7 的版本中被禁用,但由于默认情况下启用了版本 7。

希望对您有所帮助,

通过添加以下行在 Drools 7 的 Kmodule.xml 中禁用 属性 反应:

<configuration>
  <property key="drools.propertySpecific" value="ALLOWED"/>
</configuration>