オプションの互換性を確認
文ルールでCompatibleキーワードを使用して、ユーザーが選択したオプションが別のオプションと互換性があることを確認します。
次に例を示します。
COMPATIBLE
&color OF Frame.Color,
&tint OF Glass.Tint
WHERE &color.userAttrs["Paints_AG.Stain"] = &tint.userAttrs["Paints_AG.Stain"];
このルールは、次のすべての項目を反復します:
- Glass子モデルのTintオプション・クラス
- WindowモデルのFrame子モデルのColorオプション・クラス。
「色」オプション・クラスの品目の「Stain」属性が「Tint」オプション・クラスの品目の「Stain」属性と等しい場合、色と色合いは相互に互換性があり、Oracle Configuratorでは、選択した色を使用して染色をTRUEに設定します。
この疑似コードについて考えてみます:
If &color.userAttrs["Paints_AG.Stain"] and &tint.userAttrs["Paints_AG.Stain"] equal Clear, and if you select the White color, then Configurator will select the Clear stain.
ガイドライン
- 同じオプション・クラスにある子、または異なるオプション・クラスにある子を比較できます。
- オプションは制約クラスでのみ比較できます。 「デフォルト」クラスまたは「デシジョンの検索」クラスのオプションは比較できません。
- オプションを比較して、参加している機能のサブセットからのみ選択を制限することはできません。
- 互換性文のために記述するコードには、少なくとも2つのイテレータを含める必要があります。
- オプションを比較するときに「最大選択」属性に1より大きい値を指定できるのは、ルールの関係者の1人のみです。
- オプションを比較する文ルールを作成し、ルールの関係者のいずれかで「最大選択」属性の値を変更すると、モデルのコンパイル時にコンフィギュレータにエラーが表示されます。
構文
- 互換性文の最初にCOMPATIBLEを使用します。
- 各互換性文には、COMPATIBLEおよび2つ以上の識別子を含める必要があります。
COMPATIBLE. . .OF
には、FOR ALL. . .IN
に使用する形式と同じ形式を使用します。- COMPATIBLE句に含める識別子ごとに、一致する識別子をOF句に含める必要があります。
- WHERE句を使用して、条件式に必要な組合せのセットを指定します。