0

Drools Fusion の使用を開始しましたが、temporal オペレーターの実行中に奇妙な問題に直面しました。理由により、たとえばオペレーターが正常に動作した後でも、それを機能させることはできません。

これが私のイベントの宣言です-特定のタイプの間隔が含まれているだけです:

WorkingDayInterval を宣言する
   @role(イベント)
   @timestamp(event_ts_local)
   @duration(duration_in_seconds)
終わり

これが私のルールです:

ルール「処理期間中のアイドル」
いつ
 $processing : WorkingDayInterval( サブカテゴリ == "処理中")
 $longIdle : WorkingDayInterval (これは $processing の間、サブカテゴリ == "idle"、duration_in_seconds > 600)
それから
    System.out.println ("不良アイドル イベント:");
    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);
終わり

実行しても何も発生しません。

ただし、途中から後に変更する次の結果が得られます。

不良アイドル イベント:
月 2 月 25 日 05:19:00 MSK 2013
2350
月 2 月 25 日 05:20:00 MSK 2013
901

値を見ると、開始タイムスタンプと期間に基づいて、2 番目のイベントが最初のイベント内にあるため、期間が発生するはずであることがはっきりとわかります。

Drools Fusion のバグですか、それとも何か間違っていますか?

ところで-私はクラウドモードで実行しています

4

1 に答える 1

1

問題は、実際には Fusion がミリ秒単位で表現されることを期待しているときに、それが秒単位@durationで測定されると想定していることだと思います。したがって、あなたの場合、イベントは で始まり、で終わり、で始まり、で終わります。ご覧のとおり、はfalseですが、trueです。$processing05:19:00.0005:19:02.35$longIdle05:20:00.0005:20:00.90$longIdle during $processing$longIdle after $processing

それが役に立てば幸い、

于 2013-04-05T09:32:19.983 に答える