値の累計
明細書ルールで「加算」または「減算」キーワードを使用して、変数の数値を加算または減算できます。
たとえば、512「MB RAM」オプションを選択した場合、「RAM」オプションに512を追加できるようにし、「選択されたRAMの合計」属性に合計を表示します。
ノート
- 値を累積できるのは、制約クラス内のみです。 「デフォルト」区分または「デシジョンの検索」区分では累計できません。 DefaultクラスまたはSearch Decisionクラスで取引明細書ルールを作成し、ルールのテキストで加算演算子または減算演算子を使用すると、ルールの検証時にOracle Configuratorによってメッセージが表示されます。 たとえば:
The rules of the RULE_CLASS rule class can't contain the ADDTO or SUBTRACTFROM accumulator operators.
- 同じターゲット・ノードに指定した累積はすべて、そのノードの制約として機能します。
- モデル内のすべての加算演算子および減算演算子は、ノードの単一の制約として機能します。 これは、モデル内で指定するすべての式の合計からSubtractFrom式の合計を引いたものです。
- ターゲット・ノードが他の制約に関係する場合、制約の加算式および減算式の結果としてコンフィギュレータが作成する等価制約は、他のすべての制約とともに満たされる必要があります。 等価制約は双方向であるため、ルールの左側にある関係者の値に影響を与える可能性があります。
ガイドライン
- モデルに、同じノードに対して加算または減算する複数の文ルールが含まれていて、他の参照モデルにそのノードが含まれている場合、コンフィギュレータは、ターゲットを、そのモデルの個々のルールで表すすべての用語の合計と等しくする単一の制約を作成します。
- 参照モデル階層内の複数の親モデルに存在するターゲットに対して追加ルールまたは減算ルールを設定する場合、ルールで作成される各等価制約を満たす必要があります。 加算および減算の用語は、別のモデルを参照している複数のモデルにわたって累積されません。
加算または減算キーワードの使用
値を累計する各ステートメントには、数値式が含まれている必要があります。 各文にADDキーワードとTOキーワードを含める必要があります。
ADDとTOを使用して値を累計する例を考えてみます:
ADD a TO b;
ADD (a + b) * c TO d;
小数値の比較
ルールで2つの小数値を比較する場合、コンフィギュレータは、Javaのdoubleデータ型の場合でも同じとみなさない場合があります。 コンフィギュレータは、小数許容範囲値を0.000000001 (9のスケール)に構成し、10進比較を算術式に変換します。
absolute value of a minus b is less than or equal to the tolerance
この方程式は、スケールが許容範囲で指定した小数点以下の桁数以下であるかぎり、正確な結果を提供します。
小数オペランドおよびオプション区分または回収でのADDおよびTOの使用
10進オペランドとオプション・クラスまたはコレクションを含むルールを作成するときは、慎重に計画してください。 xがyに累計され、yが複数のオプションを持つオプション・クラスである場合、またはyがコレクションの場合、次のアクションを実行します:
条件 | および | 処理 |
---|---|---|
xは10進数に解決されます | オプション1とオプション2はそれぞれ整数です | xでRound()ファンクションを使用します。 |
xは10進数に解決されます | オプション1とオプション2はそれぞれ10進数です | xに対してアクションを実行しないでください。 |
xは10進数に解決されます | オプション1は10進数、オプション2は整数 | オプション2は整数であるため、xのRound()関数を使用して、最も制限の多い制限を満たします。 |
xは整数です | オプション1とオプション2はそれぞれ整数です | xに対してアクションを実行しないでください。 |
演習
- 文ルールを作成します。
- 取引明細書ルールのテキストを入力します。 加算または減算演算子には、次の構文を使用します:
ADD
nTO
xまたは
SUBTRACT
nFROM
xここで、nは数値、xは数値です。