1

既存のILOGJRulesベースのアプリケーションをDroolsベースのプロジェクトに移行しようとしています。ILOGには、ルール(式)内の中間値を計算および格納するために使用できるローカル変数(および変数セット)があります。

Droolsにローカル変数に相当するものはありますか?Droolsにグローバルがあることは知っていますが、ドキュメントでは、グローバルを読み取り専用定数としてのみ使用し、Java呼び出しクラス間でデータをルールに渡すことを提案しています。

ルール内からグローバル値を設定または変更することは強くお勧めしません。常にワーキングメモリインターフェイスを使用してアプリケーションから値を設定することをお勧めします。

1つのアプローチは、カスタムJavaクラスを作成し、そのVariable中のすべての変数を宣言して、それをdroolsルールで使用することです。ただし、新しい変数を追加するたびにJavaコードを変更する必要があります。

ルール内で定義および変更できるDroolsの変数を定義および使用するための実行可能な方法はありますか?

4

1 に答える 1

1

グローバルを使用して、ルール間で何らかの計算や状態を保持することに問題はないと思います。Drools のドキュメントが (非常に複雑で不明確な方法で) 言おうとしているのは、ルールの RHS でグローバルを使用してはならないということだと思います。制約でグローバルを使用する場合は、それらの値を決して変更しないようにしてください。そうは言っても、ルールの RHS でグローバルを使用しても問題はないと思います。この考え方に慣れていない場合は、「Calculation」オブジェクトをファクトとしてセッションに挿入することもできます。ルールはこの事実と照合し、変数をそれにバインドし、RHS で対話することができます。

それが役に立てば幸い、

于 2013-03-01T15:22:06.320 に答える