2

(私はDroolsでの作業に少し慣れていないので、これが単純な質問である場合は失礼します)。

ルールのリアクティブな実行にDroolsを使用したいのですが、これは、挿入されている「ファクト」を「イベント」インスタンスと見なすことができることを意味します。ただし、イベントを受信するとすぐにルールを実行できるようにこれを実行する必要があります。ただし、ルールが複数のイベントに依存している可能性がある場合、以前のイベントを記憶するように作業メモリーを構成するにはどうすればよいですか。非常に単純な例を考えてみましょう。

次のルールがあるとします。

 - when (E1) do A1
 - when (E2) do A2
 - when (E1,E2) do A3

次に、次のように時間が経過した場合、実行されるルールに従います。例:

 - t=1 , E1 happens => A1 fired
 - t=2 , E2 happens => A2 fired + A3 fired

私が抱えている問題は、ksession.fireAllRules()挿入のたびに呼び出すと、作業メモリーが以前のすべてのイベントを忘れてしまうことです。私が望むことを達成するための最良の方法は何ですか?

4

1 に答える 1

0

ステートフルナレッジセッションを使用している限り、ステートレスにはfireAllRules()メソッドがないため、おそらく実行していることですが、WMは挿入されたすべてのファクトを忘れません。

「E1が発生する」と表現するのはksession.insert(E1);です。

ドキュメント(上記のリンク)に記載されている例で遊ぶことができます...

于 2013-01-17T18:36:39.550 に答える