Слюнявые временные правила

Я новичок в Drools. Здесь я пытаюсь создать уведомление, если процесс выполняется дольше некоторого времени, скажем, 5 минут.

Для достижения вышесказанного я пишу следующий код в файле DRL. Но, похоже, это не работает.

drl-файл

declare Message
  @role(event) 
end 

rule "RULE 3" 
 when
   $message: Message(msgtext == "1st message") over window:time( 5m ) from entry-point entryone
 then
    System.out.println("RULE 3 (after 5 min of message event started): " +     $message.getMsgtext());
 end

В приведенном выше файле .drl у меня объявлено событие с именем Message. Правило проверяет, является ли msgtext 1st message, и выполняется ли оно в течение 5 минут - если это так, я должен создать уведомление. В этом примере я просто печатаю результат.

Заранее спасибо. Я ценю вашу помощь.


person user2128234    schedule 03.03.2013    source источник


Ответы (1)


Несколько вещей, чтобы проверить,

  • Заключите имя точки входа в кавычки.
  • Работает ли это без ограничения по времени (т.е. только сообщение: Message(msgtext == "1st message")
  • Обратите внимание, это проверяет, было ли добавлено сообщение «1-е сообщение» в течение последних 5 минут.
  • Убедитесь, что вы находитесь в режиме потоковой передачи

-hth

person eze    schedule 11.03.2013
comment
Большое спасибо за ваш ответ. Я решил эту проблему, используя таймер (int: 5m) вместо скольжения окна. - person user2128234; 14.03.2013