同じストリームから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のドキュメントを読んで、私はいずれかが任意のヘルプは、二つのイベントをチェックするため
期待した結果が得られない理由を伝えることは不可能です。あなたは完全な例を提供する必要があります。 - 'task'の適切な値を持つ2つの' Event'事実を挿入しましたか?それらは同時に作業メモリーにもありましたか?パターンの2番目のバージョンが起動した場合は、最初のパターンが挿入されていますが、2番目のパターンは挿入されていません。 – laune
これは、私が挿入した入力です\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); –