2013-09-05 43 views
3

下午好。CEP沒有使用siddhi的事件

我作爲建築師SW能力中心寫入公司Indra(www.indra.com)。

在這個領域通常與開放源代碼和商業CEP一起使用,直到現在我們一直使用Esper CEP,但是我們發現了GPL的問題。

在我們好奇嘗試Siddhi CEP之後,爲此我們開始了一個使用此CEP的項目。

問題是,我們發現我們無法識別包含所有CEP和項目需求的功能:檢測事件的缺失。

在艾斯波這可以用類似的查詢來實現:

 select a.id, count (*) from pattern [ 
    every a = Status -> (timer: interval (10 sec) and not Status (id = a.id) 
    ] Group by id 

    http://esper.codehaus.org/tutorials/tutorial/tutorial.html 

我們想知道的產品路線圖是否是將這一功能,如果現在有一個解決此問題的。

感謝和問候。

回答

0

該規則每隔10秒就會觸發一個新事件未到達。 Drools的CEP引擎必須設置爲流模式

declare EquipmentFact 
@role(event) 
@timestamp(lastNotifyTs) 
originalObject : Object  
equipmentInit : String 
equipmentNum : String 
    lastNotifyTs : java.util.Date 
    eventTs : java.util.Date 
    notifyCnt : int 
    maxWait : String 
end 

規則

$a: EquipmentFact(); 
not EquipmentFact(eventTs > $a.eventTs, equipmentInit == $a.equipmentInit, equipmentNum == $a.equipmentNum, this after [1s, 10s] $a) 

然後

System.out.println("####### FIRED ######### Second EquipmentFact event did not arrive 10s " + $a); 
retract($a); 
    EquipmentFact retE = new EquipmentFact(); 
retE.setEquipmentInit($a.getEquipmentInit()); 
retE.setEquipmentNum($a.getEquipmentNum()); 
retE.setEventTs($a.getEventTs()); 
retE.setNotifyCnt($a.getNotifyCnt()+1); 
retE.setLastNotifyTs(new Date()); 
insert(retE); 

「設備尚未在10秒內的時間內發送」