Drools LHS根据可选事实进行检查

Drools LHS根据可选事实进行检查,drools,drools-fusion,Drools,Drools Fusion,我需要在Drools 6.5中编写一个规则,检查是否存在类型为a的事件。还有一个名为B的类,它有一个字段日期 在检查是否存在事件A时,如果至少存在一个类型为B的事件,则A必须发生在最新的B.date之后,才能触发规则;否则,无论发生任何B事件,都应触发规则 A和B的两种事件类型都有自己的显式时间戳字段 when // TODO if at least one event of type B exists, A must happen after max(b.date). Othe

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

在检查是否存在事件A时,如果至少存在一个类型为B的事件,则A必须发生在最新的B.date之后,才能触发规则;否则,无论发生任何B事件,都应触发规则

A和B的两种事件类型都有自己的显式时间戳字段

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
    ...
如何执行此检查


编辑:如果工作内存中不存在B,并且A满足要求,则不管怎样都必须触发规则。

这将为满足时间约束的每个A触发规则,该约束应在所有B之后发生

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

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

这使得规则的触发至少依赖于一个B的存在。我需要这个规则来激发工作内存中是否有任何Bs。添加另一个规则,您可以使用或要求不存在任何Bs和A模式而不受约束地组合LHS。我无法将此添加到答案中,因为您的问题没有这样说。谢谢您的回答。我编辑并澄清了这个问题。