在下列情况下,如何在滑动窗口中编写drools规则?
我是新来的口水融合者。我想写具有以下条件的规则在下列情况下,如何在滑动窗口中编写drools规则?,drools,rules,sliding-window,Drools,Rules,Sliding Window,我是新来的口水融合者。我想写具有以下条件的规则 事件数据通过两个名为“eventId”和“state”的属性定期进入drools引擎。 例如:-“数据”:{“eventId”:“evet123”,“state”:1} 当第一次事件发生时,它存储在工作记忆中 在第一个事件之后,无论发生什么事件,该事件的状态都与前一个事件一起检查,并且前一个事件的状态是否为1,当前事件的状态是否为2。在这种情况下,执行一些函数。当前事件替换为工作内存中的前一个事件 Ex:-如果(先前事件状态为1--->当前事件状态
“数据”:{“eventId”:“evet123”,“state”:1}
请任何drools专家指导我解决这个问题。不管你说什么,但你描述的是一系列奇怪的事件:第一个事件的状态为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
状态=2的数据无限地保留在工作记忆中?您是否希望每个对状态==1/2都发生这种情况,而不管eventId是什么你有任何规则代码吗?到目前为止你尝试了什么?啊,是的,你不能用另一个事实替换一个事实,但你可以收回一个事实。1。假设第一个事件的状态为1,第二个事件的状态为2,则满足规则条件。此规则仅适用于相同的eventID。当此规则满足时,第一个事件将被丢弃,第二个事件将成为第一个事件,因此具有相同id的新事件将与此新的第一个事件id进行比较。谢谢@laune。这对我有帮助。我还有另外一个困难,看看这个。