下午好。
我作为建筑师SW能力中心写入Indra公司(www.indra.com)。
在这个领域,通常使用CEP(开源和商业),在开源领域,直到现在我们一直使用Esper CEP,但我们发现GPL存在问题。
在我们好奇地尝试Siddhi CEP之后,我们已经开始了这个CEP的项目。
问题是我们发现我们无法识别包含所有CEP和项目需求的功能:检测到事件的缺失。
在Esper中,可以使用如下查询来完成:
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 :(得分:0)
此规则将每10秒触发一次较新的事件未到达。 Drools CEP Engine必须设置为STREAM模式
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
规则“设备尚未在10秒内发送”
当
$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);
结束