КЭП отсутствие событий с использованием сиддхи

Добрый день.

Я пишу как архитектор центров компетенции 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

Мы хотели знать, будет ли эта функциональность включена в дорожную карту продукта и есть ли способ решения этой проблемы.

Спасибо и привет.


person user2750481    schedule 05.09.2013    source источник


Ответы (1)


Это правило будет срабатывать каждые 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);

конец

person Barry Knapp    schedule 28.05.2015