3

こんにちは。

私はアーキテクト SW Competence Centers として Company 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

製品ロードマップにこの機能を組み込むかどうか、およびこの問題の回避策があるかどうかを知りたいと考えていました。

感謝と挨拶。

4

1 に答える 1

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);

終わり

于 2015-05-28T13:11:05.217 に答える