Events 口水-重复事件和时间关系
一般来说,我正在为事件编写规则,这些事件(通过属性值)可以在任何时间以连续方式(每秒)发生。我只想在每小时的基础上发布匹配事件的规则 详情如下: 我想在首次插入事件(尚未存在)或插入事件时触发一条规则,并且当且仅当相同的事件已插入到工作内存中,但最新的事件至少在一小时前Events 口水-重复事件和时间关系,events,time,drools,Events,Time,Drools,一般来说,我正在为事件编写规则,这些事件(通过属性值)可以在任何时间以连续方式(每秒)发生。我只想在每小时的基础上发布匹配事件的规则 详情如下: 我想在首次插入事件(尚未存在)或插入事件时触发一条规则,并且当且仅当相同的事件已插入到工作内存中,但最新的事件至少在一小时前 编写此类规则的合理方法是什么,事件持续时间为24小时?您可以创建如下全局队列: global java.util.List eventQueue; 您还需要从java访问全局队列,因此只需使用: session.getGlob
编写此类规则的合理方法是什么,事件持续时间为24小时?您可以创建如下全局队列:
global java.util.List eventQueue;
您还需要从java访问全局队列,因此只需使用:
session.getGlobals();
session.setGlobal(name, value);
在此队列中保存事件和相关时间。然后检查该队列的每小时java代码,并根据时间戳执行规则。这不是糟糕的drools方法,而是直截了当的
rule X
when
$e : MyEvent() from entry-point "s"
not( MyEvent( this != $e, id == $e.id, this before[0s,1h] $e ) from entry-point "s" )
then
// $e arrived and there is no other event with the same
// id that happened during the last hour
end
将“id==$e.id”替换为您用来确定两个事件相互关联的任何约束。仅适用于附加的
而不是事件(在$e之后)