無限ループの問題を解決するためのDroolsルールエンジン



Drools Rules Engine Solve Problem Infinite Loop



に' Drools7ルールエンジンのビデオチュートリアル 'すでに述べたように、変更または更新をある程度使用すると、無限ループが発生します。

昨日、Droolsルールエンジンを使用している学生がこの問題に遭遇します。ルールコードを投稿した学生を見てみましょう。
よだれ
最初に上記のコードを分析しましょう。学生の上のコードは同じマップを話し、2つのルールに渡されます。次に、ルールの一部が属性値をマップします。死のサイクルを防ぐために、彼はno-loop属性を使用しました。



しかし、問題はまだ存在します。どうして?実際、関連するループなしの効果を使用したこのループなしの機能は、変更や他の操作が定期的に繰り返される実行の更新につながるため制限することですが、資格があり、現在のルールを更新して現在のルールにつながる繰り返された。他のオブジェクトの事実を防ぐために同じルールを更新するのではなく、現在のルールの更新につながりました。

したがって、これらの問題を解決するには、現在のルールを更新して独自の原因を解決するだけでなく、他の更新ルールに対処して、オブジェクトによって引き起こされたファクトを更新する必要があります。この場合、ock-on-activetrue属性構成も必要です。



lock-on-active trueこのプロパティを使用すると、現在のルールの繰り返し実行自体がトリガーされないことを含め、現在のルールが1回だけ実行されるように制限できます。ループなしの拡張バージョンです。

さらに、このコードの準備のために、学生はまた別の間違いを犯しました。それは、判断条件のときです。 2つのルールは2つの条件で決定されます。 $ Map:Map()は判定条件に相当しますMap(...)判定条件に対応します。実際、次の形式のように、2つの条件を1つにマージする必要があります。$ map:Map(...)。プロセスの使用において同様の間違いをしないように気をつけてください。

学ぶためのより多くの方法

詳細について Droolsルールエンジン ビデオチュートリアルと研究グループ、 こちらをご覧ください



難しい問題の解決を支援し、コードをスキャンしてDroolsルールエンジンPlanetに参加します。
よだれ