0

私は現在、Drools Fusion を使用して XML ファイルの複数のストリームからのイベントを処理することを含む修士論文に取り組んでいます (そのため、各ファイルをストリームとして「再生」しています)。これらのファイルは、プレーヤーに取り付けられた GPS センサーを使用してサッカーの試合が行われ、加速度と速度、およびプレーヤーの負荷などを監視するものです。

各 XML ファイルには、次のように ID、開始時刻、終了時刻、およびコードを示すイベントのインスタンスが含まれています。

<file>
<SESSION_INFO>
<start_time>2015-09-17 19:02:31.31 +100</start_time>
</SESSION_INFO>
<SORT_INFO>
<sort_type>sort order</sort_type>
</SORT_INFO>
<ALL_INSTANCES>

<instance>
<ID>1</ID>
<start>0</start>
<end>1.51</end>
<code>Accel : 0.00 - 2.00</code>
</instance>

<instance>
<ID>2</ID>
<start>1.52</start>
<end>3.01</end>
<code>Accel : -2.00 - 0.00</code>
</instance>

<instance>
<ID>3</ID>
<start>3.02</start>
<end>4.01</end>
<code>Accel : 0.00 - 2.00</code>
</instance>

<instance>
<ID>4</ID>
<start>4.02</start>
<end>4.21</end>
<code>Accel : 2.00 - 4.00</code>
</instance>
</ALL_INSTANCES>

これらのファイルは 9 つあり、これらはすべて同時に処理する必要があり、これらのイベントをエンジンに同時にフィードします。私の現在の実装は、これらのイベントをストリームにフィードするための JAXB アンマーシャラーですが、同時にそれを行う方法がわかりません (つまり、ストリームごとに最初のイベントをフィードし、次にストリームごとに 2 番目のイベントをフィードするなど)。実装のその部分にスレッドを使用することを検討していましたが、これを行うのに役立つ Drools で見逃した別のツールでない限りです。しかし、かなり徹底的に検索しましたが、複数のストリームを同時に処理する包括的な例はありません。

もう 1 つの質問は、疑似時計に関するものです。イベントが異なる時間に発生するこれらの 9 つの異なるストリームがあるため、各ストリームの各イベントが異なる時間に発生するため、挿入ごとに時間を進めることができません。したがって、これらのイベントは整列しません。これらすべてのストリームの開始時刻は同じです。たとえば、XML にインスタンス 1 が 1.51 の期間で発生し、別のストリームからの別のイベントが期間 .51 であるとします。言う。4 秒で、これらのイベントの両方を進めるとしたら、それらは互いに同期しなくなります。

ただし、時間関連のデータはすべて各ストリームに存在します。キックオフ時間は 19:02:31 で、各イベントには、キックオフから「終了」タイムスタンプまでの秒単位のタイムスタンプがストリームにあり、各イベントの期間は (終了タイムスタンプ - 開始タイムスタンプ) です。これらのストリームで行う必要がある処理には、これらの加速イベントを取得し、2 人以上のプレーヤーがほぼ同じ持続時間/時間間隔で同じ速度で加速するたびに、それらを他のストリームと関連付けることが含まれます。

誰かが私に指針や援助を与えることができますか? 要約すると、ストリームをエンジンに同時に挿入するより良い方法を知る必要があり、実装/処理に疑似クロックが必要かどうかを知る必要があります。私はプログラミングの初心者なので、システムを動かしたいだけです。

どうもありがとう!

スチュ。

4

1 に答える 1

0

9 つの XML ファイルを同時に処理する、つまりスレッドに分散する必要はありません。<instance>要素は開始時間または終了時間に従ってソートされているように見え (これは、インスタンス イベントに何を計算する必要があるかによって異なる場合があります)、それらすべてを自然な順序で処理できます。つまり、9 つのストリームで次に何があるかを判断するだけです。

このようにして、疑似クロックに関連する問題も問題ではなくなります。決定したら、クロックを次のインスタンス イベントに簡単に進めることができます。

すべての詳細を知らなくても、それぞれが 2 つのイベントを定義していると思い<instance>ます: プレーヤーが動き始め、プレーヤーが動きを止めます。そして、これら 2 つのイベントのそれぞれで状況を再評価する必要があるかもしれません。

于 2016-07-19T15:18:37.410 に答える