2014-02-16 3 views
0

Мне нужно обработать ситуацию, когда меня уведомляют, когда в моей рабочей памяти в течение 30 секунд будут получены 2 разных факта. Затем я хочу, чтобы система удаляла факты из рабочей памяти после их обработки.Drools Правило для обработки двух разных фактов, вставленных в течение определенного времени

Например, я хочу получать уведомление, когда система видит логин от Боба, а затем он проверяет его электронную почту в течение 30 секунд.

Я знаю, что это звучит банально, однако это практический пример с доказательством концепции, и это для очень высокого уровня презентации.

Я попытался это:

rule "Bob Login Rule" dialect "java" 
when 
    Login(username == "bob") over window:time(30s); 
     UserAction (action == UserAction.CHECK_EMAIL) over window:time(30s) 
then 
    System.out.println("Bob logged in and checked his email"); 
end 

Спасибо заранее.

ответ

1

В этом случае вы знаете, что логин < проверяет электронную почту, но это может быть не всегда так.

$login: Login($uid: uid) // a user logs in 
$check: UserAction(uid == $uid, action == UserAction.CHECK_EMAIL, this after[0s,30s] $login) 

Доступны другие операторы, для которых не требуется < b.

+0

Еще раз ... вы правы !!! Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^