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之后)