Red Hat Training
A Red Hat training course is available for Red Hat Decision Manager
第1章 DMN 要素
DMN モデルは、以下の 5 つの要素で構成されます。
- 意思決定: 意思決定ロジックに基づいて、1 つ以上の入力が出力を決定するモデルのノード。
- 入力データ: 意思決定に必要な情報。この情報には、通常、レストランのピークの営業時間や、スタッフのアベイラビリティーなど、ビジネスレベルの概念やビジネス関連のオブジェクトが含まれます。
- ビジネスナレッジモデル: 意思決定ロジックで使用される再利用可能な要素。意思決定が使用するロジックは同じですが、サブの入力または決定が異なるため、ビジネスナレッジモデルを使用して、どの手順に従うかを決定します。
- ナレッジソース: 意思決定ロジックを具体化するなどの外部規則、ドキュメント、コミティー、ポリシーなど。ナレッジソースは、実行可能なビジネスルールというより、現実世界の要因への参照となります。
- デシジョンサービス: デシジョンサービスは、入力が十分に定義された、トップレベルの決定で、呼び出しサービスとして公開されます。このダイアグラムでは、角が丸いオーバーレイの長方形になります。デシジョンサービスは、外部アプリケーションまたはビジネスプロセス (BPMN) から呼び出せます。詳細は、DMN 仕様ドキュメントの 36 ページを参照してください。
図1.1 意思決定の基本要件のダイアグラム
1.1. FEEL を使用したルール表現
FEEL (Friendly Enough Expression Language) は、DMN 仕様に定義された新しい式言語です。これは、デシジョンモデルの構成にセマンティクスを割り当てて、意思決定のモデリングと、実行のギャップを埋めることを目的としています。DRD (decision requirements diagrams) の FEEL 式は、デシジョンテーブルまたはデシジョンノードのいずれかのテーブルセルに記述されます。FEEL 式は、意思決定ロジックを定義します。
DMN の FEEL の詳細は「OMG DMN 仕様」 を参照してください。
1.2. デシジョンテーブル
デシジョンテーブルは、1 つ以上のルールをテーブル形式で視覚的に表します。テーブルの各行が 1 つのルールになり、条件を定義する列と、その特定行に対する結果が含まれます。各行では、結果を正確に取得できるように条件の値を定義します。読みやすくするために、テーブルを表示する際に、より技術的な詳細を一部非表示にします。
図1.2 決定テーブルのサンプル
デシジョンテーブルは、ルールと決定のモデル化を行う (DMN などの) 多くの方法論や、(Red Hat Decision Manager で使用される Drools などの) 実装フレームワークでよく使用されます。
DMN と Drools では、デシジョンテーブルの概要が似ていますが、DMN デシジョンテーブルの構文とレイアウトは DMN 仕様によって定義され、Drools ネイティブのデシジョンテーブルは Drools プロジェクトによって定義されます。Red Hat Decision Manager のデシジョンテーブルでは両方をサポートしますが、取り換えることはできません。Drools デシジョンテーブルの詳細は 『アップロードしたデシジョンテーブルを使用したデシジョンサービスの作成』 を参照してください。
1.2.1. ヒットポリシー
ヒットポリシーは、複数のルールが 1 つのデシジョンテーブルに一致したときに、どのように結果に到達するかを定義します。結果に到達するためのポリシーを 5 つの中から 1 つ選択し、テーブルの右上にインジケーターを配置してポリシーを指定します。以下に示すインジケーターのタイプの後に表記される括弧の中身が、インジケーターとなります。
- Unique (U): 一致するルールを 1 つだけ許可します。重複はエラーとなります。
- Any (A): 複数のルールが一致するのを許可しますが、出力は同じである必要があります。一致している複数のルールで出力が同じでないと、エラーが発生します。
- Priority (P): 複数のルールが一致し、結果が異なるのを許可します。出力値 リストで最初に出力されるものが選択されます。
- First (F): ルールの順番に従い、最初に一致するのを使用します。
Collect (C+, C>, C<, C#): 集約関数に基づいて、複数のルールから出力を集めます。
- Collect ( C ): 任意のリストで値を集めます。
- Collect Sum (C+): 集計したすべての値の合計を出力します。値は数値でなければなりません。
- Collect Min (C<): 一致する中で最小の値を出力します。結果の値は、数値、日付、またはテキスト (辞書的順序) など、比較可能な値である必要があります。
- Collect Max (C>): 一致する中で最高の値を出力します。結果の値は、数値、日付、またはテキスト (辞書的順序) など、比較可能な値である必要があります。
- Collect Count (C#): 一致するルールの数を出力します。
1.3. ボックス式
ボックス式は、DMN モデルについて、コンテキスト、関数の定義、関数の呼び出し、その他の式で構成される表形式です。たとえば、以下のボックス式は、4 つのパラメーター(Product
、Rate
、Term
、および Amount
) を使用して、毎月の分割払いを計算する Installment calculation
関数を定義します。
図1.3 ボックス式の例