ルックアップテーブルを使用して決定を構築する
学習の目的
この単元を完了すると、次のことができるようになります。
- 決定マトリックスと決定表の主な機能を要約する。
- 決定マトリックスと決定表を使用する状況を特定する。
- 決定マトリックスと決定表を読み取る方法について説明する。
ルックアップテーブル
前述のとおり、ビジネスルールエンジンには、式セット、決定マトリックス、決定表という 3 つのコアツールがあります。
決定表と決定マトリックスはどちらもルックアップテーブルに属します。
どちらのツールも入力値を出力値に対応付けるものですが、その機能とユースケースが異なります。
この単元では、決定マトリックスと決定表の主な機能について詳しく説明します。
決定マトリックスの概要
決定マトリックスは、ユーザー定義の入力列と出力列からなる強力なルックアップテーブルです。システムが入力を取り込んで、適切な出力を「見つけ出し」ます。式セットなどのツールが決定マトリックスをコールすると、エンジンが入力値と一致するテーブル行を見つけ出し、その行の出力値を返します。
次のシンプルな決定マトリックスの例は、[SLA] という 1 つの入力列と、[Retention Cost (維持コスト)] と [Retention Rate (維持率)] という 2 つの出力列で構成されています。
このマトリックスは、サービスレベル契約 (SLA) の入力に基づいて、維持コストと維持率を出力します。
- SLA がゴールドの場合、維持コストは 11,000 ドルで、維持率は 90% です。
- SLA がプラチナの場合、維持コストは 12,500 ドルで、維持率は 95% です。
ビジネスユーザーはより複雑な計算で、マトリックスを 1 つの要素として式セットや別のプロセスに簡単に追加できます。
決定マトリックスが役に立つのは、ビジネスプロセスで 1 つ以上の入力に基づいて特定の値を決定する必要がある場合です。
決定マトリックスのユースケースとして次のような例が挙げられます。
- 保険料マトリックス - 被保険者の特性に応じて保険料を算定する。
- 気象警報マトリックス - 気象状況が指定した温度を上回ったまたは下回った場合に警報フラグを設定する。
- 人口統計マトリックス - 場所に基づいて人口統計データを出力する。
- 価格設定マトリックス - 商品の特性に応じた価格を示す。
- 対象条件マトリックス - 候補者の特性に基づいて対象となるかどうかを判断する。
決定マトリックスは、次の 2 つに大別されます。
- 標準決定マトリックス - 入力列、出力列、バージョンなどの共通する特徴があります。
- グループ決定マトリックス - 地域や商品コードなどのキーでマトリックスの行を分類できます。
決定マトリックスは柔軟な方法でデプロイでき、大規模なルールの一部として式セット内で使用することも、ビジネスプロセスで直接使用することも可能です。
ビジネスは決定マトリックスを使用して、現在の業務を中断することなく、将来の業務の準備を整えることができます。ビジネスユーザーが 1 つのマトリックスの複数のバージョンを作成して、有効日付と優先度を指定すれば、変更の準備を事前に済ませておくことができます。
決定マトリックスはコードが不要で、比較的簡単に設定できます。ビジネスユーザーでも決定マトリックスの概要を習得すれば、作成、変更、管理することができます。さらに、決定マトリックスはビジネスユーザーが次の操作を実行できるほどの汎用性を備えています。
- 既存のバージョンから決定マトリックスのバージョンを作成し、以前のバージョンからすべてのマトリックスデータをコピーする。便利ですよね。詳細は、「既存のバージョンからの決定マトリックスバージョンの作成」を参照してください。
- .csv ファイルを使用してデータを決定マトリックスにアップロードし、アップロードされたデータを管理する。詳細は、「CSV ファイルを使用した決定マトリックスの作成または変更」を参照してください。
決定マトリックスの最大のメリットはシンプルであることです。
時として、カスタムオブジェクトや、>や<などの演算子を直接操作する高度なルックアップテーブルを使用して、入力列を検索する必要のある場合があります。そうした状況では、決定表を使用して各自のビジネスニーズに適合させます。
決定表の概要
決定マトリックスと同様、決定表も複数の入力を指定したビジネスルールを読み取って、複数の出力を返すルックアップテーブルです。決定表の 1 つのルックアップで複数の行を照合し、複数の出力セットを返すことができます。
ビジネスルールエンジンで決定表を作成し、ワークフローや式セットで使用します。カスタムツールやサードパーティツールを使用してワークフローを作成する場合は、Connect API を使用して決定表をワークフローに統合します。
決定表はビジネスルールを読み取って、指定した Salesforce のレコードまたは値から結果を返します。また、詳細条件を設定して、指定したロジックに照らしてレコードや入力を評価することも可能です。
次の決定表の例は、2 つの入力列と 1 つの出力列で構成されています。
[Purchase or Refinance (購入または借り換え)] と [Ownership (所有権) ] が入力列で、[Discount Rate (割引率)] が出力列です。ご覧のとおり、この表の 1 列目 (1) に複数の Salesforce レコードが示されています。表内のデータを直接編集する決定マトリックスとは異なり、この表のデータはすべてオブジェクトレコードから直接取り込まれます。つまり、レコードデータが変更されると、表内のデータも更新されます。2 列目と 3 列目 (2) に示されている入力特性に基づいて、決定表が参照を実行して最終列 (3) に割引率を出力します。
この表によると、単独所有の購入ローンでは割引率が 0.15% ですが、ビジネス所有の借り換えローンは割引率が 0.39% です。
ビジネスユーザーは、作成したこの表を大規模なビジネスルールに追加して、ローンの条件を自動的に計算することができます。決定表を使用すると、作成するフローの条件付きステップ数が少なくなるため、オーケストレーションや管理を実施しやすくなります。
ここにローンの割引率を計算するフローの例が 2 つあります。
次のフローは保険料の計算に一連の複雑な条件要素を使用しているため、極めて厄介なものになっています。誰もがこのようなフローを回避したいと思うはずです。
対して、次のフローは、簡潔な 1 つのステップで割引評価をすべて処理する決定表アクションをコールするため、はるかに明快で効率的になっています。こちらのほうがよいですよね?
決定表を使用すると、Salesforce レコードの複雑なルール評価を簡単な数ステップでオーケストレーションできます。
ルックアップテーブルの動作
前の単元で、Zercovana をご紹介しました。このマイクロ国家はビジネスルールエンジンを使用して、ビジネスライセンスの申請プロセスを自動化して手続きを簡便にしたいと考えています。
Zercovana はまず、数種のシンプルな入力に基づいてライセンス申請の基本料金を決定するルックアップテーブルを作成する必要があります。次に、最終料金を計算する新しい式セットにこのテーブルを追加します。最後に、国民が適切な料金を判断するためのわかりやすいガイド付きインタラクションにこの式セットを追加します。
基本料金を判断するための Zercovana のテーブルは単純明快で、複雑な演算子や Salesforce オブジェクトをコールする必要がありません。また、すべてのデータが記載されたスプレッドシートが存在するため、このシートをインポートできます。上記の理由により、Zercovana は決定マトリックスではなく、決定表を作成することにしました。
プログラムマネージャーの Jessica Morales が決定マトリックスと式セットを作成します。
このプロセスには次の 3 つの主要なタスクがあります。
- テーブルの準備を整える。
- マトリックスをインポートする。
- マトリックスを有効にする。
では、Jessica がマトリックスを設定するところを見てみましょう。
テーブルの準備を整える
データを決定マトリックスに追加する場合、データを手動で Salesforce に入力する方法と、.csv ファイルからインポートする方法の 2 通りのやり方があります。通常は、スプレッドシートを評価テーブルの書式に変更し、.csv ファイル形式で保存してから、決定マトリックスデザイナーにインポートするほうが効率的です。
以下は、3 つの列からなる、ごく基本的なテーブルを示しています。この決定マトリックスに「Base Application Fee」(申請基本料金) と名前を付けます。
現在のスプレッドシート形式には、ヘッダー、入力、出力など、データを識別するメタデータがありません。
Jessica はこのシンプルなテーブルを決定マトリックスデザイナーに取り込んで、見やすいデータに変換できます。その方法を見ていきましょう。
標準決定マトリックスを作成する
テーブルを .csv ファイル形式で保存してから、決定マトリックスデザイナーを開き、新しい標準マトリックスを作成します。
- をクリックし、[Business Rules Engine (ビジネスルールエンジン)] を見つけて選択します。
- アプリケーションナビゲーションメニューをクリックし、[Lookup Tables (ルックアップテーブル)] を選択します。
- [New (新規)] をクリックします。
- [Decision Matrix (決定マトリックス)] を選択し、[Next (次へ)] をクリックします。
- 次の詳細を入力します。
- Name (名前):
Base Application Fee
(申請基本料金) - Type (種別): Standard (標準)
- Name (名前):
- [Save (保存)] をクリックします。
新しいバージョンの [マトリックス] タブで、[CSV ファイルをアップロード] をクリックします。
このインポート処理は難しいものではありません。.csv ファイルを選択して、マトリックスの各列に適切なヘッダーとデータ型を指定します。
このテーブルに次のとおり指定します。
- [Column Header (列ヘッダー)] (1) の項目に、スプレッドシートの最初の行の 3 つの値が表示されます。この 3 つの値が各列のデータのヘッダーになります。
- [Header Type (ヘッダー種別)] (2) の承認カテゴリヘッダーの列と承認種別ヘッダーの列は入力で、基本料金ヘッダーの列は出力にします。
- [Data Type (データ型)] (3) は、承認カテゴリと承認種別がテキストで、基本料金は通貨にします。
このテーブルは極めてシンプルなものですが、ビジネスルールエンジンでは大量のデータを含む、はるかに大規模なテーブルもサポートされます!
上記の項目を指定したら、マトリックスをアップロードします。ヘッダー、ヘッダー種別、データ型が指定されたわかりやすい書式のテーブルに、アップロードされたデータが整然と表示されます。マトリックスを保存します。
今後はこのテーブルに列や行を手動で追加できます。マトリックスを有効にした後で編集することはできません。
最終チェックを行った Jessica は、このマトリックスの仕上がりに満足しています。後は有効にするだけです。
マトリックスを有効にする
最後に、マトリックスを有効にします。それには、[Base Application Fee V1] 決定マトリックスバージョンを開き、有効日と優先度を指定して、[Activate (有効化)] をクリックします。今後は、バージョンを作成し、インポートデータまたはエクスポートデータに必要な変更を行って、新しい有効日と優先度を指定します。
ユーザーがこの式セットをコールするたびに、日付と優先度に基づいてマトリックスの正しいバージョンが自動的に選択されます。
バージョンを柔軟に管理できるということは、Zercovana が既存のプロセスを中断することなく、長期にわたる変更を準備できるということです。
決定マトリックスをこれほど簡単に設定できたことに Jessica は感動しています。ルックアップテーブルの準備ができたところで、Jessica はライセンスの申請料を判断する完全な式セットのオーケストレーションに進みたくてうずうずしています。次の単元で、この方法を見ていきます。