0

我已经开始使用 Drools Fusion 并且在时间运算符期间遇到了奇怪的问题。出于某种原因,例如在操作员工作正常之后,我不能让它太工作。

这是我的事件的声明 - 它只包含特定类型的间隔:

声明WorkingDayInterval
   @角色(事件)
   @timestamp(event_ts_local)
   @duration(duration_in_seconds)
结尾

这是我的规则:

规则“处理期间的空闲”
什么时候
 $processing : WorkingDayInterval( subcategory == "processing")
 $longIdle : WorkingDayInterval(这在 $processing, subcategory == "idle",duration_in_seconds > 600)
然后
    System.out.println("Bad Idle Event:");
    System.out.println ($processing.event_ts_local);
    System.out.println ($processing.duration_in_seconds);
    System.out.println ($longIdle.event_ts_local);
    System.out.println ($longIdle.duration_in_seconds);
结尾

当我运行它时,没有任何东西被解雇。

但是,当我得到以下结果之后更改为:

坏空闲事件:
2013 年 2 月 25 日星期一 05:19:00 MSK
2350
2013 年 2 月 25 日星期一 05:20:00 MSK
901

并查看值,我清楚地看到,基于开始时间戳和持续时间,第二个事件在第一个事件内,因此应该触发持续时间。

是 Drools Fusion 中的错误还是我做错了什么?

顺便说一句 - 我在模式下运行

4

1 回答 1

1

我认为问题在于您假设它@duration为单位,而实际上 Fusion 期望它以毫秒为单位表示。因此,在您的情况下,$processing事件开始于05:19:00.00并结束于05:19:02.35$longIdle开始于05:20:00.00并结束于05:20:00.90。如您所见,$longIdle during $processingis false$longIdle after $processingtrue

希望能帮助到你,

于 2013-04-05T09:32:19.983 回答