0

Esper を使用してイベントのエピソードを生成したいと考えています。各時間帯のロボットの動きの変化を検出しようとしていますが、どのように実装するのが最適なのか疑問に思っていました。

イベントからエピソードを生成するためのルールは次のようになります。

  • ロボットの新しいイベント時間 (例: 7 秒、ロボット A) が、同じロボットの最新のイベント (例: 3 秒、ロボット A)よりも 3 秒以上長い場合、新しいイベントは新しいエピソードに属します。
  • 各エピソードは1 つのロボットのみを表す必要があります (例: 2 秒、ロボット A と 3 秒、ロボット B は 2 つのエピソードを出力する必要があります)。

入力データ:

Event   Time     Robot     Position
1         1        A         0
2         2        A         1
3         6        A         2

出力データは次のようになります。

Array[0]={Event 1,Event 2}
Array[1]={Event 3} //more than 3 sec

入力データ:

Event     Time     Robot     Position
1         1        A         0
2         2        A         1
3         4        B         0
4         6        A         2

出力データは次のようになります。

Array[0]={Event 1,Event 2}
Array[1]={Event 3} //different robot
Array[2]={Event 4}

提案を提供してください。各ロボットに 1 つずつ、複数のリスナーを使用してエピソードを作成しようとしましたが、動作しますが、単一の EPL ステートメントを使用してそれを実行しようとしています。私は試しwin:time_accum(3sec) group by robotましたが、2番目の出力例:

Array[0]={Event 1,Event 2, Event 4}
Array[1]={Event 3}

イベントが発生するたびにタイム ウィンドウがシフトされるため、システムはイベント 4 がイベント 3 のために 3 秒未満であると認識します。ロボットごとに固有のタイム ウィンドウを作成するにはどうすればよいですか?


ご提案いただきありがとうございます。どんな助けでも大歓迎です。

4

1 に答える 1

0

式のバッチ ウィンドウが機能すると思います。現在のイベントを含まないバッチを比較して出力できます。

于 2013-10-20T15:51:08.217 に答える