第7章 ガイド付きデシジョンテーブルの列の種類
ガイド付きデシジョンテーブルの Add a new column ウィザードは、次の列オプションを提供します (Include advanced options を選択して、すべてのオプションを表示します)。
- Add a Condition (条件の追加)
- Add a Condition BRL fragment (条件 BRL フラグメントの追加)
- Add a Metadata column (メタデータ列の追加)
- Add an Action BRL fragment (アクション BRL フラグメントの追加)
- Add an Attribute column (属性列の追加)
- Delete an existing fact (既存ファクトの削除)
- Execute a Work Item (作業アイテムの実行)
- Set the value of a field (フィールド値の設定)
- Set the value of a field with a Work Item result (作業アイテムの結果でフィールド値の設定)
Add a new column ウィザードで必要な列タイプとパラメーターは、以下のセクションで説明します。
ファクトパターン、フィールドなど、このセクションで説明するいくつかの列パラメーターは、ガイド付きデシジョンテーブルと同じパッケージにすでに定義されているデータオブジェクトだけで構成されるドロップダウンオプションを提供します。パッケージで利用可能なデータオブジェクトは、Project Explorer の Data Objects パネル、およびガイド付きデシジョンテーブルデザイナーの Data Objects タブに一覧表示されます。必要に応じてパッケージにデータオブジェクトを追加したり、ガイド付きデシジョンテーブルデザイナーの Data Objects
7.1. "Add a Condition (条件の追加)"
条件はファクトパターンを表し、ルールの左側 (「WHEN」) に定義されます。この列オプションで、特定のフィールド値を使用して、データオブジェクトが存在するかどうかを確認し、ルールのアクション (「THEN」) 部分に影響を及ぼす条件列を 1 つ以上定義します。条件テーブルでファクトにバインディングを定義したり、以前定義したものを選択できます。パターンを無効にすることもできます。
例:
when $i : IncomeSource( type == "Asset" ) //Binds the IncomeSource object to the $i variable then ... end
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
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 Stream
、Credit 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 パネルにリストした、プロジェクトに事前に設定したデータの列挙からデフォルト値を選択できます (列挙は、Menu
Design Projects [select project] Create New Asset Enumeration から作成できます)。 - Header (説明): 列にヘッダーテキストを追加します。
- Hide column: 選択すると列が非表示になり、選択を解除すると列が表示されます。
7.1.1. 条件列セルに any other
値を追加
ガイド付きデシジョンテーブルにおける単純な条件列では、以下のパラメーターを設定した場合に、列のテーブルセルに any other
値を適用できます。
-
条件列の Calculation type を
Literal value
に設定している。 -
Operator を、等価演算子
==
または非等価演算子!=
に設定している。
any other
値は、テーブルにすでに定義されているルールに明示的に定義している値以外を設定できるルールを有効にします。
例:
when IncomeSource( type not in ("Asset", "Job") ) ... then ... end
when
IncomeSource( type not in ("Asset", "Job") )
...
then
...
end
手順
-
==
演算子または!=
演算子を使用する条件列のセルを選択します。 -
テーブルデザイナーの右上のツールバーで、Edit
Insert "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 フラグメントの追加

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


条件 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 フラグメントの追加

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


アクション 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
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 に以前作成した作業アイテム定義に基づいて、作業アイテムハンドラーを実行できます (作業アイテムは、Menu
必須の列パラメーター
この列タイプを設定するには、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 パネルにリストした、プロジェクトに事前に設定したデータの列挙からデフォルト値を選択できます (列挙は、Menu
Design Projects [select project] Create New Asset Enumeration から作成できます)。 - 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 パラメーターにフィールドを設定するために、バインドしたファクトのフィールドと同じデータ型の結果パラメーターを設定する必要があります (作業アイテムは Menu
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 (変更でエンジンをアップデート): このオプションは、選択したファクトパターンが、ガイド付きデシジョンテーブに使用されている場合に表示されます。修正したフィールド値を使用してルールエンジンをアップデートする場合はこれを選択し、ルールエンジンをアップデートしない場合は選択を解除します。