0

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

  1. 事件数据通过名为“eventId”和“state”的两个属性定期发送到drools 引擎。前任:-"data":{"eventId":"evet123","state":1}
  2. 当第一次事件发生时,它存储在工作记忆中。
  3. 在第一个事件之后,无论发生什么事件,该事件的状态检查与前一个事件,如果前一个事件的状态是 1,当前事件状态是 2。所以在这种情况下执行一些函数。并且当前事件被工作记忆中的先前事件替换。

例如:- if(Previous event state is 1 ---> Current event state is 2) then call function

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

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

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

4

1 回答 1

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
于 2014-02-26T12:23:15.000 回答