如果在10秒钟的窗口内同一个地方发生了两个相同类型的事件,我想触发规则。
我有以下规则:
rule "trigger if there were more then 2 events of same type in same place"
when
$event1: Event($props : props, $props.get("EVENT_TYPE") == "FOO_TYPE", $props.containsKey("EVENT_PLACE"))
$eventPlace1: String() from $props.get("EVENT_PLACE")
$events: List(size > 2) from collect(Event($props2 : props,
$props2.get("EVENT_TYPE") == "FOO_TYPE",
$props2.containsKey("EVENT_PLACE"),
$props2.get("EVENT_DATE") == $eventPlace1
) over window:time(10s))
then
System.out.println("rule triggered, the events are: " + $events);
end
事件中的字段props
为Map<String, Object>
。
问题在于此规则被多次触发而不是一次。
例如,我插入4个事件,其中3个符合此规则,例如:他们有相同的EVENT_TYPE和EVENT_PLACE。
我希望该规则会被解雇一次,但实际上会发生火灾3次,每次符合条件的事件一次。
如何达到预期的行为?