2010-12-11 26 views
5

一般來說,我正在編寫相同(按屬性值)事件在任何時間以連續方式(每秒)發生的事件的規則。我只想每小時發一次匹配事件的規則。流口水 - 重複的事件和時間關係

更多詳細信息: 我想在第一次插入事件(尚不存在)時觸發規則,或者當插入事件並且當且僅當等於事件已經插入工作存儲器時才觸發規則BUT其中最新的是至少一個小時前的舊版本。

什麼是寫這種規則的一種合理的方式,採取事件持續時間將是24H?

回答

0

您可以創建一個全球性的隊列是這樣的:

global java.util.List eventQueue; 

你還需要訪問從Java全局隊列,所以只需使用:

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

在這個隊列中保存的事件和相關時間。然後每小時檢查這個隊列的java代碼,並根據時間戳執行規則。這不是可憐的流口水的方法,但很簡單。

1
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」。