Слюни - повторные события и временные отношения - PullRequest
5 голосов
/ 11 декабря 2010

В общем, я пишу правила для событий, которые равны (по значениям атрибутов) событиям, которые могут происходить в любое время последовательно (каждую секунду). Я хочу запускать правила для совпадающих событий только на почасовой основе.

Более подробно: Я хочу запустить правило, когда событие вставляется в первый раз (еще не существует) ИЛИ, когда событие вставляется, и если и только если в рабочую память уже вставлены равные события, НО самое новое из них - не менее часа назад старый.

Каков разумный способ написания такого правила, если продолжительность события будет 24 часа?

Ответы [ 2 ]

1 голос
/ 09 августа 2012
rule X
when
    $e : MyEvent() from entry-point "s"
    not( MyEvent( this != $e, id == $e.id, this before[0s,1h] $e ) from entry-point "s" )
then
    // $e arrived and there is no other event with the same
    // id that happened during the last hour
end

Замените "id == $ e.id" любыми ограничениями, которые вы используете для определения двух событий, связанных друг с другом.

0 голосов
/ 06 августа 2012

Вы можете создать глобальную очередь следующим образом:

global java.util.List eventQueue;

Вам также необходимо получить доступ к вашей глобальной очереди из Java, поэтому просто используйте:

session.getGlobals();
session.setGlobal(name, value);

В этой очереди сохранитесобытие и связанное время.Затем проверьте почасовую форму Java-кода этой очереди и выполните правила на основе отметки времени.Это не плохой подход слюни, но это просто.

...