如何在滑动窗口中为下列条件编写drools规则?

时间:2014-02-26 09:21:32

标签: drools rules sliding-window

我是Drools-fusion的新手。我想写下以下条件的规则。

  1. 事件数据经常流入drools引擎,有两个名为“eventId”和“state”的属性。 例如: - "data":{"eventId":"evet123","state":1}
  2. 第一次活动结束时,它会存储在工作记忆中。
  3. 在第一个事件之后无论发生什么事件,该事件的状态检查都与前一个事件有关,并且前一个事件的状态是否为1且当前事件状态是2.因此在该条件下执行某个功能。当前事件由工作记忆中的上一个事件替换。
  4. Ex: - if(上一个事件状态是1 --->当前事件状态是2)然后调用函数

    注意: - eventId不是唯一的。它可能与之前的事件相同或不同。

    (可能是基于长度的滑动窗口在此场景中使用,但我不知道如何在规则中转换此请求。)

    请任何流氓专家指导我解决这个问题。

1 个答案:

答案 0 :(得分:0)

无论你说什么,但你所描述的是一系列奇怪的事件:第一个事件的状态为1,所有后续事件的状态为2。

rule match12
when
  $e1: Event( $id: id, state == 1 )
  $e2: Event( id == $id, state == 2 )
then
  retract( $e1 );
  modify( $e2 ){ setState( 1 ) }
end