我是流口水融合的新手。我想编写具有以下条件的规则。
- 事件数据定期发送到流口水引擎,其中包含名为"eventId"和"state"的两个属性。例如:-
"data":{"eventId":"evet123","state":1}
- 当第一次事件发生时,它存储在工作内存中。
- 在第一个事件之后,无论发生什么事件,该事件的状态都会与前一个事件进行检查,以及上一个事件的状态是否为 1,当前事件的状态是否为 2。 所以在这种情况下执行一些函数。 和当前事件替换为工作内存中的上一个事件。
例如:- if(上一个事件状态为 1 --->当前事件状态为 2)则调用函数
注意:- 事件 ID 不是唯一的。它可能与以前的事件相同或不同。
(可能在此场景中使用基于长度的滑动窗口,但我不知道如何在规则中转换此要求。
请任何流口水的专家指导我解决这个问题。
不管你怎么说,但你所描述的是一个奇怪的事件序列:第一个事件的状态为 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