Drools LHS 检查可选事实
Drools LHS check against optional fact
我需要在 Drools 6.5 中编写一个规则来检查是否存在类型 A 的事件。还有第二个 class 名为 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
满足要求,则无论如何都必须触发规则。
这将为每个 A 触发它应该在所有 B 之后发生的时间限制。
$b: B()
not B(this after $b)
$a : A( this after $b )
如果您只想触发一次,对于任意数量的 A,请在 A
前面使用 exists
并省略绑定。
我需要在 Drools 6.5 中编写一个规则来检查是否存在类型 A 的事件。还有第二个 class 名为 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
满足要求,则无论如何都必须触发规则。
这将为每个 A 触发它应该在所有 B 之后发生的时间限制。
$b: B()
not B(this after $b)
$a : A( this after $b )
如果您只想触发一次,对于任意数量的 A,请在 A
前面使用 exists
并省略绑定。