第6章 Business Central での DMN モデルの作成および編集
Business Central の DMN デザイナーを使用すると、DMN 意思決定要件ダイアグラム (DRD) を設計し、完全で機能的な DMN 意思決定モデルの意思決定論理を定義できます。Red Hat Decision Manager は、適合レベル 3 の DMN 1.2 モデルに対する設計の両方のサポートを提供し、FEEL と DMN モデルコンポーネントの機能拡張と修正が含まれており、Red Hat Decision Manager での DMN 設計サービスの実装が最適化されます。Red Hat Decision Manager では、適合レベル 3 の DMN 1.1、1.2、1.3、1.4 に対してランタイムをサポートしますが、Business Central にインポートした DMN 1.1 および 1.3 (DMN 1.3 機能は含まない) はすべて、DMN デザイナーで開かれ、保存時に DMN 1.2 モデルに変換されます。
手順
-
Business Central で、Menu
Design Projects に移動して、プロジェクト名をクリックします。 Business Central プロジェクトで DMN ファイルを作成するか、インポートします。
DMN ファイルを作成するには、Add Asset
DMN をクリックし、わかりやすい DMN モデル名を入力して、適切な Package を選択してから、Ok をクリックします。 既存の DMN ファイルをインポートするには、Import Asset をクリックし、DMN モデル名を入力して、適切な Package を選択し、アップロードする DMN ファイルを選択してから Ok をクリックします。
新しい DMN ファイルが Project Explorer の DMN パネルに表示され、DMN 意思決定要件ダイアグラム (DRD) のキャンバスが表示されます。
注記レイアウトの情報が含まれていない DMN ファイルをインポートした場合は、インポートした意思決定要件ダイアグラム (DRD) は DMN デザイナーで自動的にフォーマットされます。DMN デザイナーで Save をクリックして、DRD レイアウトを保存します。
インポートした DRD が自動的にフォーマットされていない場合、DMN デザイナーの右上のツールバーにある Perform automatic layout アイコンを選択して DRD をフォーマットしてください。
左側のツールバーから DMN ノードの 1 つをクリックしてドラッグし、新規またはインポートした DMN 意思決定要件ダイアグラム (DRD) にコンポーネントを追加しはじめてください。
図6.1 DRD コンポーネントの追加
以下の DRD コンポーネントを利用できます。
- デシジョン: DMN ディジョンにこのノードを使用します。1 つ以上の要素が定義したデシジョンロジックをもとに出力を決定するノード。
- ビジネスナレッジモデル: 1 つまたは複数のデシジョン要素が含まれる再利用可能な関数には、このノードを使用します。同じロジックですが、サブの入力または決定が異なるため、ビジネスナレッジモデルを使用してどの手順に従うかを決定します。
- ナレッジソース: デシジョンまたはビジネスナレッジモデルを規定する外部の機関、ドキュメント、委員会またはポリシーにはこのノードを使用します。ナレッジソースは、実行可能なビジネスルールではなく、実際の要因への参照となります。
- 入力データ: デシジョンノードまたはビジネスナレッジモデルで使用する情報にはこのノードを使用します。入力データには通常、融資戦略で使用するローン申請データなど、ビジネスに関連するビジネスレベルのコンセプトまたはオブジェクトが含まれます。
- テキストのアノテーション: 入力データノード、デシジョンノード、ビジネスナレッジモデル、またはナレッジソースに関連するアノテーションにはこのノードを使用します。
- デシジョンサービス: 呼び出し用にデシジョンサービスとして実装される再利用可能なデシジョンセットを含めるにはこのノードを使用します。デシジョンサービスは、他の DMN モデルで使用し、外部アプリケーションまたは BPMN ビジネスプロセスから呼び出しできます。
- DMN デザイナーキャバスで、新規の DRD ノードをダブルクリックして情報ノード名を入力します。
ノードがデシジョンまたはビジネスナレッジモデルの場合は、ノードオプションを表示するノードを選択して Edit アイコンをクリックし、DMN ボックス式を開き、ノードのデシジョンロジックを定義します。
図6.2 新規デシジョンノードのボックス式の表示
図6.3 新規ビジネスナレッジモデルのボックス式の表示
デフォルトでは、ビジネスナレッジモデルはすべて、リテラル FEEL 式、外部の JAVA または PMML 関数のネスト化されたコンテキスト式、またはあらゆる型のネスト化されたボックス式を含む、ボックス関数式として定義されます。
デシジョンノードの場合は、定義されていないテーブルをクリックし、ボックスリテラル式、ボックスコンテキスト式、デシジョンテーブル、またはその他の DMN ボックスコンテキスト式など、使用するボックス式のタイプを選択します。
図6.4 デシジョンノードの論理タイプの選択
ビジネスナレッジモデルの場合は、左上の関数セルをクリックして関数型を選択するか、関数値のセルを右クリックし、Clear を選択して、別の型のボックス式を選択します。
図6.5 ビジネスナレッジモデルの機能または他のロジックタイプの選択
デザインノード (任意の式タイプ) またはビジネスナレッジモデル (関数式) のいずれかに対して選択したボックス式デザイナーで、該当するテーブルセルをクリックして、デシジョンロジックに含めるテーブル名、変数データ型、変数名、値、関数パラメーター、バインディング、FEEL 式を定義します。
セルを右クリックして、テーブルの行および列の挿入または削除、テーブルのコンテンツの消去など、随時、追加のアクションを実行します。
以下は、ローン申請者のクレジットスコアの定義範囲をもとに、クレジットスコアの評価を決定するデシジョンノードのデシジョンテーブルの一例です。
図6.6 クレジットスコア評価のデシジョンノードのデシジョンテーブル
以下は、元金、利子、税金、保険 (PITI) をもとに、リテラル式として住宅ローンの支払額を計算するビジネスナレッジモデルのボックス関数式の一例です。
図6.7 PITI 計算のビジネスナレッジモデルの関数
- 選択したノードのデシジョンロジックを定義した後に、Back to "<MODEL_NAME>" をクリックして DRD ビューに戻ります。
選択した DRD ノードについては、利用可能な接続オプションを使用して、DRD の次のノードを作成して接続するか、左のツールバーから DRD キャンバスに新規ノードをクリックしてドラッグします。
ノードタイプで、どの接続オプションがサポートされているかが決まります。たとえば、入力データ ノードは、アプリケーションの接続タイプを使用してデシジョンオード、ナレッジソース、またはテキストのアノテーションを接続できますが、ナレッジソース ノードは、どの DRD 要素にでも接続できます。デシジョン ノードは、別のデシジョンまたはテキストアノテーションにだけ接続できます。
以下の接続タイプは、ノードの種類に応じて利用できます。
- 情報要件: 入力データノードまたはデシジョンノードから、情報を必要とする別のデシジョンノードに移動するにはこの接続を使用します。
- ナレッジ要件: ビジネスナレッジモデルからデシジョンロジックを呼び出す別のビジネスナレッジモデルまたはデシジョンノードに移動するにはこの接続を使用します。
- 認証局の要件: 入力データノードまたはデシジョンノードから従属するナレッジソース、またはナレッジソースからデシジョンノード、ビジネスナレッジモデルまたは別のナレッジソースに移動するにはこの接続を使用します。
- 関連付け: 入力データノード、デシジョンノード、ビジネスナレッジモデル、またはナレッジソースからテキストアノテーションに移動するにはこの接続を使用します。
図6.8 クレジットスコアの入力からクレジットスコア評価のデシジョンへの接続
継続して、デシジョンモデルの残りの DRD コンポーネントを追加し、定義します。DMN デザイナーで定期的に Save をクリックして作業を保存します。
注記DRD を定期的に保存すると、DMN デザイナーは DMN モデルを静的に検証し、モデルが完全に定義されるまでエラーメッセージを出力する可能性があります。DMN モデルをすべて定義し終えてもエラーが発生する場合は、特定の問題を随時トラブルシューティングしてください。
DRD の全コンポーネントを追加して定義した後に、Save をクリックし、完了した DRD を保存して検証します。
DRD レイアウトを調節するには、DMN デザイナーの右上のツールバーにある Perform automatic layout アイコンを選択してください。
以下は、ローンの事前審査デシジョンモデルの DRD の一例です。
図6.9 ローンの事前審査の完全な DRD
以下は、再利用可能なデシジョンサービスを使用した電話対応デシジョンモデルの DRD 例です。
図6.10 デシジョンサービスを使用した電話対応の完全な DRD
DMN デシジョンサービスノードでは、一番下のセグメントデシジョンノードはデシジョンサービス外からの入力データを組み込んで、デシジョンサービスノードにある一番上のセグメントの最終地点に行き着きます。デシジョンサービスから返される上位のデシジョンは、後続のデシジョンまたは DMN モデルのビジネスナレッジ要件に実装されます。他の DMN モデル内の DMN デシジョンサービスを再利用し、異なる入力データや外向け接続で、同じデシジョンロジックを適用します。
6.1. Business Central でボックス式を使用した DMN デシジョンロジックの定義
DMN のボックス式は、意思決定要件ダイアグラム (DRD) でデシジョンノードおよびビジネスナレッジモデルの基盤ロジックを定義するのに使用するテーブルです。ボックス式には他のボックス式が含まれる場合がありますが、トップレベルのボックス式は単一の DRD アーティファクトのデシジョンロジックに対応します。DRD は DMN デシジョンモデルのフローを表現し、ボックス式は個別ノードの実際のデシジョンロジックを定義します。DRD とボックス式は、完全で機能的な DMN デシジョンモデルを形成します。
Business Central で DMN デザイナーを使用して、同梱のボックス式で DRD コンポーネントのデシジョンロジックを定義できます。
前提条件
- Business Central で DMN ファイルを作成しているか、インポートしている。
手順
-
Business Central で Menu
Design Projects に移動して、プロジェクト名をクリックし、変更する DMN ファイルを選択します。 DMN デザイナーのキャンバスで、定義するデシジョンノードまたはビジネスナレッジモデルノードを選択し、Edit アイコンをクリックして DMN ボックス式デザイナーを開きます。
図6.11 新規デシジョンノードのボックス式の表示
図6.12 新規ビジネスナレッジモデルのボックス式の表示
デフォルトでは、ビジネスナレッジモデルはすべて、リテラル FEEL 式、外部の JAVA または PMML 関数のネスト化されたコンテキスト式、またはあらゆる型のネスト化されたボックス式を含む、ボックス関数式として定義されます。
デシジョンノードの場合は、定義されていないテーブルをクリックし、ボックスリテラル式、ボックスコンテキスト式、デシジョンテーブル、またはその他の DMN ボックスコンテキスト式など、使用するボックス式のタイプを選択します。
図6.13 デシジョンノードの論理タイプの選択
ビジネスナレッジモデルノードの場合は、左上の関数セルをクリックして関数型を選択するか、関数値のセルを右クリックし、Clear を選択して、別の型のボックス式を選択します。
図6.14 ビジネスナレッジモデルの機能または他のロジックタイプの選択
この例では、デシジョンノードを使用して、ボックス式タイプとして デシジョンテーブル を使用します。
DMN のデシジョンテーブルは、1 つ以上のルールをテーブル形式で視覚的に表します。テーブルの各行はルール 1 つで構成されており、その特定行に対する条件 (入力) と結果 (出力) を定義する列が含まれます。
-
入力列のヘッダーをクリックして、入力条件の名前とデータ型を定義します。たとえば、入力列に Credit Score.FICO という名前で、
number
のデータ型を指定します。この列は、数字のクレジットスコア値または、各種ローン申請者を指定します。 出力列ヘッダーをクリックして、出力値の名前とデータ型を定義します。たとえば、出力列に Credit Score Rating という名前を指定して、Data Type オプションの横で Manage をクリックし、Data Types ページに移動して、スコア評価を制約として、カスタムのデータ型を作成します。
図6.15 列のヘッダー値のデータ型管理
Data Types ページで、New Data Type をクリックして新規データ型を追加するか、Import Data Object をクリックして、使用するプロジェクトから既存のデータオブジェクトを DMN データ型としてインポートします。
プロジェクトから DMN データ型としてデータオブジェクトをインポートしてから、そのオブジェクトを更新した場合は、DMN データ型としてデータオブジェクトを再インポートして DMN モデルに変更を適用する必要があります。
この例では、New Data Type をクリックし、Credit_Score_Rating のデータ型を
string
で作成します。図6.16 新しいデータ型の追加
Add Constraints をクリックして、ドロップダウンオプションから Enumeration を選択し、以下の制約を追加します。
-
"Excellent"
-
"Good"
-
"Fair"
-
"Poor"
-
"Bad"
図6.17 新しいデータ型への制約の追加
データ型の制約の順序を変更するには、必要に応じて、制約の行の左端をクリックしてその行をドラッグします。
図6.18 制約をドラッグして制約順序を変更
指定のデータ型の制約タイプと構文要件に関する情報は、Decision Model and Notation specification を参照してください。
-
- OK をクリックして制約を保存し、データ型の右側のチェックマークをクリックしてデータ型を保存します。
- Credit Score Rating デシジョンテーブルに戻り、Credit Score Rating 列ヘッダーをクリックして、保存したデータ型をこの新規カスタムデータ型に設定します。
Credit Score.FICO の入力列を使用して、クレジットスコアの値またはクレジットの範囲を定義し、Credit Score Rating 列を使用して、Credit_Score_Rating のデータ型で定義した対応する評価の 1 つを指定します。
値のセルを右クリックして、行 (ルール) および列 (句) を挿入または削除します。
図6.19 クレジットスコア評価のデシジョンノードのデシジョンテーブル
全ルールを定義した後に、デシジョンテーブルの左上隅をクリックして、ヒットポリシー と 組み込みアグリゲーター (COLLECT ヒットポリシーのみ) のルールを定義します。
ヒットポリシーは、デシジョンテーブルにある複数のルールが指定の入力値とマッチした場合にどのように結果に到達するのかを決定します。組み込みアグリゲーターは、COLLECT ヒットポリシーを使用する場合にどのようにルール値を累積するかを決定します。
図6.20 デシジョンテーブルヒットポリシーの定義
以下のデシジョンテーブルは、より複雑なデシジョンテーブルで、ローン事前審査のデシジョンモデルで終端デシジョンノードとして、申請者のローン適正を決定します。
図6.21 ローン事前審査のデシジョンテーブル
デシジョンテーブル以外のボックス式タイプの場合は、ボックス式のテーブルを移動して、デシジョンロジックの変数とパラメーターを定義するのと同様にこれらのガイドラインに従いますが、ボックス式のタイプの要件に従うようにしてください。ボックスリテラル式など、ボックス式の一部では列が 1 つのテーブルの場合や、関数、テキスト、呼び出し式などのボックス式は、他のタイプのボックス式がネスト化された、列が複数あるテーブルの場合もあります。
たとえば、以下のボックスコンテキスト式では、サブコンテキスト式が含まれるフロントエンドの割合計算として表現されている PITI (元金 (Principal)、利子 (Interest)、税金 (Tax)、保険 (Insurance)) をもとに、ローンの申請者が最小限必要とされるローンの支払いをしているかを決定するパラメーターを定義します。
図6.22 フロントエンドクライアント PITI 割合のボックスコンテキスト式
以下のボックス関数式では、ネスト化されたコンテキスト式として定義された関数値を使用し、融資のデシジョンのビジネスナレッジモデルとして、住宅ローンの月額を決定します。
図6.23 ビジネスナレッジモデルのローン計算で使用するボックス関数式
各ボックス式のタイプの例および詳細は、「ボックス式の DMN デシジョンロジック」 を参照してください。