それぞれが次のプロパティを持つ一連のイベントがあります。
public class Event {
private String id;
private String src;
private String dst;
}
さらに、EPL と Esper でモデル化したい一連の階層またはネストされたルールがあります。各ルールは、そのすべての親ルールがすでにアクティブになっている場合にのみ適用する必要があります (それらすべてに対して一致するインスタンスが発生しました)。例えば:
2 events or more with the same src and dst in 10 seconds
+ 5 or more with src, dst the same as the src, dst in the above rule in 20s
+ 100 or more with src, dst the same as the src, dst in the above rules in 30s
このルール階層の各レベルに対応するすべてのイベント インスタンスを取得します。たとえば、次のイベントを考えてみます。
id ---- source -------------- destination ---------------- arrival time (second)
1 192.168.1.1 192.168.1.2 1
2 192.168.1.1 192.168.1.2 2
3 192.168.1.1 192.168.1.3 3
4 192.168.1.1 192.168.1.2 4
5 192.168.1.5 192.168.1.8 5
6 192.168.1.1 192.168.1.2 6
7 192.168.1.1 192.168.1.2 7
8 192.168.1.1 192.168.1.2 8
.....
100 other events from 192.168.1.1 to 192.168.1.2 in less than 20 seconds
ルール階層で、階層の各レベルに対応するすべてのイベントの ID とともにこのインスタンスを報告する必要があります。たとえば、次のようなレポートが必要です。
2 or more events with src 1928.168.1.1 and dst 192.168.1.2 in 10 seconds ( Ids:1,2 )
+ 5 or more with the same src (192.168.1.1) and dst (192.168.1.2) in 20s (Ids:1,2,4,6,7)
+ 100 or more events from 192.168.1.1 to 192.168.1.2 in 30s (Ids:1,2,4,6,7,8,...)
Esper EPL でこれを達成する (すべてのルールに一致するイベントの ID を取得する) にはどうすればよいでしょうか?