Red Hat Training

A Red Hat training course is available for Red Hat Decision Manager

ガイド付きデシジョンテーブルを使用したデシジョンサービスの作成

Red Hat Decision Manager 7.0

Red Hat Customer Content Services

概要

本書は、Red Hat Decision Manager 7.0 で、ガイド付きデシジョンテーブルを使用してデシジョンサービスを作成する方法を説明します。

前書き

ビジネス分析者またはビジネスルールの開発者は、ガイド付きデシジョンテーブルを使用して、ウィザード手動のテーブル形式でビジネスルールを定義できます。このルールは Drools Rule Language (DRL) に組み込まれ、プロジェクトのデシジョンサービスの中心となります。

前提条件

ガイド付きデシジョンテーブルのチームおよびプロジェクトが Decision Central に作成されていて、各アセットが、チームに割り当てられたプロジェクトに関連付けられています。詳細は『デシジョンサービスの使用ガイド』 を参照してください。

第1章 Red Hat Decision Manager におけるルール作成アセット

Red Hat Decision Manager は、デシジョンサービスにビジネスルールを作成するのに使用するアセットを提供します。ルール作成アセットはそれぞれ長所が異なるため、ゴールおよびニーズに適したアセットを 1 つ、または複数を組み合わせて使用できます。

デシジョンサービスでルールを作成する最適な方法を選択できるように、以下の表で、Decision Central のルール作成アセットを紹介します。

表1.1 Decision Central におけるルール作成アセット

アセット主な特徴ドキュメンテーション

ガイド付きデシジョンテーブル

  • Decision Central の UI ベースのテーブルデザイナーで作成するルールのテーブル
  • デシジョンテーブルのスプレッドシートをアップロードする代わりに、ウィザードを用いて作成する
  • 条件を満たした入力に、フィールドとオプションを提供する
  • ルールテンプレートを作成するテンプレートキーと値をサポートする
  • その他のアセットではサポートされていない、ヒットポリシー、リアルタイム検証などの追加機能をサポートする
  • コンパイルエラーを最小限に抑えるため、制限されているテーブル形式でルールを作成するのに最適

ガイド付きデシジョンテーブルを使用したデシジョンサービスの作成

アップロードしたデシジョンテーブル

  • Decision Central にアップロードした XLS または XLSX 形式のデシジョンテーブルスプレッドシート
  • ルールテンプレートを作成するテンプレートキーと値をサポートする
  • Decision Central 外で管理しているデシジョンテーブルでルールを作成するのに最適
  • アップロード時に適切にルールをコンパイルするために厳しい構文要件がある

アップロードしたデシジョンテーブルを使用したデシジョンサービスの作成

ガイド付きルール

  • Decision Central の UI ベースのルールデザイナーで作成する個々のルール
  • 条件を満たした入力に、フィールドとオプションを提供する
  • コンパイルエラーを最小限に抑えるため、制御されている形式で単独のルールを作成するのに最適

ガイド付きルールを使用したデシジョンサービスの作成

ガイド付きルールテンプレート

  • Decision Central の UI ベースのテンプレートデザイナーで作成する再利用可能なルール構造
  • 条件を満たした入力に、フィールドとオプションを提供する
  • (このアセットの基本となる) ルールテンプレートを作成するテンプレートキーと値をサポートする
  • ルール構造が同じで、定義したフィールド値が異なるルールを多数作成するのに最適

ガイド付きルールテンプレートを使用したデシジョンサービスの作成

DRL ルール

  • .drl テキストファイルに直接定義する個々のルール
  • ルールと、ルール動作に関するその他の技術を定義する柔軟性が最も高い
  • スタンドアロン環境で作成し、Red Hat Decision Manager に統合可能
  • 高度な DRL オプションが必要なルールを作成するのに最適
  • ルールを適切にコンパイルするために厳しい構文要件がある

DRL ルールを使用したデシジョンサービスの作成

第2章 ガイド付きデシジョンテーブル

ガイド付きデシジョンテーブルは、アップロードするデシジョンテーブルのスプレッドシートに代わる方法で、ウィザードを用いて表形式でビジネスルールを定義します。ガイド付きデシジョンテーブルでは、プロジェクトで指定したデータオブジェクトをもとに、Decision Central の UI ベースのウィザードに従ってルール属性、メタデータ、条件、およびアクションを定義します。ガイド付きデシジョンテーブルを作成すると、定義したルールは、その他のすべてのルールアセットとともに Drools Rule Language (DRL) ルールにコンパイルされます。

ガイド付きデシジョンテーブルに関連するすべてのデータオブジェクトは、ガイド付きデシジョンテーブルと同じプロジェクトパッケージに置く必要があります。同じパッケージに含まれるアセットはデフォルトでインポートされます。必要なデータオブジェクトとガイド付きデシジョンテーブルを作成したら、ガイド付きデシジョンテーブルデザイナーの Data Objects タブから、必要なデータオブジェクトがすべてリストされていることを検証したり、 新規アイテム を追加してその他の既存データオブジェクトをインポートしたりできます。

第3章 データオブジェクト

データオブジェクトは、作成するルールアセットの構成要素です。データオブジェクトは、プロジェクトで指定したパッケージに Java オブジェクトとして実装されているカスタムのデータタイプです。たとえば、データフィールド NameAddress、および Date of Birth を使用して Person オブジェクトを作成し、ローン申し込みルールに詳細な個人情報を指定できます。このカスタムのデータタイプは、アセットとデシジョンサービスがどのデータに基づいているかを指定します。

3.1. データオブジェクトの作成

定義するデータオブジェクトは、プロジェクトのルールアセットの構成要素を定義し、アセットとデシジョンサービスがどのデータに基づいているかを指定します。

手順

  1. MenuDesignProjects に移動して、プロジェクト名をクリックします。
  2. Create New AssetData Object をクリックします。
  3. 一意の データオブジェクト 名を入力し、パッケージ を選択します。これにより、その他のルールアセットでもデータオブジェクトを利用できるようになります。同じパッケージに、同じ名前のデータオブジェクトを複数作成することはできません。指定するパッケージは、そのデータオブジェクトを必要とするルールアセットが割り当てられている、もしくはこれから割り当てるパッケージにする必要があります。

    別のパッケージからのデータオブジェクトのインポート

    ルールアセットのパッケージに、別のパッケージから既存のデータオブジェクトをインポートすることもできます。インポートするオブジェクトを選択するには、Project Explorer から (ガイド付きデシジョンテーブル、ガイド付きルールなどの) アセットパネルを展開し、特定のアセットを選択し、アセットデザイナーで Data Objects → New item に移動します。

  4. データオブジェクトを永続化するには、Persistable チェックボックスを選択します。永続型データオブジェクトは、JPA 仕様に準じてデータベースに保存できます。デフォルトの JPA は Hibernate です。
  5. OK をクリックします。
  6. データオブジェクトデザイナーで add field をクリックして、Id 属性、Label 属性、Type 属性を使用するオブジェクトにフィールドを追加します。必須属性にはアスタリスク (*) マークが付いています。

    • Id: フィールドの一意の ID を入力します。
    • Label: (任意) フィールドのラベルを入力します。
    • Type: フィールドのデータ型を入力します。
    • List: このチェックボックスを選択すると、このフィールドで、指定したタイプのアイテムを複数保持できるようになります。

      図3.1 データオブジェクトへのデータフィールドの追加

      Add data fields to a data object
  7. Create をクリックして、新しいフィールドを追加します。Create and continue をクリックすると、新しいフィールドが追加され、別のフィールドを引き続き作成できます。

    注記

    フィールドを編集するには、フィールド行を選択し、画面右側の general properties を使用します。

第4章 ガイド付きデシジョンテーブルの作成

ガイド付きデシジョンテーブルを使用して、ルール属性、メタデータ、条件、およびアクションを表形式で定義し、ビジネスルールプロジェクトに追加できます。

手順

  1. MenuDesignProjects に移動して、プロジェクト名をクリックします。
  2. Create New AssetGuided Decision Table をクリックします。
  3. ガイド付きデシジョンテーブル 名を入力し、適切な パッケージ を選択します。指定するパッケージは、必要なデータオブジェクトが割り当てられている、またはこれから割り当てるパッケージにする必要があります。
  4. Use Wizard を選択して、ウィザードでテーブルの設定を終わらせるか、このオプションは選択せずにテーブル作成を終わりにし、ガイド付きデシジョンテーブルデザイナーで残りの設定を行います。
  5. テーブルのルール行が準拠するヒットポリシーを選択します。詳細は「5章ガイド付きデシジョンテーブルのヒットポリシー」を参照してください。
  6. テーブルの形式を、拡張エントリ制限エントリ から選択します。詳細は「ガイド付きデシジョンテーブルの種類」を参照してください。
  7. OK をクリックして設定を完了します。Use Wizard をクリックすると、ガイド付きデシジョンテーブルが表示されます。Use Wizard オプションを選択しないとこのプロンプトは表示されず、テーブルデザイナーが表示されます。

    図4.1 ガイド付きデシジョンテーブルの作成

    6326 1
  8. ウィザードを使用する場合は、利用可能なインポート、ファクトパターン、制約、およびアクションを追加して、テーブルの列を拡張するかどうかを選択します。Finish をクリックしてウィザードを閉じ、テーブルデザイナーを表示します。

    図4.2 ガイド付きデシジョンテーブルのウィザード

    6328 1

ガイド付きデシジョンテーブルデザイナーで、列および行を追加または編集し、最終調整を行います。

列の追加については「6章ガイド付きデシジョンテーブルへの列の追加」を参照してください。

行の追加については「9章ガイド付きデシジョンテーブルで行の追加およびルールの定義」を参照してください。

第5章 ガイド付きデシジョンテーブルのヒットポリシー

ヒットポリシーは、ガイド付きデシジョンテーブルのルール (行) を適用する順番 (上から下、優先順位を指定した順など) を指定します。

次のヒットポリシーが利用できます。

  • None: (デフォルトのヒットポリシー) 複数の行を実行できます。競合している行については検証により警告されます。(ガイド付きデシジョンテーブル以外のスプレッドシート使用して) アップロードされているデシジョンテーブルには、このヒットポリシーが適用されます。
  • Resolved Hit: 指定されている優先順位に従って同時に実行できる行は 1 つだけです 。リストされている順序は無視されます (たとえば、行 10 の優先順位を行 5 よりも高くできます)。したがって、視覚的な分かりやすさを基準に行の順番を決め、それとは別に優先順位を指定することができます。
  • Unique Hit: 同時に実行できる行は 1 つだけです。一致する条件は重複しないようにする必要があります。複数の行が実行すると、開発時に検証により警告が生成されます。
  • First Hit: 同時に実行できる行は 1 つだけです。テーブルの順番に従って、上から下に実行します。
  • Rule Order: 複数の行を実行できます。行の競合は期待されるため、報告されません。

図5.1 利用可能なヒットポリシー

hit policies image 1

5.1. ヒットポリシーの例: 映画観賞券の割引価格を定めるデシジョンテーブル

以下の表は、映画観賞券の割引価格を、顧客の年齢、学生かどうか、軍隊経験があるかどうかに基づいて定めるデシジョンテーブルです。

表5.1 映画観賞券で利用可能な割引価格を定めたデシジョンテーブル

行番号割引の種類割引価格

1

高齢者 (60 歳以上)

10%

2

学生

10%

3

軍隊経験

10%

最終的に適用される割引合計は、以下のように、テーブルに指定したヒットポリシーによって変わります。

  • None/Rule Order: ヒットポリシー None および Rule Order では、適用可能なルールがすべて組み込まれ、それぞれの顧客に適用される割引が積み重ねられます。

    例: 現在学生で、軍隊経験がある高齢者には、3 つの割引がすべて適用され、合計 30% の割引になります。

    重要な相違点: None では、複数の行が適用されると警告が作成されます。Rule Order では、この警告が作成されません。

  • First Hit/Resolved Hit: ヒットポリシー First Hit および Resolved Hit ポリシーでは、割引の中から 1 つだけが適用されます。

    First Hit の場合は、リストの中で最初に満たされた割引が適用され、その他の割引は適用されません。

    例: 現在学生で、軍隊経験がある高齢者には、テーブルに最初にリストされている高齢者割引 10% だけが適用されます。

    Resolved Hit の場合は、テーブルの修正が必要になります。テーブルで優先順位の例外を割り当てた割引が、リストされた順番にかかわらず最初に適用されます。この例外を割り当てるには、割引 (行) の優先順位を指定する新しい列を追加します。

    例: 軍隊経験者向けの割引の優先順位が、高齢者向けまたは学生向けの割引よりも高く設定されている場合、現在学生で、軍隊経験がある高齢者には、軍隊経験者の割引 10% が適用されます。ここでは、高齢者もしくは学生であるかどうかは関係ありません。

    Resolved Hit ポリシーを適用して修正したデシジョンテーブルをご覧ください。

    表5.2 Resolved Hit ポリシーを適用して修正したデシジョンテーブル

    行番号割引の種類優先する行割引価格

    1

    高齢者 (60 歳以上)

     

    10%

    2

    学生

     

    10%

    3

    軍隊経験

    1

    10%

    この修正したテーブルでは、軍人経験者向けの割引が事実上の行 1 になるため、高齢者向けと学生向けの割引よりも優先され、その後でその他の割引が追加されます。優先順位は、行 1 に対する優先だけを指定する必要があり、「行 1 および行 2」の両方に指定する必要はありません。この変更により、行のヒット順は、3 → 1 → 2 となり、さらに行が増えた場合はこの後に続きます。

    注記

    ここで変更した行の順番は、軍隊経験者向けの割引を行 1 に移動して First Hit ポリシーをテーブルに適用した場合と同じになります。ただし、ルールを特定の順番で並べ (アルファベット順)、ルールの適用順を変更したい場合は、Resolved Hit ポリシーが便利です。

    重要な相違点: First Hit を使用すると、ルールの適用順はリストした順番に固定されます。Resolved Hit を使用すると、指定された優先順位の例外を除いて、リストされた順にルールが適用されます。

  • Unique Hit: テーブルの修正が必要になります。Unique Hit ポリシーを使用する場合は、一度に複数の行を適用できないように行を作成する必要があります。ただし、ルールを 1 つまたは複数適用するかどうかは、行ごとに指定できます。この方法では、Unique Hit ポリシーを使用した場合に重複の警告が表示されないように、デシジョンテーブルの粒度をより細かくできます。

    Unique Hit ポリシーを適用して修正したデシジョンテーブルをご覧ください。

    表5.3 Unique Hit ポリシーを適用して修正デシジョンテーブル

    行番号高齢者 (65 歳以上)学生軍隊経験割引価格

    1

    はい

    いいえ

    いいえ

    10%

    2

    いいえ

    はい

    いいえ

    10%

    3

    いいえ

    いいえ

    はい

    10%

    4

    はい

    はい

    いいえ

    20%

    5

    はい

    いいえ

    はい

    20%

    6

    いいえ

    はい

    はい

    20%

    7

    はい

    はい

    はい

    30%

    この修正したテーブルでは、各行が一意で、重複はできず、1 つまたは複数の割引が適用されます。

5.1.1. ガイド付きデシジョンテーブルの種類

Red Hat Decision Manager では、拡張エントリーテーブルと制限エントリーテーブルの 2 種類のデシジョンテーブルに対応します。

  • 拡張エントリー: 拡張エントリーのデシジョンテーブルの列定義には、パターン、フィールド、演算子を指定します。値は指定しません。値またはステート (state) は、デシジョンテーブルの本体に保持されます。
  • 制限エントリー: 制限エントリーのデシジョンテーブルの列定義には、パターン、フィールド、演算子に加えて、値を指定します。デシジョンテーブルの本体には、デシジョンテーブルのステート (state) をブール値で指定します。正の値 (チェックボックスを選択した場合) はその列が適用され、負の値 (チェックボックスを選択しない場合) はその列が適用されないことを示しています。

第6章 ガイド付きデシジョンテーブルへの列の追加

ガイド付きデシジョンテーブルを作成したら、デシジョンテーブルデザイナーで、さまざまなタイプの列を定義して追加できます。

前提条件

ファクトやフィールドなど、列パラメーターに使用されるデータオブジェクトが、ガイド付きデシジョンテーブルと同じパッケージに作成されています。もしくは、ガイド付きデシジョンテーブルデバイザーの Data ObjectsNew item で、別のパッケージからインポートされています。

この列パラメーターの説明は「7章ガイド付きデシジョンテーブルの列の種類」の「必須の列パラメーター」を参照してください。

データオブジェクトの作成は 「データオブジェクトの作成」 を参照してください。

手順

  1. ガイド付きデシジョンテーブルで、ColumnsInsert Column をクリックします。
  2. Include advanced options をクリックして、列の全オプションを表示します。

    図6.1 列の追加

    View column options in the *Add a new column* window
  3. 追加する列の種類を選択して Next をクリックし、ウィザードの手順に従って、列を追加するのに必要なデータを指定します。

    列の各種類と、設定に必要なパラメーターは「7章ガイド付きデシジョンテーブルの列の種類」を参照してください。

  4. Finish をクリックして、設定した列を追加します。

列を追加したら、関連するルール行を列に追加し、デシジョンテーブルを完了します。詳細は「9章ガイド付きデシジョンテーブルで行の追加およびルールの定義」を参照します。

図6.2 完成したガイド付きデシジョンテーブルの例

Example of complete guided decision table

第7章 ガイド付きデシジョンテーブルの列の種類

ガイド付きデシジョンテーブルの Add a new column ウィザードは、次の列オプションを提供します (Include advanced options を選択して、すべてのオプションを表示します)。

Add a new column ウィザードで必要な列タイプとパラメーターは、以下のセクションで説明します。

重要: 列パラメーターに必要なデータオブジェクト

ファクトパターン、フィールドなど、このセクションで説明するいくつかの列パラメーターは、ガイド付きデシジョンテーブルと同じパッケージにすでに定義されているデータオブジェクトだけで構成されるドロップダウンオプションを提供します。パッケージで利用可能なデータオブジェクトは、Project Explorer の Data Objects パネル、およびガイド付きデシジョンテーブルデザイナーの Data Objects タブに一覧表示されます。必要に応じてパッケージにデータオブジェクトを追加したり、ガイド付きデシジョンテーブルデザイナーの Data ObjectsNew item で、別のパッケージからインポートしたりできます。データオブジェクトの作成の詳細は 「データオブジェクトの作成」 を参照してください。

7.1. "Add a Condition (条件の追加)"

条件はファクトパターンを表し、ルールの左側 (「WHEN」) に定義されます。この列オプションで、特定のフィールド値を使用して、データオブジェクトが存在するかどうかを確認し、ルールのアクション (「THEN」) 部分に影響を及ぼす条件列を 1 つ以上定義します。条件テーブルでファクトにバインディングを定義したり、以前定義したものを選択できます。パターンを無効にすることもできます。

例:

when
  $i : IncomeSource( type == "Asset" ) //Binds the IncomeSource object to the $i variable
then
  ...
end
when
  not IncomeSource( type == "Asset" ) //Negates matching pattern
then
  ...
end

バインディングを指定したら、フィールド制約を定義できます。同じファクトパターンのバインディングを使用して列を 2 つ以上定義すると、フィールド制約は、同じパターンに定義された複合フィールド制約になります。1 つのモデルクラスに複数のバインディングを定義すると、それぞれのバインディングは、そのルールの条件 (「WHEN」) で異なるモデルクラスになります。

必須の列パラメーター

この列タイプを設定するには、Add a new column ウィザードに以下のパラメーターが必要です。

  • Pattern: テーブルの条件に使用しているファクトパターンのリストから選択するか、新しいファクトパターンを作成します。ファクトパターンは、パッケージで利用可能なデータオブジェクト (詳細は「必要なデータオブジェクト」の注記を参照) と、指定するモデルクラスバインディングの組み合わせとなります (例: LoanApplication [application] または IncomeSource [income] 。括弧内は、指定したファクトタイプへのバインディング)。
  • Entry point: 可能な場合は、ファクトパターンのエントリーポイントを定義します。エントリーポイントは、指定するとファクトが Red Hat Decision Manager ルールエンジンに組み込まれるゲートまたはストリームです (例: Application StreamCredit Check Stream)。
  • Calculation type: 以下の計算タイプの中から 1 つ選択します。

    • Literal value: 演算子を使用して、セルの値とフィールドを比較します。
    • Formula: セルの表現を評価して、フィールドと比較します。
    • Predicate: フィールドは必要ありません。表現を true または false で評価します。
  • Field: 以前指定したファクトパターンからフィールドを選択します。フィールドオプションは、プロジェクトの Data Objects パネルのファクトファイルに定義されます (例: LoanApplication ファクトタイプの amount フィールドまたは lengthYears フィールド)
  • Binding (任意): 必要に応じて、以前選択したフィールドにバインディングを定義します (例: LoanApplication [application] パターン、amount フィールド、および equal to 演算子に、バインディング $amount を設定すると、終了条件は application : LoanAppplication($amount : amount == [value]) になります)。
  • Operator: 事前に指定したファクトパターンおよびフィールドに適用する演算子を選択します。
  • Value list (任意): コンマおよび空白文字で区切った値オプションのリストを入力して、ルールの条件 (「WHEN」) 部分のテーブル入力データを制限します。この値リストを定義すると、値は、その列のテーブルセルにドロップダウンリストとして提供され、ユーザーは、そこからオプションを 1 つだけ選択できます (リスト例: Monday、Wednesday、Friday の 3 つだけを指定可能)。
  • Default value (任意): 事前定義した値オプションのいずれかを、新しい列のセルに自動的に表示するデフォルト値として選択します。デフォルト値が指定されていないと、テーブルのセルはデフォルトでは空欄となります。また、Project Explorer の Enumeration Definitions パネルにリストした、プロジェクトに事前に設定したデータの列挙からデフォルト値を選択できます (列挙は、MenuDesignProjects[select project]Create New AssetEnumeration から作成できます)。
  • Header (説明): 列にヘッダーテキストを追加します。
  • Hide column: 選択すると列が非表示になり、選択を解除すると列が表示されます。

7.1.1. 条件列セルに any other 値を追加

ガイド付きデシジョンテーブルにおける単純な条件列では、以下のパラメーターを設定した場合に、列のテーブルセルに any other 値を適用できます。

  • 条件列の Calculation typeLiteral value に設定している。
  • Operator を、等価演算子 == または非等価演算子 != に設定している。

any other 値は、テーブルにすでに定義されているルールに明示的に定義している値以外を設定できるルールを有効にします。

例:

when
  IncomeSource( type not in ("Asset", "Job") )
  ...
then
  ...
end

手順

  1. == 演算子または != 演算子を使用する条件列のセルを選択します。
  2. テーブルデザイナーの右上のツールバーで、EditInsert "any other" value をクリックします。

7.2. "Add a Condition BRL fragment (条件 BRL フラグメントの追加)"

BRL (Business Rule Language) フラグメントは、ガイド付きルールデザイナーを使用して作成したセクションです。条件 BRL フラグメントはルールの 「WHEN」部分で、action BRL fragment (アクション BRL フラグメント) はルールの「THEN」の部分です。この列オプションを使用して、ルールの左側 (WHEN) 部分で使用する条件 BRL フラグメントを定義できます。単純な列タイプは、BRL フラグメントでバインドされているファクトおよびファクトフィールドを参照でき、これらのファクトおよびファクトのフィールドから列タイプへの参照も可能です。

ローン申し込みの条件 BRL フラグメントの例:

図7.1 組み込みガイド付きルールデザイナーを使用する条件 BRL フラグメントの追加

Condition BRL Fragment column for guided decision tables designer

条件オプションのリストから Free form DRL を選択して、組み込みガイド付きルールデザイナーを使用せずに条件 BRL フラグメントを定義します。

図7.2 Free form DRL を使用する条件 BRL フラグメントの追加

Condition BRL Fragment column for guided decision tables designer
Condition BRL Fragment column for guided decision tables designer
テンプレートキー

条件 BRL フラグメントにフィールドを追加すると、値オプションの 1 つが (Literal または Formula ではなく) テンプレートキー になります。テンプレートキーはプレースホルダー変数で、ガイド付きデシジョンテーブルを作成し、別の列に各テンプレートキー値を指定すると、指定した値に入れ替えられます。テンプレートキーの値は必要に応じて修正できます。

組み込みのガイド付きルールデザイナーでは、Template key フィールドオプションを選択し、エディターに $key 書式で値を入力し、テンプレートのキー値をフィールドに追加できます。たとえば、$age は、デシジョンテーブルに $age 列を作成します。

Free form DRL では、@{key} の書式でテンプレートのキー値をファクトに追加できます。たとえば、Person( age > @{age} ) にすると、デシジョンテーブルに $age 列が作成されます。

テンプレートキーを使用して追加した新しい列のデータ型は String です。

必須の列パラメーター

この列タイプを設定するには、Add a new column ウィザードに以下のパラメーターが必要です。

  • Rule Modeller: ルールの条件 BRL フラグメント ("WHEN" 部分) を定義します。
  • Header (説明): 列にヘッダーテキストを追加します。
  • Hide column: 選択すると列が非表示になり、選択を解除すると列が表示されます。

7.3. "Add a Metadata column (メタデータ列の追加)"

この列オプションを使用して、デシジョンテーブルでメタデータを列として定義できます。各列には、DRL ルールの通常のメタデータアノテーションが表示されます。デフォルトでは、メタデータ列は非表示になっています。列を表示するには、デシジョンテーブルデザイナーで Edit Columns をクリックし、Hide column チェックボックスの選択を解除します。

必須の列パラメーター

この列タイプを設定する Add a new column ウィザードには、以下のパラメーターが必要です。

  • Metadata: Java 変数書式のメタデータ項目の名前を入力します (つまり、空白文字または特殊文字を使用することはできません)。

7.4. "Add an Action BRL fragment (アクション BRL フラグメントの追加)"

BRL (Business Rule Language) フラグメントは、ガイド付きルールデザイナーを使用して作成したルールのセクションです。条件 BRL フラグメント はルールの「WHEN」部分で、アクション BRL フラグメントはルールの「THEN」部分です。この列オプションを使用すると、ルールの右側 (THEN) で使用するアクション BRL フラグメントを定義できます。BRL フラグメントでバインドされているファクトおよびファクトのフィールドは簡単な列タイプで参照でき、これらのファクトおよびファクトのフィールドから列タイプの参照も可能です。

ローン申し込みのアクション BRL フラグメントの例:

図7.3 組み込みガイド付きルールデザイナーを使用するアクション BRL フラグメントの追加

Action BRL Fragment in the guided decision tables designer

アクションオプションのリストから Add free form DRL を選択して、組み込みガイド付きルールデザイナーを使用しないアクション BRL フラグメントを定義します。

図7.4 Free form DRL を使用するアクション BRL フラグメントの追加

Action BRL Fragment column for guided decision tables designer
Action BRL Fragment column for guided decision tables designer
テンプレートキー

アクション BRL フラグメントにフィールドを追加すると、値オプションの 1 つが (Literal または Formula ではなく) テンプレートキー となります。テンプレートキーはプレースホルダー変数で、ガイド付きデシジョンテーブルを作成し、別の列に各テンプレートのキー値を指定すると、指定した値に入れ替えられます。デシジョンテーブルでは Literal 値および Formula 値は静的ですが、必要に応じてテンプレート値を修正できます。

組み込みのガイド付きルールデザイナーでは、Template key フィールドオプションを選択し、エディターに $key 書式で値を入力し、テンプレートのキー値をフィールドに追加できます。たとえば、$age は、デシジョンテーブルに $age 列を作成します。

Free form DRL では、@{key} の書式でテンプレートのキー値をファクトに追加できます。たとえば、Person( age > @{age} ) にすると、デシジョンテーブルに $age 列が作成されます。

テンプレートキーを使用して追加した新しい列のデータ型は String です。

必須の列パラメーター

この列タイプを設定するには、Add a new column ウィザードに以下のパラメーターが必要です。

  • Rule Modeller: ルールのアクション BRL フラグメントの定義 (「THEN」部分)
  • Header (説明): 列にヘッダーテキストを追加します。
  • Hide column: 選択すると列が非表示になり、選択を解除すると列が表示されます。

7.5. "Add an Attribute column (属性列の追加)"

この列オプションを使用して、Saliance、Enabled、Date-Effective などの DRL ルール属性を表現する属性列を 1 つ以上追加できます。

例:

rule "Rule1"
salience 100 // This rule has the highest priority
when
  $i : IncomeSource( type == "Asset" )
then
  ...
end

各属性の説明について、ウィザードのリストから属性を選択します。

ヒットポリシーおよび属性

デシジョンテーブルに定義したヒットポリシーに応じて、ヒットポリシーが内部的に使用されているため、一部の属性を無効にできます。たとえば、Resolved Hit ポリシーをこのテーブルに割り当てて、テーブルに指定した優先順位に従って行 (ルール) を適用すると、Salience 属性が使用されなくなります。Salience 属性は、定義した salience (優先順位) 値に従って、ルールの優先順位をエスカレーションし、値は、テーブルの Resolved Hit ポリシーによって上書きされるためです。

必須の列パラメーター

この列タイプを設定する Add a new column ウィザードには、以下のパラメーターが必要です。

  • 属性: 列に適用する属性を選択します。

7.6. "Delete an existing fact (既存ファクトの削除)"

この列のオプションを使用して、ファクトパターンとしてテーブルに以前追加したファクトを削除するアクションを実装できます。この列を作成すると、ファクトタイプは、その列のテーブルセルにドロップダウンリストとして提供され、ユーザーは、そこからオプションを 1 つだけ選択できます。

必須の列パラメーター

この列タイプを設定するには、Add a new column ウィザードに以下のパラメーターが必要です。

  • Header (説明): 列にヘッダーテキストを追加します。
  • Hide column: 選択すると列が非表示になり、選択を解除すると列が表示されます。

7.7. "Execute a Work Item (作業アイテムの実行)"

この列オプションを使用して、Decision Central に以前作成した作業アイテム定義に基づいて、作業アイテムハンドラーを実行できます (作業アイテムは、MenuDesignProjects[select project]Create New AssetWork Item definition で作成できます)。

必須の列パラメーター

この列タイプを設定するには、Add a new column ウィザードに以下のパラメーターが必要です。

  • Work Item: 事前設定した作業アイテムのリストから選択します。
  • Header (説明): 列にヘッダーテキストを追加します。
  • Hide column: 選択すると列が非表示になり、選択を解除すると列が表示されます。

7.8. "Set the value of a field (フィールド値の設定)"

この列オプションを使用して、ルールの「THEN」部分に事前にバインドしたファクトにフィールドの値を設定するアクションを実装できます。その他のルールを再度アクティブにするように修正した値をルールエンジンに通知するオプションがあります。

必須の列パラメーター

この列タイプを設定するには、Add a new column ウィザードに以下のパラメーターが必要です。

  • Pattern: テーブルの条件または条件 BRL フラグメントに使用しているファクトパターンのリストから選択するか、新しいファクトパターンを作成します。ファクトパターンは、パッケージで利用可能なデータオブジェクト (詳細は「必要なデータオブジェクト」の注記を参照) と、指定するモデルクラスバインディングの組み合わせとなります (例: LoanApplication [application] または IncomeSource [income]。括弧内は、指定したファクトタイプへのバインディング)。
  • Field: 以前指定したファクトパターンからフィールドを選択します。フィールドオプションは、プロジェクトの Data Objects パネルのファクトファイルに定義されます (例: LoanApplication ファクトタイプの amount フィールドまたは lengthYears フィールド)
  • Value list (任意): 値オプションをコンマおよび空白文字で区切ったリストを入力して、ルールのアクション (「THEN」) 部分に対するテーブルの入力データを制限します。この値リストを定義すると、値は、その列のテーブルセルにドロップダウンリストとして提供され、ユーザーは、そこからオプションを 1 つだけ選択できます (リスト例: Accepted, Declined, Pending)。
  • Default value (任意): 事前定義した値オプションのいずれかを、新しい列のセルに自動的に表示するデフォルト値として選択します。デフォルト値が指定されていないと、テーブルのセルはデフォルトでは空欄となります。また、Project Explorer の Enumeration Definitions パネルにリストした、プロジェクトに事前に設定したデータの列挙からデフォルト値を選択できます (列挙は、MenuDesignProjects[select project]Create New AssetEnumeration から作成できます)。
  • Header (説明): 列にヘッダーテキストを追加します。
  • Hide column: 選択すると列が非表示になり、選択を解除すると列が表示されます。
  • Logically insert (論理的な挿入): このオプションは、選択したファクトパターンが、ガイド付きデシジョンテーブルの別の列に現在使用されていない場合に表示されます (次のフィールドの説明を参照)。ファクトパターンをデシジョンエンジンに論理的に挿入する場合はこれを選択し、定期的に挿入する場合は選択を解除します。Red Hat Decision Manager のデシジョンエンジンは、ファクトの挿入および取り消しに対して論理的な決断を行います。定期的な挿入、または指定した挿入の後に、ファクトを明示的に取り消す必要があります。論理挿入の後に、ファクトをアサートした条件が TRUE ではなくなると、ファクトは自動的に取り消されます。
  • Update engine with changes (変更でエンジンをアップデート): このオプションは、選択したファクトパターンが、ガイド付きデシジョンテーブに使用されている場合に表示されます。修正したフィールド値を使用してルールエンジンをアップデートする場合はこれを選択し、ルールエンジンをアップデートしない場合は選択を解除します。

7.9. "Set the value of a field with a Work Item result (作業アイテム結果でフィールド値の設定)"

この列オプションを使用して、ルールの「THEN」部分の作業アイテムハンドラーの結果値に、事前定義したファクトフィールドの値を設定するアクションを実行できます。作業アイテムは、return パラメーターにフィールドを設定するために、バインドしたファクトのフィールドと同じデータ型の結果パラメーターを設定する必要があります (作業アイテムは MenuDesignProjects[select project]Create New AssetWork Item definition に作成できます)。

Execute a Work Item (作業アイテムの実行) 列は、この列オプションを作成するために、テーブルにすでに作られている必要があります。

必須の列パラメーター

この列タイプを設定するには、Add a new column ウィザードに以下のパラメーターが必要です。

  • Pattern: テーブルに使用しているファクトパターンのリストから選択するか、新しいファクトパターンを作成します。ファクトパターンは、パッケージで利用可能なデータオブジェクト (詳細は「必要なデータオブジェクト」の注記を参照) と、指定するモデルクラスバインディングの組み合わせとなります (例: LoanApplication [application] または IncomeSource [income]。括弧内は、指定したファクトタイプへのバインディング)。
  • Field: 以前指定したファクトパターンからフィールドを選択します。フィールドオプションは、プロジェクトの Data Objects パネルのファクトファイルに定義されます (例: LoanApplication ファクトタイプの amount フィールドまたは lengthYears フィールド)
  • Work Item: 事前定義した作業アイテムのリストから選択します (作業アイテムは、return パラメーターにフィールドを設定するために、バインドしたファクトにフィールドと同じデータ型の result パラメーターを設定する必要があります)。
  • Header (説明): 列にヘッダーテキストを追加します。
  • Hide column: 選択すると列が非表示になり、選択を解除すると列が表示されます。
  • Logically insert (論理的な挿入): このオプションは、選択したファクトパターンが、ガイド付きデシジョンテーブルの別の列に現在使用されていない場合に表示されます (次のフィールドの説明を参照)。ファクトパターンをデシジョンエンジンに論理的に挿入する場合はこれを選択し、定期的に挿入する場合は選択を解除します。Red Hat Decision Manager のデシジョンエンジンは、ファクトの挿入および取り消しに対して論理的な決断を行います。定期的な挿入、または指定した挿入の後に、ファクトを明示的に取り消す必要があります。論理挿入の後に、ファクトをアサートした条件が TRUE ではなくなると、ファクトは自動的に取り消されます。
  • Update engine with changes (変更でエンジンをアップデート): このオプションは、選択したファクトパターンが、ガイド付きデシジョンテーブに使用されている場合に表示されます。修正したフィールド値を使用してルールエンジンをアップデートする場合はこれを選択し、ルールエンジンをアップデートしない場合は選択を解除します。

第8章 ガイド付きデシジョンテーブルで列の編集または削除

ガイド付きデシジョンテーブルデザイナーに作成した列は、いつでも編集または削除できます。

手順

  1. ガイド付きデシジョンテーブルで、Columns をクリックします。
  2. 適切なセクションを展開し、列名の隣にある Edit または Delete をクリックします。

    図8.1 列の編集または削除

    Edit or delete columns in the guided decision tables designer.
    注記

    既存のアクション列が、条件列と同じパターン一致パラメーターを使用している場合は、条件列を削除できません。

  3. 列を変更したら、ウィザードの Finish をクリックして保存します。

第9章 ガイド付きデシジョンテーブルで行の追加およびルールの定義

ガイド付きデシジョンテーブルで列を作成したら、デシジョンテーブルデザイナーに行を追加してルールを定義します。

前提条件

6章ガイド付きデシジョンテーブルへの列の追加」の手順に従って、ガイド付きデシジョンテーブルの列が追加されています。

手順

  1. ガイド付きデシジョンテーブルデザイナーで、InsertAppend row、またはいずれかの Insert row オプションをクリックします (もしくは、Insert column をクリックして列ウィザードを開いて、新しい列を定義することもできます)。

    図9.1 行の追加

    Add rows in the guided decision tables designer
  2. 各セルをダブルクリックしてデータを入力します。入力する値が決まっている場合は、セルのドロップダウンオプションから選択します。

    図9.2 各セルに入力データの入力

    Enter data in individual cells
  3. ガイド付きデシジョンテーブルですべてのデータ行を定義したら、ガイド付きデシジョンテーブルデザイナーの右上のツールバーで Validate をクリックして、テーブルの妥当性を確認します。テーブルの妥当性確認に失敗したら、エラーメッセージに記載された問題に対応し、テーブルの全コンポーネントを見直し、エラーが表示されなくなるまでテーブルの妥当性確認を行います。

    注記

    ガイド付きデシジョンテーブルには、リアルタイム検証および妥当性確認がありますが、最善の結果を確実に得るために、完了したデシジョンテーブルの妥当性確認を手動で行うことができます。

  4. テーブルデザイナーで Save をクリックして、変更を保存します。

第10章 ガイド付きデシジョンテーブルのリアルタイム検証および妥当性確認

Decision Central は、ガイド付きデシジョンテーブルにリアルタイム検証および妥当性確認を提供し、テーブルのエラーがなくなったことを確認します。ガイド付きデシジョンテーブルは、各セルが変更するたびに妥当性が確認されます。ロジックに問題が検出されたら、エラー通知が表示され、問題を確認できます。

10.1. ガイド付きデシジョンテーブルの問題の種類

検証および妥当性確認の機能は、以下のタイプの問題を検出します。

冗長性 (Redundancy)
冗長性は、デシジョンテーブルの 2 つの行で、同じファクトセットの同じ結果を実行する際に生じます。たとえば、顧客の誕生日をチェックして誕生日割引を提供する行が 2 つあると、割引は 2 倍になる可能性があります。
包含 (Subsumption)

包含は冗長と似ていますが、2 つルールが同じ結果を実行し、1 つのルールがもう 1 つのルールのファクトのサブセットに対して実行する場合に生じます。たとえば、以下の 2 つのルールを見てみましょう。

  • when Person age > 10 then Increase Counter
  • when Person age > 20 then Increase Counter

この場合、対象者の年齢が 15 歳の場合はルールが 1 つだけ実行しますが、対象者の年齢が 20 歳を超えてる場合は 2 つのルールが実行します。これにより、実行時に冗長性の場合と同様の問題が生じます。

競合 (Conflict)

デシジョンテーブルの 2 つの行 (ルール) または 2 つのセルの条件が類似し、異なる結果が設定されている場合は、競合が発生する場合があります。

以下の例は、デシジョンテーブルの 2 つの行で競合が発生しているのを示しています。

  • when Deposit > 20000 then Approve Loan
  • when Deposit > 20000 then Refuse Loan

この場合、ローンが承認されるかどうかについて確認することはできません。

以下の例は、デシジョンテーブルの 2 つのセル間の競合を示します。

  • when Age > 25
  • when Age < 25

競合セルを持つ行は実行しません。

Unique Hit ポリシーの違反 (Broken Unique Hit Policy)

Unique Hit ポリシーをデシジョンテーブルに適用する際は、同時に 1 行しか実行できず、各列は一意であり、満たした条件が重複しないようにする必要があります。複数の行が実行した場合は、検証レポートが、違反したヒットポリシーを特定します。たとえば、価格の割引資格を決定するテーブルで、以下の条件を見てみましょう。

  • when Is Student = true
  • when Is Military = true

顧客が学生であり、軍隊に所属している場合は、両方の条件が適用され、Unique Hit ポリシーに違反します。したがって、この種のテーブルの行は、複数の行が同時に発生しないように作成する必要があります、ヒットポリシーについては「5章ガイド付きデシジョンテーブルのヒットポリシー」を参照してください。

欠陥

欠陥は競合と似ていますが、デシジョンテーブルのルールのロジックが未完成の場合に生じます。たとえば、欠陥がある以下の 2 つのルールを見てみましょう。

  • when Age > 20 then Approve Loan
  • when Deposit < 20000 then Refuse Loan

この 2 つのルールは、20 歳を超え、預金が 20000 より少ない場合に混乱が発生する場合があります。さらに制約を追加すると、競合を避けることができます。

列の欠落 (Missing Column)
列を削除したため、不完全または不正確なロジックが発生した場合は、ルールが正しく発生しません。これを検出し、不足している列に対処したり、ロジックを調整して、意図的に削除した条件またはアクションに依存しないようにすることができます。
不完全な範囲 (Incomplete Ranges)
可能なフィールド値に対する制約がテーブルに追加されているにもかかわらず、可能な値がすべて定義されていない場合は、フィールド値の範囲が不完全です。検証レポートは、提供された不完全な範囲を特定します。たとえば、アプリケーションが承認されたかどうかをテーブルが確認した場合は、検証レポートにより、アプリケーションが承認されていない状況も処理できるようになります。

10.2. 通知の種類

検証および妥当性確認の機能では、3 種類の通知を使用します。

  • gdtValidationVerificationIconError Error: ガイド付きデシジョンテーブルが、実行時に設計された通りに機能しなくなるような重大な問題があることを意味します。たとえば、競合はエラーとしてレポートされます。
  • gdtValidationVerificationIconWarning Warning: おそらく、ガイド付きデシジョンテーブルが動作しなくなるような重要な問題ではありませんが、注意が必要な重要な問題があることを示します。たとえば、包含は警告として報告されます。
  • gdtValidationVerificationIconInfo Information: ガイド付きデシジョンテーブルの動作が止まることはないかもしれませんが、注意が必要です。たとえば、列が不明な場合は、情報として報告されます。
注記

Decision Central の検証および妥当性確認により、間違った変更が保存されなくなります。これは、編集中の問題を報告するための機能であるため、間違いに対処せずに変更を保存することもできます。

10.3. ガイド付きデシジョンテーブルの検証および妥当性確認の無効化

Decision Central のデシジョンテーブルの検証および妥当性確認機能は、デフォルトで有効になっています。Red Hat JBoss EAP ディレクトリーで、org.kie.verification.disable-dtable-realtime-verification システムプロパティー値を true に設定すると無効にできます。

手順

端末アプリケーションで $EAP_HOME ディレクトリーに移動し、次のコマンドを実行します。

./standalone.sh -Dorg.kie.verification.disable-dtable-realtime-verification=true

代わりに、以下を Red Hat JBoss EAP の standalone.xml ファイルに追加します。

<property name="org.kie.verification.disable-dtable-realtime-verification" value="true"/>

第11章 次のステップ

付録A バージョン情報

Documentation last updated on: Monday, October 1, 2018.

法律上の通知

Copyright © 2019 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.