【发布时间】:2016-07-19 13:45:59
【问题描述】:
我目前正在研究我的硕士论文,该论文涉及使用 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 解组器将这些事件馈送到流中,但不知道如何同时执行它(即:在每个流中馈送第一个事件,然后在每个流中馈送第二个事件等)。我正在考虑在实现的那部分使用线程,除非它们是我在 Drools 中错过的另一个工具来帮助做到这一点。但是搜索得相当彻底,没有全面的例子存在同时处理多个流。
我的另一个问题是关于 Pseudoclock。因为我有这 9 个不同的流,事件发生在不同的时间,所以我无法在每次插入后提前时间,因为每个流中的每个事件都发生在不同的时间,因此,这些事件不会排列。所有这些流开始的时间是相同的。例如,如果我在 XML 中的实例 1 发生在 1.51 的持续时间中,并且来自另一个流的另一个事件的持续时间为。说。 4 秒,假设我要推进这两个事件,那么它们将彼此不同步。
但是,我所有的时间相关数据都存在于每个流中。开始时间是 19:02:31,每个事件在通过“结束”时间戳开始后的流中都有一个时间戳(以秒为单位),每个事件的持续时间为(结束时间戳 - 开始时间戳)。我需要对这些流进行的处理包括获取这些加速事件,并将它们与其他流关联起来,只要 2 个或更多玩家以大致相同的持续时间/时间间隔以相同的速率加速。
谁能给我任何指示或帮助?总而言之,我需要知道一种将流同时插入引擎的更好方法,并且需要知道我是否需要伪时钟来实现/处理。我几乎是编程的初学者,所以我只想让系统运行。
非常感谢!
学生。
【问题讨论】:
标签: java drools rule-engine drools-fusion