2012-03-14 95 views
1

事件A然後事件B。如果有沒有事件B 5分鐘後A則觸發規則。如何使用Drools Fusion處理延遲事件

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

對於實時事件工作正常,但在現實生活中你有延遲,例如,即將發生的事件。從一個界面。

實例:事件的時間:01:00(MM:SS),但在02:00以上規定受到觸發07:00,但商業邏輯將要求它在06:00

被觸發

我該如何處理這種要求?

回答

1

問題沒有一個答案,因爲存在不同的情況。您在這裏介紹的用例很容易修復,但只需使用外部加蓋的時間戳。假設你的事件包含一個屬性(例如日期時間),其中包含時間戳發生時的時間戳,你可以告訴引擎使用它作爲事件的時間戳。例如: -

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

在這種情況下,則發動機將採用01:00的事件時間戳和規則將在06:00解僱(假設沒有其它事件發生),即使事件1抵達02:00。

+0

我相信(並嘗試過)它不起作用。我無法找到關於這個工作的任何提示。文件說事情是不可改變的,'你不能改變過去'。 – javadude 2012-03-15 04:19:58