问题与Drools融合“在”时间运算符期间

时间:2013-04-04 15:25:50

标签: drools drools-fusion

我已经开始使用Drools Fusion,并且在时间运算符期间遇到了的奇怪问题。出于某种原因,我无法使其工作得很好,例如运算符正常工作之后。

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

declare WorkingDayInterval
   @role(event)
   @timestamp(event_ts_local)
   @duration(duration_in_seconds)
end

这是我的规则:

rule "Idles in Processing period"
when
 $processing : WorkingDayInterval( subcategory == "processing")
 $longIdle : WorkingDayInterval(this during $processing, subcategory == "idle",duration_in_seconds > 600)
then
    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);
end

当我跑步时,没有任何事情被解雇。

然而,当我 之后更改为后,我得到以下结果:

Bad Idle Event:
Mon Feb 25 05:19:00 MSK 2013
2350
Mon Feb 25 05:20:00 MSK 2013
901

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

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

BTW - 我正在模式

运行

1 个答案:

答案 0 :(得分:1)

我认为问题是你假设@duration是在中测量的,而实际上Fusion希望它以毫秒表示。因此,在您的情况下,$processing事件从05:19:00.00开始,到05:19:02.35结束,$longIdle05:20:00.00开始,到05:20:00.90结束。如您所见,$longIdle during $processing false $longIdle after $processing true

希望它有所帮助,