如何 select 来自 Drools 事件的 2 个不同属性

How to select 2 different attributes from an event in Drools

我正在尝试编写一个 drools 规则来检查两个事件是否从同一流发生。我有一个合规性规则 class,其中包含要与来自入口点的事件进行比较的逻辑(在工作内存中)。我只需要检测两个事件的发生,例如我想检测事件 A 发生和事件 B 发生之后。我用 drools 语法写了这个角色

$comrule : Comprules ( pattern == "response" , isBefore == false)  
Event  (task == $comrule.antecedent) from entry-point StoreOne  
Event (task == $comrule.consequent) from entry-point StoreOne

问题是这种技术不起作用。唯一有效的是我写这个

Event  (task == $comrule.antecedent) from entry-point StoreOne  
not Event (task == $comrule.consequent) from entry-point StoreOne

我阅读了 drools 文档,但找不到解决此问题的方法 任何帮助将不胜感激

检查两个事件是否按正确顺序发生的典型模式是这样的:

Comprules( pattern == "response", !isBefore, $a: antecedent, $b: consequent )
$one: Event( task == $a ) from entry-point StoreOne  
$two: Event( task == $b, this after $one ) from entry-point StoreOne

使用not测试是否存在事实,即$one到达后$two仍然不存在的情况。