第16章 詳細にわたるプロセスの概念およびタスク
16.1. ビジネスプロセスで Decision Model and Notation (DMN) サービスを呼び出す
Decision Model and Notation (DMN) を使用して、Business Central の意思決定要件ダイアグラム (DRD) でデシジョンサービスを描画を使ってモデル化し、Business Central のビジネスプロセスの一環としてその DMN サービスを呼び出すことができます。ビジネスプロセスは、DMN サービスを識別し、DMN 入力とビジネスプロセスプロパティー間でビジネスデータをマッピングすることにより、DMN サービスと対話します。
例として、この手順では、列車の経路ロジックを定義する TrainStation プロジェクトの例を使用します。このサンプルプロジェクトには、経路決定ロジック用に Business Central で設計された以下のデータオブジェクトと DMN コンポーネントが含まれています。
Train オブジェクトの例
public class Train {
private String departureStation;
private String destinationStation;
private BigDecimal railNumber;
// Getters and setters
}
図16.1 Compute Rail DMN モデルの例

図16.2 Rail DMN デシジョンテーブルの例

図16.3 tTrain DMN データタイプの例

Business Central での DMN モデルの作成方法に関する詳細は、DMN モデルを使用したデシジョンサービスの作成 を参照してください。
前提条件
- 必要なすべてのデータオブジェクトと DMN モデルコンポーネントは、プロジェクトで定義済みである。
手順
- Business Central で、Menu → Design → Projects に移動して、プロジェクト名をクリックします。
- DMN サービスを呼び出すビジネスプロセスアセットを選択または作成します。
- プロセスデザイナーで、左側のツールバーを使用して通常どおりに BPMN コンポーネントをドラッグアンドドロップし、ビジネスプロセスロジック、接続、イベント、タスク、またはその他の要素全体を定義します。
ビジネスプロセスに DMN サービスを組み込むには、左側のツールバーまたは開始ノードオプションから Business Rule タスクを追加し、プロセスフローの関連する場所にタスクを挿入します。
この例では、以下の
Accept Trainビジネスプロセスは、DMN サービスをRoute To Railノードに組み込みます。図16.4 DMN サービスを使用した
Accept Trainビジネスプロセスの例
DMN サービスに使用するビジネスルールタスクノードを選択し、プロセスデザイナーの右上隅にある Properties をクリックしてから、Implementation/Execution で以下のフィールドを定義します。
-
Rule Language:
DMNを選択します。 -
Namespace: DMN モデルファイルから一意の名前空間を入力します。例:
https://www.drools.org/kie-dmn -
Decision Name: 選択したプロセスノードで呼び出す DMN デシジョンノードの名前を入力します。例:
Rail DMN Model Name: DMN モデル名を入力します。例:
Compute Rail重要root ノードを使用する場合は、Namespace フィールドと DMN Model Name フィールドに DMN ダイアグラムと同じ BPMN の値で設定されるようにします。
-
Rule Language:
Data Assignments → Assignments 配下で Edit アイコンをクリックし、DMN の入力および出力データを追加して、DMN サービスとプロセスデータ間のマッピングを定義します。
この例の
Route To RailDMN サービスノードの場合は、DMN モデルの入力ノードに対応するTrainの入力割り当てを追加し、DMN モデルのデシジョンノードに対応するRailの出力割り当てを追加します。Data Type は、DMN モデルでそのノードに設定したタイプに一致する必要があり、Source および Target の定義は、指定されたオブジェクトに関連する変数またはフィールドです。図16.5
Route To RailDMN サービスノードの入力および出力のマッピングの例
- Save をクリックして、入力データおよび出力データを保存します。
完了した DMN サービスをどのように処理するかに応じて、ビジネスプロセスの残りの部分を定義します。
この例では、Properties → Implementation/Execution → On Exit Action の値が以下のコードに設定され、
Route To RailDMN サービスの完了後にレール番号を保存します。On Exit Actionのサンプルコードtrain.setRailNumber(rail);
レール番号が計算されない場合、プロセスは、以下の条件式で定義された
No Appropriate Rail終了エラーノードに到達します。図16.6
No Appropriate Rail終了エラーノードの条件の例
レール番号が計算されると、プロセスは、以下の条件式で定義された
Accept Trainスクリプトタスクに到達します。図16.7
Accept Trainスクリプトタスクノードの条件の例
Accept Trainスクリプトタスクは、Properties → Implementation/Execution → Script で、以下のスクリプトも使用して、列車のルートと現在のレールに関するメッセージを出力します。com.myspace.trainstation.Train t = (com.myspace.trainstation.Train) kcontext.getVariable("train"); System.out.println("Train from: " + t.getDepartureStation() + ", to: " + t.getDestinationStation() + ", is on rail: " + t.getRailNumber());組み込まれた DMN サービスでビジネスプロセスを定義した後、プロセスデザイナーでプロセスを保存してプロジェクトをデプロイし、対応するプロセス定義を実行して DMN サービスを呼び出します。
この例では、TrainStation プロジェクトをデプロイし、対応するプロセス定義を実行する際に、
Accept Trainプロセス定義のプロセスインスタンスフォームを開いてdeparture stationフィールドおよびdestination stationフィールドを設定し、実行をテストします。図16.8
Accept Trainプロセス定義のプロセスインスタンスフォームの例
プロセスが実行されると、サーバーログに指定した列車のルートを示すメッセージが表示されます。
Accept Trainプロセスのサーバーログ出力の例Train from: Zagreb, to: Belgrade, is on rail: 1