日期比较规则进入无限循环

时间:2017-10-23 07:30:54

标签: date comparison drools

我正在尝试执行下面列出的一组5条规则 -

让我们说有两个实体 - Entity1和Entity 2。 Entity1包含3个日期类型变量 - Date1,Date2,Date3 Entity2包含日期类型变量 - Date4

  1. 规则1 - 如果Date1> Date2,然后抛出错误信息
  2. 规则2 - 如果Date2> Date3,然后抛出错误信息
  3. 规则3 - 如果日期3< Date4,然后抛出错误信息
  4. 规则4 - 如果Date1>今天的日期,然后抛出错误信息
  5. 规则4 - 如果日期3<今天的日期,然后抛出错误信息
  6. 过了一会儿,我注意到日志正在增长,系统内存不足。

    进一步挖掘我在org.drools包上启用了TRACE,发现规则是循环而不是停止。

    我正在使用Drools Workbench 7.2.0 Final

    请建议如何处理此事。

    修改 - 添加了DRL文件DRL

    的片段

1 个答案:

答案 0 :(得分:0)

只要执行一个modify( $passport ),所有匹配LHS的规则都可能被重新启动。无循环仅阻止修改完成的规则​​;它不会阻止循环超过两个或更多规则。

抑制这种循环的最佳方法是在所有规则中添加一个约束,该约束检测修改何时完成,例如

Passport( response == null, ... )