0

それぞれが次のプロパティを持つ一連のイベントがあります。

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 を取得する) にはどうすればよいでしょうか?

4

2 に答える 2

0

各ルールを階層内の次のルールの入力として使用できます。たとえば、ルールは最後の 10 秒間に一致するイベントをリッスンし、'insert into' 句を使用して結果を新しいストリームに挿入するため、次のルール新しいスチームなどのイベントに対してトリガーされます...これは非常に単純なユースケースであり、コンテキストパーティションがなくても実行できます.

于 2014-09-11T17:50:01.227 に答える