2013-04-04 25 views
0

我已經開始與Drools融合和麪臨臨時運營商奇怪的問題。由於一個原因,我不能讓它太工作,但例如運營商工作正常。問題與Drools融合「在」暫時運營商

這裏是我的事件的聲明 - 它只是包含特定類型的間隔:

 
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中的錯誤還是我做錯了什麼?

順便說一句 - 我在模式

回答

1

正在運行,我認爲問題是,你是假設@duration測量時,在現實中融合期望它在毫秒表示。因此,在您的情況下,$processing活動開始於05:19:00.00並結束於05:19:02.35$longIdle開始於05:20:00.00並結束於05:20:00.90。如您所見,$longIdle during $processingfalse$longIdle after $processingtrue

希望它有幫助,

+0

謝謝!不知道我錯過了它,只有* 1000解決了這個問題 – 2013-04-05 10:57:52