Drools LHS检查可选事实

时间:2017-06-11 13:37:39

标签: drools drools-fusion

我需要在Drools 6.5中编写一个规则来检查是否存在类型为A的事件。还有一个名为B的第二个类,它有一个字段date

在检查事件A是否存在时,如果至少存在一个B类型的事件,A必须在最新的B.date之后发生,以便规则开火;否则,无论B事件是什么,规则都应该触发。

AB的两种事件类型都有自己的显式时间戳字段。

when
        // TODO if at least one event of type B exists, A must happen after max(b.date). Otherwise, the rule must fire regardless of any B
        $a : A( ... )
then
    ...

如何执行此检查?

编辑:如果工作记忆中没有BA符合要求,则无论如何都必须触发规则。

1 个答案:

答案 0 :(得分:0)

这将为每次A会议触发所有B之后应该发生的时间限制。

$b: B()
not B(this after $b)
$a : A( this after $b )

如果您只想触发一次,对于任意数量的As,请在exists前使用A并省略绑定。