Как обрабатывать отложенные события с Drools Fusion - PullRequest
1 голос
/ 14 марта 2012

Событие A , затем Событие B .Если через 5 минут после A нет события B, запускается правило.

when 
  time1:Event() from entry-point xx 
  not (Event(this after[ 0,5m ] time1) from entry-point xx)
then 
 ... 
end 

Для событий в реальном времени, которые работают нормально, но в реальной жизни у вас есть события, приходящие с задержкой, например.из интерфейса.

Пример: Событие A время: 01:00 (мм: сс), но полученное в 02:00 Выше правило сработает в 07:00, но бизнес-логика потребует его запуска в 06:00

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

1 Ответ

1 голос
/ 14 марта 2012

Нет единого ответа на проблему, так как существуют разные ситуации.Сценарий использования, представленный здесь, легко исправить, но просто с использованием временных отметок с отметками.Предполагая, что ваше Событие содержит свойство (например, datetime), которое содержит отметку времени, когда это произошло в источнике, вы можете указать движку использовать его в качестве отметки времени события.Например:

declare Event
    @role( event )
    @timestamp( datetime )
end

В этом случае движок будет использовать 01:00 в качестве метки времени события, а правило сработает в 06:00 (при условии, что никакого другого события не произошло), даже если event1 прибыл в 02:00.

...