11.1. テーブルタイプ(TableType)¶
OpenRules で定義する各種テーブルタイプです。
- 条件評価(DecisionTable / DT / DecisionTableSingleHit / RuleFamily)
- マルチヒット型の条件評価1(DecisionTable1 / DT1 / DecisionTableMultiHit)
- マルチヒット型の条件評価2(DecisionTable2 / DT2 / DecisionTableSequence)
- 変数への値割り当て(DecisionTableAssign)
- ルールの反復処理(DecisionTableIterate)
- スコアに基づくソート処理(DecisionTableSort)
- 処理順の設定(Decision)
- 項目名のマッピング(Glossary)
- 項目とデータ型の定義(Datatype)
- 項目の初期値の定義(Data / Variable)
- オブジェクトのインスタンスの設定(DecisionObject)
- Javaのコードの定義(Method)
- 環境設定情報(Environment)
条件評価(DecisionTable / DT / DecisionTableSingleHit / RuleFamily)¶
Decision に基づいて、Excelのシートで上から書いてある順に条件を評価します。条件が合致したら、合致した行の結果・アクションの設定内容を実行し、処理が終了します。従って、合致した行より下の行は評価されません。
利用できる OpenRules のタイプ¶
タイプ 利用可否 Rule Engine ○ Rule Solver ○
テーブルの基本構造¶
(1) メインヘッダの記述方法¶
メインヘッダは、1セルに結合し、以下のいずれかの方法で記述します。
- DecisionTable %テーブル名%
- DT %テーブル名%
- DecisionTableSingleHit %テーブル名%
- RuleFamily %テーブル名%
- 各キーワードの後に、半角スペースを入れてテーブル名を記述します。
(2) サブヘッダに利用できるキーワード¶
サブヘッダには、「結果」に利用できるキーワード、または、「条件」・「結果」のキーワードの組み合わせを1つ以上含める必要があります。
- 条件に利用できるキーワード
キーワード 利用可否 OnOff ○ Condition ○ ConditionBetween ○ ConditionVarOperValue ○ ConditionIntOperInt ○ ConditionRealOperReal ○ ConditionDateOperDate ○ ConditionAny ○ ConditionMap × If ○ コラム
条件のセルの条件値を記入しない場合、 OpenRules では無条件と判断されます。すべての条件に合致しない場合の処理を記述する際などに利用します。
- 結果に利用できるキーワード
キーワード 利用可否 Conclusion ○ ConclusionVarOperValue ○ ActionAny ○ ActionMap × Action ○ ActionPrint × Then ○ ActionExecute ○ Message ○ ActionIterate × ActionRulesOnArray × ActionSort ×
- 項目の論理名
Glossary で定義した項目の論理名を入力してください。この項目にはひらがなや漢字などのマルチバイト文字も利用できます。
(3) 明細¶
(2)サブヘッダのキーワードに合わせて記述します。条件や処理の記述は以下を参照してください。
マルチヒット型の条件評価1(DecisionTable1 / DT1 / DecisionTableMultiHit)¶
Decision に基づいて、Excelのシートで上から書いてある順に条件を評価します。条件に合致した、しないに関わらずすべての条件を評価します。合致したすべての条件に設定された結果(Actionなど)はすべて実行されます。このテーブルタイプでは、以下の順に評価・実行します。以下の図は、処理の流れの例です。
Conditionの入力値として以下の表の値が設定された場合の処理を例に説明します。
1行目の条件が評価されます。Condition(条件)が空欄のため、必ずTrue(Marriage Eligibility(結婚の可否)=”Eligible”(結婚可能))と返却されます。 この時点では結果の変数「MarriageEligibility」への値の設定は行われず、「実行予定」のフラグが設定されます。結果の変数「Marriage Eligibility」の値は初期値の「未設定」のまま変わりません。 2行目の条件が評価されます。入力値の年齢「17」が条件に合致するため、Trueと評価されます。 この時点でも結果の変数「MarriageEligibility」への値の設定は行われません。「実行予定」のフラグが1行目の結果から2行目に変更されます。結果の変数「Marriage Eligibility」の値は初期値の「未設定」のまま変わりません。 3行目の条件が評価されます。入力値のAge「17」、Gender「女性」の両方が条件に合致するため、Trueと評価されます。 「実行予定」のフラグが2行目の結果から3行目に変更されます。 最終的にすべての条件の評価後、「実行予定」のフラグが設定されている3行目の「Eligible」が結果の変数「Marriage Eligibility」に設定されます。DecisionTable1では、以下の点が重要なポイントです。
それぞれの条件の結果(actionなど)は、他の条件には影響しません。
DecisionTable1は、対象のDecisionTableのすべての条件の評価後に結果を設定します。そのため、先に評価された条件の結果は、後続の条件の評価には影響しません。先に評価された条件の結果(actionなど)を上書きすることができます。
DecisionTable1では、先に「実行予定」となった条件の結果を、後で評価した条件の結果に変更する(上書きする)ことができます。
利用できる OpenRules のタイプ¶
タイプ 利用可否 Rule Engine ○ Rule Solver ×
テーブルの基本構造¶
(1) メインヘッダの記述方法¶
メインヘッダは、1セルに結合し、以下のいずれかの方法で記述します。
- DecisionTable1 %テーブル名%
- DT1 %テーブル名%
- DecisionTableMultiHit %テーブル名%
- 「DecisionTable1」、「DT1」、「DecisionTableMultiHit」の後に、半角スペースを入れてテーブル名を記述します。
(2) サブヘッダに利用できるキーワード¶
サブヘッダには、「結果」に利用できるキーワード、または「条件」・「結果」のキーワードの組み合わせを1つ以上含める必要があります。
- 条件に利用できるキーワード
キーワード 利用可否 OnOff ○ Condition ○ ConditionBetween × ConditionVarOperValue ○ ConditionIntOperInt ○ ConditionRealOperReal ○ ConditionDateOperDate ○ ConditionAny ○ ConditionMap × If ○
- 結果に利用できるキーワード
キーワード 利用可否 Conclusion ○ ConclusionVarOperValue ○ ActionAny ○ ActionMap × Action ○ ActionPrint × Then ○ ActionExecute ○ Message ○ ActionIterate × ActionRulesOnArray × ActionSort ×
- 項目の論理名
Glossary で定義した項目の論理名を入力してください。この項目にはひらがなや漢字などのマルチバイト文字も利用できます。
(3) 明細¶
(2)サブヘッダのキーワードに合わせて記述します。条件や処理の記述は以下を参照してください。
マルチヒット型の条件評価2(DecisionTable2 / DT2 / DecisionTableSequence)¶
Decision に基づいて、Excelのシートで上から書いてある順に条件を評価します。条件に合致した、しないに関わらずすべての条件を評価します。合致したすべての条件に設定された結果(Actionなど)はすべて実行されます。このテーブルタイプでは、以下の順に評価・実行します。以下の図は、処理の流れの例です。
Condition / Conclusionの値として以下の表の値が設定された場合の処理を例に説明します。
1行目の条件が評価されます。Condition(条件)が空欄のため、Conclusionの計算を実行します。計算結果の「-100」の値はそのまま「Earnings」にセットされます。 2行目の条件が評価されます。このときは、1行目の計算結果を反映した状態で評価されます。従って、Earningsは計算結果の「-100」を対象に評価されるため、条件に合致した「True」と評価されます。 2行目の条件の評価に基づいて、Earningsには「0」が設定された上で処理結果として「0」が返却されます。DecisionTable2では、以下の点が重要なポイントです。
それぞれの条件の結果(actionなど)が、後続の条件の評価に影響を及ぼします。
DecisionTable2は、対象のDecisionTableのそれぞれの条件の評価・実行を順次行います。そのため、条件・結果の両方に同じ項目を設定している場合、先に評価された条件の結果で変更された項目の値に基づいて、後続の条件の評価が行われます。後続の条件・結果(actionなど)が、先に評価・実行された条件・結果を上書きすることができます。
DecisionTable2では、先に評価・実行された条件・結果を、後続の評価・実行する条件・結果で上書きする(変更する)ことができます。
利用できる OpenRules のタイプ¶
タイプ 利用可否 Rule Engine ○ Rule Solver ×
テーブルの基本構造¶
(1) メインヘッダの記述方法¶
メインヘッダは、1セルに結合し、以下のいずれかの方法で記述します。
- DecisionTable2 %テーブル名%
- DT2 %テーブル名%
- DecisionTableSequence %テーブル名%
- 「DecisionTable2」、「DT2」、「DecisionTableSequence」の後に、半角スペースを入れてテーブル名を記述します。
(2) サブヘッダに利用できるキーワード¶
サブヘッダには、「結果」に利用できるキーワード、または「条件」・「結果」のキーワードの組み合わせを1つ以上含める必要があります。
- 条件に利用できるキーワード
キーワード 利用可否 OnOff ○ Condition ○ ConditionBetween × ConditionVarOperValue ○ ConditionIntOperInt ○ ConditionRealOperReal ○ ConditionDateOperDate ○ ConditionAny ○ ConditionMap × If ○
- 結果に利用できるキーワード
キーワード 利用可否 Conclusion ○ ConclusionVarOperValue ○ ActionAny ○ ActionMap × Action ○ ActionPrint × Then ○ ActionExecute ○ Message ○ ActionIterate × ActionRulesOnArray × ActionSort ×
- 項目の論理名
Glossary で定義した項目の論理名を入力してください。この項目にはひらがなや漢字などのマルチバイト文字も利用できます。
(3) 明細¶
(2)サブヘッダのキーワードに合わせて記述します。条件や処理の記述は以下を参照してください。
変数への値割り当て(DecisionTableAssign)¶
変数同士の計算結果を他の変数に代入する処理を簡潔に記述できるようにしたテーブルです。OpenRules 内で変数同士の計算が複数行われる場合に見やすい形式でまとめることができます。
利用できる OpenRules のタイプ¶
タイプ 利用可否 Rule Engine ○ Rule Solver ×
テーブルの基本構造¶
(1) メインヘッダの記述方法¶
メインヘッダは、1セルに結合し、以下の方法で記述します。
- DecisionTableAssign %テーブル名%
- 各キーワードの後に、半角スペースを入れてテーブル名を記述します。
(2) サブヘッダに利用できるキーワード¶
サブヘッダは、値の割り当て対象の項目の論理名の列ラベルと割り当てる値、または式の列ラベルのみ指定できます。
- 項目の論理名
Glossary で定義した項目の論理名の列であることを識別しやすい文言を指定してください。Conclusion などの OpenRules で利用する予約語は指定できません。この項目にはひらがなや漢字などのマルチバイト文字も利用できます。
- 列ラベル(値、割り当ての式の列)
(a) で指定した項目に割り当てる値や割り当てるための式を指定する列を表すラベルとしての文言を指定してください。Conclusion などの OpenRules で利用する予約語は指定できません。この項目にはひらがなや漢字などのマルチバイト文字も利用できます。
ルールの反復処理(DecisionTableIterate)¶
オブジェクトの配列を受け取り、オブジェクト単位に別の DecisionTable を繰り返し配列の個数分実行します。OpenRules 6.4.2から追加され、 ActionRulesOnArray 、 ActionIterate と同様の役割を果たします。IM-BIS との連携では利用できません。
スコアに基づくソート処理(DecisionTableSort)¶
オブジェクトの配列を受け取り、オブジェクト単位に別の DecisionTable に基づいてスコアを算出し、スコア順にソートします。OpenRules 6.4.2から追加され、 ActionSort と同様の役割を果たします。IM-BIS との連携では利用できません。
処理順の設定(Decision)¶
DataMapperとの値の入出力、実行するDecisionTableの順序などを設定します。
利用できる OpenRules のタイプ¶
タイプ 利用可否 Rule Engine ○ Rule Solver ○
テーブルの基本構造¶
(1) メインヘッダの記述方法¶
メインヘッダは、1セルに結合し、以下のいずれかの方法で記述します。
- Decision %テーブル名%
- 「Decision」の後に、半角スペースを入れてテーブル名を記述します。
(2) サブヘッダに利用できるキーワード¶
サブヘッダは、「ActionPrint」、「ActionExecute」が必須です。その他のキーワードは任意です。
- 条件に利用できるキーワード
キーワード 利用可否 Condition ○ ConditionBetween × ConditionVarOperValue × ConditionIntOperInt × ConditionRealOperReal × ConditionDateOperDate × ConditionAny ○ ConditionMap × If ×
- 結果に利用できるキーワード
キーワード 利用可否 Conclusion ○ ConclusionVarOperValue ○ ActionAny ○ ActionMap × Action ○ ActionPrint ○ Then ○ ActionExecute ○ Message ○ ActionIterate × ActionRulesOnArray × ActionSort ×
列ラベル
明細部に入力する内容を識別するための名称を入力します。処理には使用しない値のため、 Glossary への登録は不要です。サブヘッダとして設定したキーワードが「ActionPrint」の列は「処理名」、「ActionExecute」は「実行対象のデシジョンテーブル」のように設定できます。この項目にはひらがな、漢字などのマルチバイト文字が利用できます。
(3) 明細¶
(2)サブヘッダのキーワードに合わせて記述します。条件や処理の記述は以下を参照してください。
項目名のマッピング(Glossary)¶
ルールを定義するExcelファイルで利用している項目名の論理名と物理名をマッピングします。OpenRules で利用するすべての項目を定義してください。IM-BIS のデータソース定義のリクエスト・レスポンスにはここで定義された項目を設定してください。
利用できる OpenRules のタイプ¶
タイプ 利用可否 Rule Engine ○ Rule Solver ○
テーブルの基本構造¶
(1) メインヘッダの記述方法¶
(2) サブヘッダに利用できるキーワード¶
サブヘッダには、「論理名(Variable)」・「グループ(Business Concept)」・「物理名(Attribute)」が必須項目です。「値の範囲(Domain)」は任意項目です。Glossaryでのサブヘッダは、漢字を含めて自由に変更することができますが、列の並び順(Variable → Business Concept → Attribute)は変更できません。「論理名(Variable)」は DecisionTable で利用する項目名のため、ユーザにわかりやすい名称を設定できます。ひらがな、漢字などのマルチバイト文字も利用可能です。
Glossaryに利用できるキーワード
キーワード 利用可否 Variable(Glossary) ○ Business Concept ○ Attribute ○ Domain ○
項目とデータ型の定義(Datatype)¶
Glossary で設定したグループ(Business Concept)、項目のデータ型を指定します。この表は、グループ(Business Concept)単位に作成します。
利用できる OpenRules のタイプ¶
タイプ 利用可否 Rule Engine ○ Rule Solver ○
テーブルの基本構造¶
(1) メインヘッダの記述方法¶
メインヘッダは、1セルに結合し、以下の方法で記述します。
- Datatype %テーブル名%
- 「Datatype」の後に、半角スペースを入れてテーブル名を記述します。
- Datatypeのテーブル名は、 Glossary のBusiness Conceptとして定義した内容と一致させる必要があります。
サブヘッダに利用できるキーワード¶
Datatypeでは、サブヘッダはありません。
(2) 明細の記述方法¶
Datatypeは、以下の方法で Glossary の「Business Concept」(左から2番目の項目)の単位で記述します。Datatypeに設定する項目は、 Glossary の「Attribute」(左から3番目の項目)です。データ型に配列を含めたい場合には、以下のように記述します。
利用できるデータ型
Javaの基本データ型とユーザ定義のデータ型が利用できます。
Javaの基本データ型
タイプ boolean char int double long String (java.lang.String) Date (java.util.Date) ユーザ定義のデータ型
タイプ Excelファイル上に設定したオブジェクト String型の単一パラメータのPublicコンストラクタのあるJavaクラス 上記のデータ型の1次元配列 注意
技術的な制約事項
Datatypeでの定義では、最初の項目はString、またはユーザ定義のデータ型にする必要があります。(String以外のJavaの基本のデータ型は設定できません。)ただし、この制約はDatatypeの表に限定した事項となるため、例えば数値項目しかない場合であっても、DatatypeやData(Variable)で代替の項目を設定します。この代替の項目は、Excelファイルでの制約となるため、データソース定義のパラメータには含めなくても問題ありません。
項目の初期値の定義(Data / Variable)¶
項目とデータ型の定義(Datatype) で定義した項目の初期値を指定します。ここで設定する値は IM-BIS との連携時のインスタンス化に必要となるため、すべての項目に値を設定する必要があります。注意
処理対象者設定に利用する場合の注意
IM-BIS の動的処理対象者設定に利用する場合には、レスポンスのオブジェクトの定義で、キーワードを必ず「Variable」としてください。「Data」とした場合には、エラーが発生するため、データソース定義として登録することができません。
利用できる OpenRules のタイプ¶
タイプ 利用可否 Rule Engine ○ Rule Solver ○
テーブルの基本構造¶
(1) メインヘッダの記述方法¶
メインヘッダは、1セルに結合し、以下の方法で記述します。
Data %テーブル名%
- 「Data」または「Variable」の後に、半角スペースで区切って、BusinessConcept名、インスタンス名を記述します。
- BusinessConcept名は、 Glossary の「Business Concept」(左から2番目の項目)にします。
- インスタンス名は、 DecisionObject の入力値にします。
(3) 明細の記述方法¶
Dataの明細の値は、インスタンスを作成する処理の初期値に利用されますので、データ型にあわせて、適切な値を設定します。セルを空にしたままの場合、インスタンスが正しく生成されないため、評価結果が返却されません。メインヘッダを「Data」とした場合、1件以上入力します。メインヘッダを「Variable」とした場合、1件のみ入力します。
オブジェクトのインスタンスの設定(DecisionObject)¶
Glossary で定義したオブジェクト(Business Concept)と IM-BIS (データマッパー)との値のマッピングを行います。
利用できる OpenRules のタイプ¶
タイプ 利用可否 Rule Engine ○ Rule Solver ○
テーブルの基本構造¶
(1) メインヘッダの記述方法¶
メインヘッダは、1セルに結合し、以下の方法で記述します。
- DecisionObject decisionObjects
メインヘッダは、必ず上記のように記載してください。名前が異なる等定義に誤りがある場合には、エラーが発生します。
(2) サブヘッダに利用できるキーワード¶
(3) 明細の記述方法¶
明細の左の列は、 Glossary でグループ(Business Concept)として定義した名称を記述します。明細の右の列は、値の受け渡し方法に応じて式を記述します。
IM-BIS (データマッパー)から入力値を受け取る場合
:= ({Business Conceptの型})getInputData(decision, {Business Conceptのインスタンス名})記述例:= (RequestObject) getInputData(decision, requestObj)入力以外の値の受け渡しを行う場合
:= {Business Conceptのインスタンス名}[0]記述例:= responseObj[0]
Javaのコードの定義(Method)¶
Javaのコードを利用したメソッドや関数を定義できる表です。
利用できる OpenRules のタイプ¶
タイプ 利用可否 Rule Engine ○ Rule Solver ○
テーブルの基本構造¶
(1) メインヘッダの記述方法¶
メインヘッダは、1セルに結合し、以下の方法で記述します。
Method %返却型% %メソッド名%
「Method」の後に、半角スペースで区切って、返却型とメソッド名を記述します。
返却型は、以下のようなパターンで使い分けます。
void
データ型(intやStringなど)
Methodのコード内でreturnを利用して、variable( Glossary で定義している項目)に値を設定する
ConditionAny などの条件で、演算子「Is True」「Is False」を利用している(この場合には、必ずboolean型で値を返却します。)
サブヘッダに利用できるキーワード¶
Methodには、サブヘッダはありません。
(2) 明細の記述方法¶
Methodでは、自由にJavaのコードを記述します。Javaのパッケージに含まれるメソッドなども利用できますが、その場合には対象のパッケージをimportするための情報を Environment で定義してください。
環境設定情報(Environment)¶
ルールの実行に必要な他のExcelファイルやJavaのパッケージ等の情報を管理します。
利用できる OpenRules のタイプ¶
タイプ 利用可否 Rule Engine ○ Rule Solver ○
テーブルの基本構造¶
(1) メインヘッダの記述方法¶
メインヘッダは、1セルに結合し、以下の方法で記述します。
- Environment
サブヘッダに利用できるキーワード¶
Environmentには、サブヘッダはありません。
(2) 明細の記述方法¶
Environmentの明細は、参照するファイルやJavaのパッケージ等に合わせて、参照するためのキーワード(includeなど)と対象のファイルやパッケージ名などを記述します。
参照するためのキーワード
include
Excelファイルで定義された内容を参照する場合のキーワードです。import.java
Javaで開発したパッケージを参照する場合のキーワードです。コラム
IM-BIS では、標準のテンプレート(IntramartTemplate.xls)で、以下のパッケージについては定義済みです。
- java.util.ArrayList
- java.util.List
参照するためのファイルやパッケージ
データソース定義に一緒にアップロードしたファイルの場合、ファイル名と拡張子を記述します。Javaパッケージの場合、プログラムのimport文と同様にパッケージ名を記述します。(パッケージ名の最後に、”;”の記述は不要です。)