2014-02-16 21 views
0

我需要處理的情況是,當我的工作記憶中收到兩個不同的事實時,我會在30秒內收到對方的通知。然後我希望系統在處理後從工作內存中刪除事實。Drools規則來處理在一定時間內插入的兩個不同的事實

例如,假設我想在系統看到來自Bob的登錄信息時收到通知,然後他會在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

再次......你統治!謝謝! –

相關問題