累計ルール
累計ルールは、実行時にエンドユーザーが選択した値を変数に対して加算または減算できるルール・タイプです。
たとえば、エンド・ユーザーが512「MB RAM」オプションを選択した場合、Total RAM Selectedに512を追加します。
背景
累計ルールには、制約のルール区分のみを指定できます。 デフォルトまたは検索ディシジョンとして分類できません。
数値ルールは、数値関係に関してモデルの各部分間の制約を表します。 数値ルールを使用して、エンド・ユーザー選択が数値機能またはオプション数量に寄与または消費できるようにします。
「デフォルト」または「ディシジョンの検索」の「ルール区分」を使用して取引明細書ルールを作成し、ルールのテキストで累計ルールを定義する場合(つまり、「加算」または「減算」演算子を使用)、ルールを検証すると、コンフィギュレータはこのメッセージに類似したメッセージが表示されます: The rules of the rule class <RULE_CLASS> may not contain the accumulator operators <ADDTO> or <SUBTRACTFROM>.
累計ルールでは、単に変数に対して数量を加算したり減算したりしないことを理解することが重要です。 同じターゲット・ノードに対して定義されるこのタイプのすべてのルールは、そのノードに対する制約で条件とみなすことができます。 これは、モデル内のすべての加算および減算式がターゲット・ノード上の1つの制約になるためです。 つまり、ターゲット・ノードは、モデルに定義されているすべての加算式の合計からSubtractFrom式の合計を引いた値になります。
さらに、ターゲット・ノードが他の制約に関係する場合、その加算式および減算式によって生成された等価制約は、他のすべての制約とともに満たされる必要があります。 他のすべての制約と同様に、等価制約は双方向であるため、ルールの左側の関係者の値を「プッシュ・バック」できます。
累計ルールを使用する場合は、次の点に注意してください:
-
同じターゲット・ノードに対して加算または減算される複数の累計ルールがモデルに含まれており、そのノードが参照モデルに存在する場合、ロジックを生成すると、そのモデルの個々のルールで表される全ての条件の合計にターゲットを等しくする単一の制約が作成されます。
参照モデル階層内の複数の親モデル内の特定のターゲットに対して加算または減算ルールが定義されている場合、生成された各等価制約を個別に満たす必要があります。 つまり、加算および減算の用語は複数の参照モデルにわたって累計されません。
-
数値ルールで小数点以下2桁を比較する場合、Java doubleデータ型による表現が原因で、これらの値は同じでないと解釈されることがあります。 小数許容範囲値(エプシロン値とも呼ばれる)は、0.000000001 (スケール9)に構成され、その後、コンフィギュレータ・エンジンによって、evaluation.Forの例で小数比較を算術式に変換するために使用され、式
a=b
をAbs(a-b) <= epsilon
に変換できます。 これにより、スケールがエプシロンで指定された小数点以下の桁数(10進数の許容値(0.000000001)に等しいかそれより小さいかぎり、正確な結果が得られます。
手順
累計ルールを作成するには、次の手順に従います:
-
文ルール・タイプのルールを作成します。
-
次の構文に従って加算演算子または減算演算子を使用して、文ルールのテキストを入力します:
ADD
nTO
xまたは
SUBTRACT
nFROM
xここで、nは数値で、xは数値機能です。