1

ルール プロジェクトのルールセット パラメーターとして、タイプ TYPE1 の 2 つの arraylist があります。IN 用に 1 つ、OUT 用にもう 1 つ。私のルールフローには、OUT ルールセット パラメータを初期化する初期アクション タスクがあります。入力としてarrayListがあるので、それを「反復」する必要がありますが、その方法はわかっています。

私の問題はその後です。ルールフローの次のタスクには、いくつかの前提条件を持つデシジョン テーブルをすべて追加するルール タスクがあります。ほとんどのデシジョン テーブルでは、複数のルールを起動できます。私が達成したいのは、起動されたルールごとに、タイプ TYPE1 の新しいオブジェクトを出力配列リストに追加することです。ここで問題が発生します。3 つのルールを実行すると、実際には TYPE1 型の 3 つのオブジェクトが出力配列リストに追加されますが、3 つすべてに同じ値が含まれます。すべてが同じオブジェクトを「指している」ように見えます。

私の質問は、タイプ TYPE1 の新しいオブジェクトを作成する (コンストラクターを呼び出す) アクション列に方法があるので、ルールの残りのアクションを実行するときに TYPE1 の新しいオブジェクトに書き込む方法はありますか? TYPE1 型のルールセット変数を自分が持っているルールと同じ数だけ作成し、ルールごとにそれぞれを使用すれば、これを達成できることはわかっていますが、この方法ではテーブルが (横向きに) 巨大になり、私たちが望む方法ではありません。

TYPE1 と arraylists の両方が BOM メンバーです。

編集: 私は RetePlus アルゴリズムを使用していることを忘れていました。終了基準として「なし」を使用し、ランタイム ルールの選択に順序付けと動的 BAL を使用しています。

誰かが私を助けることができるように、私は自分自身を十分に説明したことを願っています. 前もって感謝します。

4

1 に答える 1

2

3 つのステップで、目的を達成するためのテクニックを次に示します。

BOM エディターで、TYPE1 クラス (または実際には他のクラス) にメソッドを作成します。戻り値の型を TYPE1 に設定します。たとえば、createTYPE1 と呼びます。オブジェクトを初期化するために必要な数のメソッド引数を追加します。静的にします。

ルールの作成者にとって意味のある方法で言語化します。次のようなもの: 名前が {0} に設定され、値が {1} に設定された新しい TYPE1 // これは例であり、必要な引数リストに適合させます。

メソッドを B2X スクリプトの一部として実装します。

// calling the appropriate constructor from the XOM class.
return new mypackage.TYPE1(arg1, arg2); 

BOM を保存します。

この新しい句を次のような構文で使用します。名前を「Joe」に設定し、値を 12 に設定した新しい TYPE1 を出力リストに追加します。

通常、デシジョン テーブルのアクション列で使用できます。エディターは、フレーズのすべてのプレースホルダーをサブ列にマップします。

于 2014-07-30T13:49:59.293 に答える