Окна слюни сработали более одного раза - PullRequest
0 голосов
/ 07 июня 2018

Я хочу вызвать правило, если в течение 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 раза, один раз для каждого соответствующего события.

Как добиться желаемого поведения?

...