2011-02-07 2 views
0

私はJavaプロジェクトにDroolsを実装しました。すべてのルールは発動しますが、条件は発射直後に一度だけチェックされます。JBoss Droolsは一度条件をチェックします

Droolsの動作はこれですか?何か変更があった場合、常にブール値をチェックする必要があります。

答えて

2

これは、フォワードチェインのルールエンジンがどのように動作するか(非常に効率的です)です。

ファクトが変更された場合(その結果、ブール値のプロパティ/メソッドの結果が変更された場合)、ルールエンジンにはworkingMemory.updated(fact, factHandle)が通知されます。ルールエンジンは、その変更に基づいて解雇される必要があるすべてのルールを放棄します(さらに単一のルールではありません)。

Here's a diagram to explain why this can make your app a lot more scalable because it has to run a lot less code.

+0

はい、@Geoffrey De Smetに同意します。セッションを最新のファクトで更新する必要があります。または、「no-loop」属性を使用できます。ルールの結果がファクトを変更すると、ルールが再度アクティブになり、再帰が発生します。 – nIKUNJ

関連する問題