我需要在Drools 6.5中编写一个规则来检查是否存在类型为A的事件。还有一个名为B的第二个类,它有一个字段date
。
在检查事件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
符合要求,则无论如何都必须触发规则。
答案 0 :(得分:0)
这将为每次A会议触发所有B之后应该发生的时间限制。
$b: B()
not B(this after $b)
$a : A( this after $b )
如果您只想触发一次,对于任意数量的As,请在exists
前使用A
并省略绑定。