2012-03-14 12 views
1

イベントA次にイベントBがある場合、Aの5分後にイベントBが発生しない場合は、ルールをトリガーします。Drools Fusionで遅延イベントを処理する方法

when 
    time1:Event() from entry-point xx 
    not (Event(this after[ 0,5m ] time1) from entry-point xx) 
then 
... 
end 

リアルタイムでは正常に動作しますが、実生活ではイベントが遅延します。インタフェースから。

例:イベント時間:午前1時00分(MM:SS)が、ルールの上に午前2時00で受信したが、7時にトリガされますが、ビジネス・ロジックは、午前6時00

でトリガされるように、それを必要とします

このような要件をどのように処理すればよいですか?

答えて

1

異なる状況があるため、この問題に対する回答は1つではありません。ここで紹介したユースケースは簡単に固定されていますが、外部のスタンプ付きタイムスタンプを使用するだけです。イベントにソースで発生したタイムスタンプを含むプロパティ(datetimeなど)がイベントに含まれていると仮定すると、イベントのタイムスタンプとして使用するようにエンジンに指示できます。例えば:この場合

declare Event 
    @role(event) 
    @timestamp(datetime) 
end 

、その後エンジンは、イベントのタイムスタンプとして午前1時を使用し、ルールはイベント1は、午前2時00分に到着しても、(他のイベントが起こっていないと仮定して)06:00発火します。

+0

私はそれがうまくいかないと思っています。私はこの作業のヒントを見つけることができません。ドキュメンテーションには、イベントのようなものは不変で、「過去を変えることはできません」と書かれています。 – javadude

関連する問題