2014-10-09 95 views
1

我試圖解決簡單的任務: 1.我想要關聯3次事件的發生A,B,C以防萬一它們發生在最近10秒內。WSO2 cep:如何處理多個連接?

因此Siddhi只支持2個連接查詢,我認爲我無法解決它。在文檔有建議使用多個查詢,將它們連接在一起這樣

from A#window.time(10 sec) as a 
join B#window.time(10 sec) as b on a.id == b.id 
select a.id 
insert into tempA 

from tempA#window.time(10 sec) as a 
join C#window.time(10 sec) as c on c.id == a.id 
select * 
insert into finalResult 

但是,這會產生錯誤的結果,因爲在流TEMPA數據可以活得更長,時間窗口不對齊。

也許我缺少一些東西。有什麼建議? 感謝

回答

0

爲了解決這個問題,你可以試試下面的辦法:

  1. 對於每個進入的事件,添加時間戳。 (你也可以做到這一點在客戶端本身以及代替CEP這樣做的。)
  2. external time windows
  3. 使用以前添加時間戳字段作爲時間外的時間窗口參考更換時間窗口

由於在這種情況下時間戳將是全局的,並且所有外部時間窗口將根據它們進行操作,所以這應該正常工作。