カスタムオブジェクトのデータを利用してルールを制御する
学習の目的
この単元を完了すると、次のことができるようになります。
- 類似した多くのルールを管理する場合の課題を説明する。
- ルックアップクエリルールで使用するオブジェクトで必要な項目の種別を特定する。
- ルックアップデータを含むカスタムオブジェクトに接続するための商品ルールを作成する。
- カスタムオブジェクトから関連レコードを取得するためのルックアップクエリを作成する。
- 入力規則およびアラートルックアップルールと選択ルックアップルールとの違いを説明する。
山積みのルール
ビジネス要件の中には、実装に多くの時間と労力を要するものもあります。たとえば、ホームオートメーションハブのバンドルには、さまざまなソケット規格に対応した電源タップやコンセントの商品が多数あり、ドイツの顧客でも米国の顧客でも同じバンドルを購入できるようになっています。そこで、見積の [Ship To Country (納入先 国)] 項目で指定されている国に基づいて、顧客に販売できる電源タップとコンセントの商品を制限したいとします。たとえば、国がドイツであれば、EU 用スマート電源タップと EU 用スマート電源コンセントのみを購入できるようにするのです。他のオプションはスクリーンショットのようにグレー表示になります。
この要件を満たす方法の 1 つは、国ごとに異なるエラー条件、アクション、および設定ルールを定義した商品ルールを作成することです。ただし、この場合は国を追加するたびに新しいルールを作成する必要があります。更に面倒なことに、新しい国が追加されたことを反映させるために既存のエラー条件を修正する必要もあります。その結果、将来の作業が膨大な量になってしまうこともあります。
実はもっと簡単な方法があります。ルックアップクエリをルールの一部として使用するのです。1 つのルールだけで、元の 3 つのルールすべての作業を行うことができます。更に、新しい国が追加されても新しいルールを作成する必要はありません。
すべてはデータから始まる
ルックアップルールのカギは、処理の対象となる潜在的なすべてのシナリオを記述したデータのソースを指定することです。上の例なら、それぞれの国と商品の組み合わせに対してどのようなアクションを実行するかを記述したシンプルなテーブルが考えられます。
国 |
商品 |
アクション |
---|---|---|
米国 |
米国用スマート電源タップ |
有効化 |
米国 |
米国用スマート電源コンセント |
有効化 |
英国 |
英国用スマート電源タップ |
有効化 |
英国 |
英国用スマート電源コンセント |
有効化 |
ドイツ |
EU 用スマート電源タップ |
有効化 |
ドイツ |
EU 用スマート電源コンセント |
有効化 |
このテーブルのデータは、CPQ が見つけられる場所に格納する必要があります。つまり、カスタムオブジェクトです。CPQ が有効になっている特別な組織では、このデータを格納するための Outlet Locales (アウトレットロケール) というカスタムオブジェクトと必要なレコードがすでに作成されています。
項目を後で参照したときにデータソースがわかりやすいように、項目名は OLCountry、OLProduct、OLType としてあります。実際にはプレフィックスを付ける必要はありません。
OLCountry は、テキスト項目です。OLProduct は、商品オブジェクトへの参照項目です。OLType は、有効化、追加、非表示にして削除など、商品ルールで実行するすべてのアクション種別が登録された選択リストです。最後に、OLRequired 項目がチェックボックスとして含まれています。その理由は、CPQ が後でこの項目を参照するという想定のためです (ただし、このルールでは使用しません)。
カスタムオブジェクトの作成について学習したい場合は、とても役に立つ「システム管理者初級」トレイルの「データモデリング」モジュールを参照してください。
データの場所がわかりましたので、その場所を使用した商品ルールを作成できます。
ルックアップ商品ルールを作成する
ルックアップルールの作成で最も重要なことの 1 つは、ルールの動作を制御するデータがどこにあるかを CPQ に伝えることです。これは商品ルールのレコード内で行います。では始めましょう。
- ナビゲーションバーで、[Product Rules (商品ルール)] タブをクリックします。
-
[New (新規)] をクリックします。
- [Product Rule Name (商品ルール名)] に
Limit power options
(電源オプションの制限) と入力します。
- [Type (種別)] で [Selection (選択)] を選択します。
- [Scope (範囲)] で [Product (商品)] を選択します。
- [Evaluation Event (評価イベント)] で [Load (読み込み)] を選択します。
ここでは、最初に設定を開いたときにだけルールを実行します。そうしないと、バンドルの設定中に「正しい」オプションのチェックボックスまでオフになってしまう可能性があります。
-
[有効] チェックボックスをオンにします。
- [Conditions Met (一致条件)] で [All (すべて)] を選択します。
次は興味深い部分です。[Lookup Query Information (ルックアップクエリ情報)] セクションには、動作を制御するデータの場所を CPQ に指示するための項目があります。そのため、次はカスタムオブジェクトとカスタム項目を CPQ に参照させます。
- [Lookup Object (参照オブジェクト)] で OutletLocale__c を選択します。
これがカスタムオブジェクトの API 参照名です。特別な組織の選択リストは、すでにこの値を登録して更新済みです。また、このセクションの他の項目もすでに登録してあります。実際には、自分で選択リストの値を更新する必要があります。
- [Lookup Type Field (ルックアップ種別項目)] で、[OLType__c] を選択します。
- [Lookup Product Field (ルックアップ商品項目)] で、[OLProduct__c] を選択します。
- [Lookup Required Field (ルックアップ必須項目)] で、[OLRequired__c] を選択します。
[Lookup Required Field (ルックアップ必須項目)] は、この例では使用しませんが、選択する必要があります。選択しないと、バンドルの設定時にエラーが返されます。
-
[Save (保存)] をクリックします。
できました。これで CPQ は、国ごとの商品やアクションに関するデータがどこにあるかを正確に把握できるようになりました。次の課題は、CPQ が見積に関連するデータのみを使用するようにすることです。たとえば、見積の納入先がドイツであれば、先ほど見たテーブルの最後の 2 行だけが必要です。そこでルックアップクエリの出番となります。
ルックアップクエリは検索条件と似ています。見積の情報 ([Ship To Country (納入先国)]) とテーブルのデータ (OLCountry 項目) を比較するように CPQ に指示します。一致した場合、CPQ はデータを戻します。この例では、ルックアップクエリを 1 つだけ作成する必要があります。
- [Lookup Queries (ルックアップクエリ)] 関連リストで、[New (新規)] をクリックします。
- [Match Type (一致種別)] で [Field Value (項目値)] を選択します。
[Field Value (項目値)] を選択するのは、項目 ([Ship To Country (納入先 国)]) をテーブルのデータと一致させる必要があるためです。
- [Tested Object (テスト対象オブジェクト)] で [Quote (見積)] を選択します。
- [Tested Field (テスト対象項目)] で [SBQQ__ShippingCountry__c] を選択します。
これで、比較したい情報の半分を CPQ に参照させることができました。
- [Operator (演算子)] で、[equals (次の文字列と一致する)] を選択します。
- [Lookup Field (参照項目)] で、[OLCountry__c] を選択します。
これが比較する情報の残り半分です。
-
[Save (保存)] をクリックします。
これで完成です。ルックアップクエリの準備ができました。今後、ドイツ向けの見積を作成するときは、ルールに従ってカスタムオブジェクトから 2 件の関連レコードのみが取得されます。
この例では、項目 ([Ship To Country (納入先 国)]) を別の項目 (OLCountry) と比較しましたが、静的値を参照項目と比較することもできます。たとえば、[Active (有効)] が参照項目と一致するすべてのレコードを取得できます。そして、使用できる時間が決まっているアクションのテーブルを作成すれば、レコードの有効と無効を切り替えるだけで、使用できるアクションを一括管理できます。ルックアップクエリの作成時に静的値を使用するには、[Tested Value (テスト対象値)] に値を入力し、[Match Type (一致種別)] で [Static Value (静的値)] を選択します。
設定属性を参照項目と比較することもできます。たとえば、見積の [Ship To Country (納入先 国)] 項目ではなく、営業担当専用に作成されている設定属性を参照して追加情報を取得することができます。
その場合は、クエリで Tested Configuration Attribute (テスト済み設定属性) 参照項目を使用して、[Match Type (一致種別)] で [Configuration Attribute Value (設定属性の値)] を選択します。
最後になりますが、1 つのルールに対して複数のルックアップクエリを作成できます。これにより、多くの要因に基づいたシナリオを表すカスタムオブジェクトを作成して、状況に関連するレコードだけを取得することができます。
この時点でのルールは、国に基づいて特定のオプションを有効化しますが、更にそれ以外のすべてのオプションを無効化するアクションが必要です。この処理は同じルールで行います。
- [Actions (アクション)] 関連リストで、[New (新規)] をクリックします。
- [Type (種別)] で [Disable & Remove (無効化して削除)] を選択します。
- [Filter Field (条件項目)] で [Product Code (商品コード)] を選択します。
- [Operator (演算子)] で、[equals (次の値を含む)] を選択します。
- [Filter Value (検索条件値)] に
power
と入力します。
-
[Save (保存)] をクリックします。
これは、商品コードに「power」が含まれるすべてのオプションを無効化するシンプルなアクションです。選択ルールにアクションとルックアップクエリの両方が含まれている場合は、アクションが先に実行します。したがって、先にすべてのオプションを無効化してから、必要なオプションのみを有効化します。
あと少しで完成です。後は、このルールをホームオートメーションハブのバンドルに適用するよう CPQ に指示するだけです。
- [Configuration Rules (設定ルール)] 関連リストで、[New (新規)] をクリックします。
-
[有効] チェックボックスをオンにします。
- [Product (商品)] で [Home Automation Hub (ホームオートメーションハブ)] を探して選択します。
-
[Save (保存)] をクリックします。
これでルックアップルールは完成です。では、実際に確認してみましょう。
- ナビゲーションバーで、[Quotes (見積)] をクリックし、[All (すべて)] リストビューを選択します。
-
[Q-00043] をクリックします。
見積を一番下までスクロールすると、英国に設定されている [Ship To Country (納入先 国)] 項目があります。
-
[Edit Lines (品目の編集)] をクリックします。
-
[Add Products (商品を追加)] をクリックします。
-
[Home Automation Hub (ホームオートメーションハブ)] チェックボックスをオンにします。
-
[Select (選択)] をクリックします。
頑張って作成したルールの結果はすぐに表示されます。[Power (電源)] セクションでは、英国のオプションのみが有効化され、他のオプションは無効化されています。
今後、新しいコンセント商品を販売する場合には、通常のようにバンドルにオプションを追加してから、どの国向けの商品なのかを識別するためのアウトレットロケールレコードを追加するだけで済みます。すべての管理はそれで完了で、ルールを編集する必要はありません。
入力規則とアラートルックアップルール
ルックアップルールは、入力規則やアラートルールの制御にも使用できます。設定手順はほぼ同じですが、OLCountry などの参照項目と、ユーザーに表示したいメッセージを格納するテキスト項目の 2 つだけが必要であるという点が異なります。
CPQ に対してデータの格納場所を指示する必要はありますが、必要なのはルックアップメッセージ項目をカスタムオブジェクトのテキスト項目に設定することだけです。
メッセージは参照オブジェクトから取得されるため、商品ルールレコードにメッセージを入力する必要はありません。
ルックアップクエリを使用した商品ルールは、作成する必要があるルール数を減らすのに便利です。また、ビジネスが拡張されたときでもルールを変更するための時間を節約できます。
リソース
- Salesforce ヘルプ: カスタムオブジェクトの作成
- Salesforce ヘルプ: Using Lookup Queries with Product Rules (商品ルールでのルックアップクエリの使用)