意思決定モデリングの基本
ビジネスの専門家は、ビジネスに関する意思決定に適用するためにクライアント・アプリケーションが呼び出す意思決定サービスをモデル化し、定義して、デプロイできます。
Decision Center で意思決定サービスを作成し、それを実行環境に配布します。 次の図に示すように、クライアント・アプリケーションは意思決定サービスを呼び出してデータを処理します。

- 開発チームが基礎となるモデルを作成し、このモデルを使用して意思決定ロジックを作成します。
- 意思決定モデル・サービスでモデルとロジックを作成します。
- ノード構造のモデリング
- 意思決定ロジックのオーサリング
ノード構造のモデリング
顧客に挨拶して挨拶をする簡単な意思決定サービス (例えば、「こんばんはジョーンズ夫人」) について考えてみます。
- お客様名
- 希望する性別と学位
- 時刻
以下のダイアグラムは、意思決定サービスをモデル化しています。

モデリングの観点から、意思決定のビジュアル表示と入力データの間の関係を作成して定義します。
ダイアグラムでは、これらのビジュアル表示はノードと呼ばれます。 以下の図は、Name データ・ノードによってフィードされる Salutation 意思決定ノードを示しています。

名前として Jones を指定した場合に意思決定サービスによって返される挨拶は、「Hello Jones」になります。
意思決定サービスのダイアグラムを理解して保守しやすくするために、意思決定ノードを他の意思決定ノードに依存させることができます。 例えば、時刻に基づく挨拶文を返すように意思決定サービスを詳細化するには、Hour を入力として使用する「Greeting」という別の意思決定ノードを作成し、その結果を Salutation ノードで使用できるように意思決定ノードをリンクします。

8PM に Jones という名前を指定した場合に意思決定サービスによって返される挨拶は、「こんばんはジョーンズ」になります。
敬称 (例: Mr.、婦人、Dr.) を追加するには、以下のようにします。 挨拶文をさらにパーソナライズするには、「Courtesy Title」という名前の意思決定ノードを作成し、2 つのデータ・ノードの性別と学位を使用してフィードします。 この意思決定ノードは、Greeting ノードのような最終意思決定ノードにフィードします。

8PM に性別ミセスを指定し、学位を持たない Jones を指定した場合に意思決定サービスによって返される挨拶文は、「こんばんはジョーンズ夫人」になります。
- 意思決定ノードとデータ・ノードを作成してリンクします。
- 入力データを受け入れて、その上にあるノードまたはクライアント・アプリケーションに結果を出力するように、それぞれの意思決定ノードを設計します。 結果の取得方法については、以下の 意思決定ロジックのオーサリング セクションを参照してください。
データ・モデル
データ・モデル という用語は、意思決定モデルのさまざまなデータ・アスペクトを区別するために使用できます。
- ノードが受け入れおよび送信できる情報 (例えば、数値や日付など)。
- 意思決定ロジックを作成する際の可能性。

この図では、4 つのデータ・ノードがフラットにレイアウトされています。 多くの場合、関連するデータを 1 つのエンティティーの下に再グループ化するカスタム・タイプを作成するとより便利です。 以下の図には、上記の図と同じ入力データが含まれていますが、ローンに関連するすべてのデータ・ノードは、カスタム・タイプ loanのデータを処理する 1 つのノードの下にグループ化されています。

データ・モデリングについて詳しくは、「 データ・モデリングの詳細: カスタム・タイプ、デフォルト値、リスト」トピックを参照してください。ここでは、データ・ノードに設定できるデフォルト値についても説明しています。

意思決定ロジックのオーサリング
- それぞれの意思決定ノードが受信する入力データを、確立された条件に照らし合わせて評価する。
- 意思決定ノードの出力、つまり決定を設定または変更するためのアクションを実行する。
if
<conditions>
then
<actions>顧客が 18 歳未満で学生であるという条件に基づいて、顧客が学生割引を受ける資格があるかどうかを決定する意思決定サービスについて考えてみます。 意思決定モデルには、意思決定ノードの Student の割引にフィードする 2 つのデータ・ノード (Customer age と Category) があります。

スチューデント・ディスカウント・ノードの意思決定ロジックを実装するには、以下のビジネス・ルールを作成します。

- オレンジの部分は、意思決定ノードで使用可能な入力データまたは出力データを表します。
- グレーの部分は、意思決定ロジックの作成に関連するものとして識別されるデータ値を表します。
- 残りは、さまざまなタイプのデータの比較、評価、および変更に使用されるモデリング言語自体に対応しています ( Decision Center モデリング言語リファレンスを参照)。
意思決定ノードによって処理されるデータ (その出力と、意思決定ノードに直接フィードするノードからのデータ) は、ビジネス・ルールを作成するときに、 'the
<data>'の形式で即時に使用できます。 この例では、 Student discount は規則で 'the student discount'として使用でき、 Customer age は 'the
customer age'として使用でき、 Category は 'the
category'として使用できます。
- タイプに従って入力データを比較する (
if部分での) 標準的な条件ステートメント。 ノードで使用可能なすべてのデータに対して条件ステートメントを提示しますが、すべてのルールがすべての入力データに同時に適用されるわけではないため、クリアすることができます。 - タイプに従ってノードの出力の値を設定する (
then部分の) アクション・ステートメント。

カバレッジ
意思決定ノードを作成するときには、クライアント・アプリケーションが入力データとして提供する可能性があるケースの意思決定に到達するために必要なビジネス・ルールを作成します。 これは カバレッジと呼ばれます。 通常、意思決定では、可能な限り多くのケースをカバーするためにいくつかのビジネス・ルールが必要になります。

提供された入力データに対して多くの条件が考えられる状況を処理するために、意思決定表を使用できます。意思決定表は、共通の構造を持つが、条件とアクションの値が異なるビジネス・ルールをグループ化します。 例えば、収入に基づいて給与スコアを設定するには、さまざまな収入範囲をカバーするために、多くのビジネス・ルールが必要です。 以下の意思決定表は、単純な方法でこれを処理します。

意思決定表の各行は、1 つの完全なビジネス・ルールを表しています。 左側の列には条件 (ルールの if 部分) が含まれ、右側の列にはルールによって返される意思決定が示されます。
意思決定ロジックには、完全な適応範囲を得るために 1 つ以上の意思決定表と複数のビジネス・ルールが必要な場合があります。 これらのケースでは、ルールがノードに表示される順序が重要であることに注意してください。