式の制約およびテーブル制約
適用: Microsoft Dynamics AX 2012 R3, Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack
このトピックでは、式の制約およびテーブル制約の使用について説明します。制約は、販売注文、販売見積、発注書、または製造オーダーのための製品をコンフィギュレーションするときに選択できる属性値を制御します。制約の作成方法に基づいて、式の制約またはテーブル制約を使用できます。
式の制約とは
式の制約の特徴は、式が算術演算子およびブール演算子と関数を使用することです。式の制約は、製品コンフィギュレーション モデルの特定のコンポーネントに書き込まれます。他のコンポーネントで再利用することも、また他のコンポーネントと共有することもできません。ただし、コンポーネントの式の制約は、コンポーネントのサブコンポーネントの属性を参照できます。式の制約の作成方法については、「製品コンポーネントの式の制約の作成」を参照してください。
テーブル制約とは
テーブル制約では、製品のコンフィギュレーション時に属性として許される値の組み合わせをリストします。テーブル制約の定義は、総称的に使用できます。製品コンフィギュレーション モデルのコンポーネントのテーブル制約を作成する場合、テーブル制約定義を選択します。
許される組み合わせを作成するには、特定のタイプの属性をコンポーネントに追加します。各属性タイプは特定の値を所有します。テーブル制約の作成方法とその制約を製品コンフィギュレーション モデルに追加する方法については、「テーブル制約の作成」と「コンポーネントにテーブルの制約を追加します。」を参照してください。
テーブル制約の例
この例は、季節ごとの提案として、テレビのコンフィギュレーションを特定のサイズとタイプに制限できる方法を示します。
この最初の表には、コンフィギュレーションで一般に使用できるテレビのサイズとタイプを示します。テレビのサイズとタイプは、[TelevisionType] および [TelevisionSize] 属性タイプに使用できる値です。
属性 |
属性の型 |
値 |
---|---|---|
テレビ |
TelevisionSize |
24、36、42、48、50 |
TelevisionType |
Plasma、Projection、OLED、LCD |
この次の表には、[季節的なテレビの提供] テーブルの制約によって定義する組み合わせを示します。このテーブル制約を使用して、プラズマ テレビとプロジェクション テレビはサイズ 48 と 50 でのみ、LCD テレビはサイズ 36 でのみコンフィギュレーションできます。
テーブルの制約 |
タイプ |
サイズ |
---|---|---|
季節的なテレビの提供 |
プラズマ |
48 |
プラズマ |
50 |
|
プロジェクション |
48 |
|
プロジェクション |
50 |
|
LCD |
36 |
コンポーネントに属性を追加する方法の詳細については、「コンポーネントに属性を追加する」を参照してください。
システム定義テーブル制約とユーザー定義テーブル制約を作成できます。テーブル制約のこれらのタイプの詳細については、「システム定義およびユーザー定義のテーブル制約について」を参照してください。
Microsoft Dynamics Axで制約を解決するために使用する構文
制約を記述するとき、OML (Optimization Modeling Language) 構文を使用する必要があります。Microsoft Dynamics Ax は Microsoft Solver Foundation 制約ソルバーを使用して、制約を解決します。詳細については、「Microsoft Solver Foundation」を参照してください。
テーブル制約または式の制約の使用
制約の設定を作成する方法に基づいて、式の制約またはテーブル制約のいずれかを使用できます。テーブル制約はマトリックスとして構築しますが、式の制約は個別の文です。製品をコンフィギュレーションするとき、使用する制約の種類は重要ではありません。次の例は、2 つの方法の違いを示します。
次の制約の設定を使用して製品をコンフィギュレーションするとき、許される組み合わせは黒の色と 30 または 50 サイズの製品と、赤い色と 20 サイズの製品です。
テーブル制約の設定
色 |
サイズ |
---|---|
黒 |
30 |
黒 |
50 |
赤 |
20 |
式の制約
(色 == "黒" & (サイズ == "30" | サイズ == "50")) | (色 == "赤" & サイズ = "20")
式の制約の記述時に使用するのは演算子かまたはインフィックス表記法か
式の制約の記述には、使用可能なプレフィックス演算子か、またはインフィックス表記法のいずれかを使用できます。演算子 Min、Max、および Abs については、インフィックス表記法を使用できません。これらの演算子は、ほとんどのプログラム言語に標準として含まれています。
式の制約の記述時に使用できる演算子またはインフィックス表記法
次の表は、製品コンフィギュレーション モデル内のコンポーネントの式の制約を記述するときに使用できる演算子とインフィックス表記法を示します。
この最初のテーブルの例では、インフィックス表記法または演算子のいずれかを使用して式を記述する方法を知ることができます。
オペレーター |
説明 |
構文 |
例 |
---|---|---|---|
Implies |
これは最初の条件が false、2 番目の条件が true、または両方とも true の場合に true です。 |
Implies[a, b], infix: a -: b |
演算子: Implies[x != 0, y >= 0] インフィックス表記法: x != 0 -: y >= 0 |
および |
これは、すべての条件が true の場合にのみ true です。 条件数が 0 の場合、True が生成されます。 |
And[args], infix: a & b & ...& z |
演算子: And[x == 2, y <= 2] インフィックス表記法: x == 2 & y <= 2 |
または |
これは、任意の条件が true の場合に true です。 条件数が 0 の場合、False が生成されます。 |
Or[args], infix: a | b | ...| z |
演算子: Or[x == 2, y <= 2] インフィックス表記法: x == 2 | y <= 2 |
プラス |
これにより要件が合計されます。 条件数が 0 の場合、0 が生成されます。 |
Plus[args], infix: a + b + ...+ z |
演算子: Plus[x, y, 2] == z インフィックス表記法: x + y + 2 == z |
マイナス |
これは引数を無効にします。 これは条件がきっかり 1 つの場合に限ります。 |
Minus[expr], infix: -expr |
演算子: Minus[x] == y インフィックス表記法: -x == y |
Abs |
これは、条件の絶対値を取ります。 これは条件がきっかり 1 つの場合に限ります。 |
Abs[expr] |
演算子: Abs[x] |
時間 |
これは、条件の製品を取ります。 条件数が 0 の場合、1 が生成されます。 |
Times[args], infix: a * b * ...* z |
演算子: Times[x, y, 2] == z インフィックス表記法: x * y * 2 == z |
パワー |
これは、指数関数を取ります。 これはべき乗を右から左に適用します。すなわち、これは右側結合であり、したがって、Power[a, b, c] は Power[a, Power[b, c]] と等価です。Power は、指数が正の定数の場合にのみ使用できます。 |
Power[args], infix: a ^ b ^ ...^ z |
演算子: Power[x, 2] == y インフィックス表記法: x ^ 2 == y |
最大 |
これにより、最大条件が作成されます。 条件数が 0 の場合、Infinity が生成されます。 |
Max[args] |
演算子: Max[x, y, 2] == z |
最小 |
これにより、最小条件が作成されます。 条件数が 0 の場合、Infinity が生成されます。 |
Min[args] |
演算子: Min[x, y, 2] == z |
ない |
これにより、条件の論理逆数が作成されます。 これは条件がきっかり 1 つの場合に限ります。 |
Not[expr], infix: !expr |
演算子: Not[x] & Not[y == 3] インフィックス表記法: !x!(y == 3) |
次の表の例は、インフィックス表記法を記述する方法を示します。
インフィックス表記法 |
説明 |
---|---|
x + y + z |
追加 |
x * y * z |
乗算 |
x - y |
負の 2 つ目のバイナリ加算と同様、バイナリ減算が翻訳されます。 |
x ^ y ^ z |
右側結合の累乗法 |
!x |
ブール値の not |
x -: y |
Boolean の意味 |
x | y | z |
ブール値 or |
x & y & z |
ブール値 and |
x == y == z |
等式 |
x != y != z |
明確 |
x < y < z |
次の値より小さい |
x > y > z |
次の値より大きい |
x <= y <= z |
以下 |
x >= y >= z |
以上 |
(x) |
かっこは既定の優先順位より優先されます。 |
式の制約がなぜ正しく検証されないか
製品コンフィギュレーション モデルの属性、コンポーネント、またはサブコンポーネントのソルバー名として予約済みのキーワードは使用できません。次の一覧は、使用できない予約済みキーワードを示します。
シーリング
要素
等しい
フロア
次の場合
未満
大きい
Implies
ログ
最大
最小
マイナス
プラス
パワー
時間
スロット
モデル
意思決定
目標
自分の質問がここに表示されていませんか。
Microsoft Dynamics AX のヘルプがユーザーにとってより便利なものになるよう、できる限り多くの質問を掲載できるよう取り組んでいます。
このトピックでこのほかに掲載してほしい質問を教えてください。adocs@microsoft.com にメールでご連絡ください。