Drools窗口触发了一次以上

时间:2018-06-07 20:40:20

标签: java drools rule-engine drools-fusion

如果在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

事件中的字段propsMap<String, Object>

问题在于此规则被多次触发而不是一次。

例如,我插入4个事件,其中3个符合此规则,例如:他们有相同的EVENT_TYPE和EVENT_PLACE。

我希望该规则会被解雇一次,但实际上会发生火灾3次,每次符合条件的事件一次。

如何达到预期的行为?

0 个答案:

没有答案