2016-12-01 8 views
0

同じストリームから2つのイベントが発生したかどうかを確認するためのdroolsルールを作成しようとしています。私は、エントリーポイントから来るイベントと比較されるロジックをワーキングメモリに含むコンプライアンスルールクラスを持っています。私が必要とするのは、2つのイベントの発生を検出することです。たとえば、イベントAが発生したことを検出し、その後Bが発生したことを検出したいとします。私は落ち着きの構文でこの役割を書いたDroolsのイベントから2つの異なる属性を選択する方法

$comrule : Comprules (pattern == "response" , isBefore == false) 
Event (task == $comrule.antecedent) from entry-point StoreOne 
Event (task == $comrule.consequent) from entry-point StoreOne 

問題はこのテクニックは動作しません。私が書いたときに一つだけの作業では、この

Event (task == $comrule.antecedent) from entry-point StoreOne 
not Event (task == $comrule.consequent) from entry-point StoreOne 

私はDroolsのドキュメントを読んで、私はいずれかが任意のヘルプは、二つのイベントをチェックするため

+0

期待した結果が得られない理由を伝えることは不可能です。あなたは完全な例を提供する必要があります。 - 'task'の適切な値を持つ2つの' Event'事実を挿入しましたか?それらは同時に作業メモリーにもありましたか?パターンの2番目のバージョンが起動した場合は、最初のパターンが挿入されていますが、2番目のパターンは挿入されていません。 – laune

+0

これは、私が挿入した入力です\t insertEvent(entryPointStoreOne、new Event()、 "X"、 "8"); \t insertEvent(entryPointStoreOne、新しいイベント()、 "Y"、 "9"); comprules cr4 =新しいComprules(); \t cr4.setpattern( "response"); \t cr4.setantecedent( "X"); \t cr4.setconsequent( "Y"); \t cr4.setanttimestamp(3); \t cr4.setconsimesptamp(4); \t cr4.settimespan(2); –

答えて

0

典型的なパターンを理解されるであろうこの問題 に解決を見つけることができなかったです$oneが到着した後の状況となり、実際の不在のためnotテストを使用して

Comprules(pattern == "response", !isBefore, $a: antecedent, $b: consequent) 
$one: Event(task == $a) from entry-point StoreOne 
$two: Event(task == $b, this after $one) from entry-point StoreOne 

$twoがある間:右の順序で発生することはこれですbsent。

+0

あなたの返信をありがとう、私はイベントの流れを処理し、同じストリームから2つのイベントをキャッチする必要があるので、これは私が望むロジックだと思います。私はこれをESPERで既に行うことができます。 –

+0

このコードを試しましたが、動作しません。これは私が使用した典型的な入力です。作業メモリの事実(この場合、コンプライアンス規則のクラス) 'Comprules cr4 = new Comprules(); cr4.setpattern( "response"); cr4.setantecedent( "X"); 'insertEvent(entryPointStoreOne、new Event()、" X "、" 8 "); cr4.setconsequent(" Y "); ' 'から来るイベントのための ; insertEvent(entryPointStoreOne、new Event()、 "Y"、 "9");) Xがルールの実行後に発生したように動作するはずです –

+0

なぜそれが機能しないのかを判断するには不十分です。セッションを作成するためにどのパラメータを使用しましたか?あなたのイベントのタイムスタンプは何ですか?どの時計を使用しますか? – laune

関連する問題