ルール・クラス
ルールのクラスは、実行時動作ではなく、実行時に適用されるタイミングと方法を決定します。
次の表に、コンフィギュレータ・ルールで使用できるルール区分を示します。
ルール・クラス |
説明 |
---|---|
制約 |
制約のクラスのルールは常にtrueである必要があります。 「制約」に関する情報の詳細は、を参照してください。 |
デフォルト |
デフォルト・クラスのルールは、より厳密な制約のようなものです。 制約エンジンはルールをtrueにしようとしますが、そのことができない場合、ルールは無視されます。 デフォルト・ルールを使用すると、ルール評価の順序を制御できます 一部の演算子はデフォルト・ルールでは使用できません。 「デフォルト」に関する情報の詳細は、を参照してください。 |
ディシジョンの検索 |
デフォルトと同様ですが、構成を終了するプロセス中に適用されます(自動補完プロセス)。 「ディシジョンの検索」に関する情報の詳細は、を参照してください。 |
ルール・クラスの選択
コンフィギュレータ・モデル作業領域でルールを定義する場合は、ルールをルール区分に割り当てる必要があります。 コンフィギュレータは、エンド・ユーザーが製品を手動で構成している場合、および自動補完プロセスが実行されている場合に、ルールのルール区分を参照します。
ルールのルール・クラスは、実行時に次のことを決定します:
-
ルールの一般的な動作
-
ルールが必須かどうか(構成では常にTrueであることが必要)
-
構成セッションのどの時点でルールが適用されますか(デフォルトおよび検索ディシジョンのみ)
注意: 新しいデフォルトおよび検索ディシジョンはそれぞれの順序の最後に表示され、既存のルールのルール区分をデフォルトまたは検索ディシジョンから制約に変更すると、適切に定義された順序に悪影響を及ぼす可能性があります。 したがって、ルールのルール・クラスを変更した後は、必ずデフォルトとディシジョンの検索の順序を確認して単位テストしてください。
制約
制約は実行時に適用され、エンド・ユーザーは構成セッション中にオプションを手動で選択して値を入力します。
構成のコンテキストでは、制約は常にtrueである必要があります。 たとえば、エンド・ユーザーが実行時に制約に違反する選択を行うと、コンフィギュレータには、前の処理を適用できないことをユーザーに知らせる矛盾メッセージが表示されます。
制約は、論理式、数値比較または互換性式として表すことができます。
デフォルトおよび検索ディシジョンとは異なり、実行時にコンフィギュレータで制約を考慮する順序は指定できません。
関係演算子は、制約内のプライマリ演算子です。 equals ( =)およびgreater-than ( > )関係演算子を使用する次の例について考えてみます:
x = y + (q*z)
a > b
これらの簡略化されたルール式では、式の左側が数値の情報を右側に伝播(プッシュ)できます。 制約エンジンでは、式の右側も左側に伝播(押し戻す)できます。 このような制約を定義する機能によって、ルールは双方向であり、両方向に伝播できます。
デフォルト
制約と同様に、デフォルトも実行時に適用され、エンド・ユーザーは構成セッション中にオプションを手動で選択して値を入力します。 ただし、制約とは異なり、デフォルトは次のとおりです:
-
柔軟性があり、ルールによって選択されたオプションをエンド・ユーザーが選択解除した場合など、実行時に矛盾が生じることはありません。
-
ルール定義で指定された順序で、ユーザーが選択を行う前に、構成を初期化する際に実行時に適用されます。 デフォルトは初期選択と同様に機能し、ユーザーが構成を進める際にオーバーライドできます。
デフォルトが失敗する可能性があるのは、エンド・ユーザーの入力の1つまたは制約の伝播との競合が原因です。 デフォルトを伝播する順序を指定できます。
デフォルトを使用すると、実行時に指定した順序で処理される複数の矛盾ルールを定義して、エンド・ユーザーを優先ソリューションに導くことができます。
たとえば、ラップトップ・コンピュータの製造業者は、顧客が重いモデルではなく軽量バージョンのラップトップを購入し、基本バージョンではなくデ・ラック・ス・キャリング・ケースを購入することを希望しています。 Deluxeケースで購入者を軽量のラップトップの購入に導くため、代替オプションを選択できないようにするため、製造業者は次のルールとシーケンスを定義します:
1. Laptop 900 Implies 900-LTW
2. Laptop 900 Implies Deluxe Case
3. Laptop 900-HVW Implies Deluxe Case
これらのルールを設定すると、エンド・ユーザーがLaptop 900モデルを選択すると、ラップトップ(900-LTW)とデ・ラック・ス・ケースの軽量バージョンがデフォルトで選択されます。 その後、エンド・ユーザーがより重いモデル(900-HVW)を選択すると、デ・ラック・ス・ケースが選択されたままになります。
多くの制約をデフォルトとして定義できます。 たとえば、モデルには、1000の範囲(ドメイン)を持つWeightという数値機能が含まれています - 5000。 この品目の値が3000以下である解決策を好むため、次の文ルールを定義し、デフォルトのルール・クラスを割り当てます:
Weight <= 3000
このルールが実行時に伝播されると、加重品目の範囲が縮小され、ランタイムUIに次のように表示されます:
Range: 1000 to 3000
加重がこの範囲外になる選択をユーザーが行うと、デフォルト値は結果なしに取り消されます(上書きされます)。
デフォルトとして分類されたルールは、割当関数として表すことができます。
ディシジョンの検索
検索ディシジョンとして分類するルールが適用されます:
-
自動補完プロセス中
-
すべてのユーザー選択、制約およびデフォルトが適用されて伝播された後
-
制約エンジンの固有の検索ディシジョンの適用前
-
ルール定義で指定する順序
検索ディシジョンとして分類されるルールは、割当て関数、論理式または数値比較として表すことができます。
デフォルトおよび検索ディシジョンの順序の指定
実行時に、ルール定義で指定した順序に従って、デフォルトおよび検索ディシジョンとして分類されたルールが自動補完プロセスによって適用されます。 ルールを定義してデフォルトまたは検索ディシジョンとして分類すると、コンフィギュレータによってデフォルトの順序番号が割り当てられ、それぞれのリストの最後にルールが配置されます。 たとえば、デフォルト・ルール・クラスを持つ既存のルールが5つあるとします。 新しいルールを作成してRule Class of Defaults(デフォルト・ルール・クラス)を指定すると、新しいルールがデフォルト・ルール・リストの最後に表示され、その順序番号は6になります。
それぞれの順序でルールを前に表示する場合は、編集「モデル」ページのルール領域でデフォルトの順序変更または検索ディシジョンの順序変更をクリックします。
ノート: 実行時に、クロス・モデルまたはクロス・インスタンス関係者が存在するルールは、モデルで定義されている他のルールと比較して、指定した順序で適用されるとはかぎりません。 同じスコープ(モデルまたはインスタンスの組合せ)に適用されるそのようなルールのセットの順序は、相互に関連する定義どおりですが、スコープ(すべてのルールの参加者)のインスタンス化と、スコープの様々なインスタンス内で定義されたそのクラスのすべてのルールの適用後に適用されるグループ。
実行時にデフォルトまたは検索ディシジョンが適用される順序を変更するには:
-
コンフィギュレータ・モデル作業領域のルール・タブで、「デフォルト・ルールの順序変更」または「検索ディシジョン・ルールの順序変更」をクリックします。
-
矢印コントロールの1つをクリックして、選択したルールを順序内で上または下に移動します。
-
更新された順序をレビューします。
-
変更内容に問題がなければ、「保存」をクリックします。