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 秒未満であると認識します。ロボットごとに固有のタイム ウィンドウを作成するにはどうすればよいですか?
ご提案いただきありがとうございます。どんな助けでも大歓迎です。