2012-04-05 5 views
0

私のJava pojo XOMモデルで静的変数count.Iを5つのルールを実行しており、カウント変数を1つ増やしています。したがって、実行の終わりには、カウント= 5として価値があります。ilog jrulesで静的宣言を使用しています。java xom model

ここで、静的でない変数の数を宣言し、各ルールの実行ごとにその値を増やすと、変数は5回初期化され、静的ではありません。

つまり、オブジェクトが静的であると宣言されていないと、Java XOMモデルクラスのインスタンスが5つ作成されますか?

答えて

0

私はあなたの質問を理解していません。
私はあなたのルールがあります:
"myObj.countをmyObj.count + 1に設定してください;" myObjオブジェクトと同じ数の変数を持つことになります。
したがって、作業メモリーONE myObjに挿入すると、最後および実行中にmyObjを1つだけ持ちます。
各ルールは、作業メモリ内で「一致」しているのと同じくらい多くの時間だけ起動します。
エンジンに5個のmyObjを渡すと、5個のmyObj.countのそれぞれの最終値が '5'になります。

静的を使用している場合は同じになります。
エンジンをステートフルモードで使用している場合を除いて(実際はまれです)。
BRMSにはデシジョン・サービスがあるため、渡されたパラメータ(およびルール)の決定を行います。
ステートフルモードでは使用できないとは言いませんが、この使用はまれです。
これを実行すると、前の回答が正しいことになり、値が無限に増加することになります。毎回5回ずつ増えます。

はところで:そうで解雇かいないルールの数と時間の実行とを取得する属性のセット全体があるので、私は要約すると...

これを試したことがない、あなたはあなたが持っているものを持っていますワーキングメモリつまり、オブジェクトのインスタンスが1つしかない場合、実行時にエンジンは決してインスタンスを作成しません。それはRETEPlusアルゴリズムによる狂気(::)につながります。 (頻繁には使用されません)
オブジェクトのインスタンスをさらに作成する唯一の方法は、ルールを使用して自分自身でトランンドタイムを行うことです。例:レポートのメッセージに「こんにちは」というメッセージを追加します。
希望しますようにお願いします。

0

静的変数は単なるクラス変数です。したがって、ルール呼び出し間で「永続的」になります。つまり、次回実行するとカウントは10になります。静的を使用していない場合は、各ルールの呼び出しごとに1回ずつ初期化され、ルールごとに1回は初期化されません。したがって、要するに、NO。

関連する問題