1. データソース定義の登録・更新でエラーが発生する¶
OpenRules をデータソース定義に登録する際に発生するエラーをまとめています。
データソース定義で発生するエラー
- OpenRules 内の項目やキーワードの綴りが誤っている
- DecisionObject が利用する変数名が誤っている
- DecisionTable の演算子を全角で定義している
1.1. OpenRules 内の項目やキーワードの綴りが誤っている¶
1.1.1. 現象¶
1.1.2. 条件¶
bis.logやコンソールに下記のようなスタックトレースが出力されている。
[ERROR] BIS_LOG - [] ルールの読み込みに失敗しました。設定ファイルを確認してください。 Error: Function label Conclution is not found in template table : java.lang.Exception at file:/C:/resin/resin-pro-4.0.40_forma/webapps/imart/WEB-INF/im_bis/datasource/rule/5iemi011wqmvepd/xxxxx.xls?sheet=DecisionTable&range=B15:K18&openl= java.lang.Exception: Function label Conclution is not found in template table
1.1.4. 解決方法¶
スタックトレース中に、Excelファイルの誤っている可能性のあるセルが書いてありますので、そのセルの内容と関連する定義を確認してください。上のスタックトレースの場合の読み方は、次の通りです。下記の読み方に基づいて、Excelの定義ファイルを修正し、再度データソース定義にアップロードしてください。
DecisionTable に定義する列タイプを「 Conclusion 」とすべきところ、綴りミスで「Conclution」と記述した例
Function label <キーワード・関数名> is not found
- Function label ・・・ 誤りの箇所が OpenRules のキーワードや Method で定義した関数名を記述するセルである可能性を表します。
- is not found in template table・・・ルールの実行時に参照した OpenRules の製品の定義ファイルやデータソース定義にて納したExcelの定義ファイルに定義が存在しないことを表します。
<データソース定義ID>/<対象のデータソース定義で参照しているExcelファイル名>.xls
- Excelファイル名・・・データソース定義のどのExcelの定義ファイルにエラーが発生しているかを表します。
sheet=<シート名>&range=<セル範囲>
- シート名・・・Excelの定義ファイル内の対象のシート名です。
- セル範囲・・・Excelの定義ファイル内の対象のシートの対象のセル範囲です。
1.2. DecisionObject が利用する変数名が誤っている¶
1.2.1. 現象¶
1.2.2. 条件¶
bis.logやコンソールに下記のようなスタックトレースが出力されている。
[2015-03-23 22:02:41.241] ERROR - [resin-port-8080-95] - [default] - [jp.co.intra_mart.system.bis.soa.connector.rule.RuleEngineContainer] ルールの読み込みに失敗しました。設定ファイルを確認してください。 Error: Field not found: requestObject Invalid Code Fragment: ========================================= (RequestObject) getInputData(decision, requestObject) ^^^^^^^^^^^^^ ========================================= at file:/C:/resin/resin-pro-4.0.40_forma/webapps/forma40_bis/WEB-INF/im_bis/datasource/rule/5iembl44yljdcpd/xxxxx.xls?sheet=Main&cell=E17&start=43&end=55&openl= org.openl.syntax.SyntaxErrorException: Error: Field not found: requestObject Invalid Code Fragment: ========================================= (RequestObject) getInputData(decision, requestObject) ^^^^^^^^^^^^^ ========================================= at file:/C:/resin/resin-pro-4.0.40_forma/webapps/forma40_bis/WEB-INF/im_bis/datasource/rule/5iembl44yljdcpd/xxxxx.xls?sheet=Main&cell=E17&start=43&end=55&openl=
1.2.3. 原因¶
Excelファイル内に下記の定義誤りが存在する場合に発生します。
- DecisionObject が参照している変数がExcelファイルで定義されていない、または間違っている。
1.2.4. 解決方法¶
スタックトレース中に、Excelファイルの誤っている可能性のあるセルが書いてありますので、そのセルの内容と関連する定義を確認してください。上のスタックトレースの場合の読み方は、次の通りです。下記の読み方に基づいて、Excelの定義ファイルを修正し、再度データソース定義にアップロードしてください。
DecisionObject で定義したインスタンス名と Data/Variable で定義したインスタンス名に不整合が発生している例
Error: Field not found: <変数名>
- <変数名>で定義されたインスタンスが、 Data/Variable に定義されていないことを表します。
(RequestObject) getInputData(decision, requestObject)
- エラーが発生しているExcel内の式の箇所を表します。
xxxxx.xls?sheet=<シート名>&cell=< の式の箇所>
- エラーが発生しているExcelの定義ファイル内のシートやセルを表します。
1.3. DecisionTable の演算子を全角で定義している¶
1.3.1. 現象¶
1.3.2. 条件¶
bis.logやコンソールに下記のようなスタックトレースが出力されている。
[2015-03-23 22:22:33.453] ERROR - [resin-port-8080-97] - [default] - [jp.co.intra_mart.system.bis.soa.connector.rule.RuleEngineContainer] ルールの読み込みに失敗しました。設定ファイルを確認してください。 Error: Oper = is not defined : java.lang.RuntimeException at file:/C:/resin/resin-pro-4.0.40_forma/webapps/imart/WEB-INF/im_bis/datasource/rule/5iembl44yljdcpd/ xxxxxx.xls?sheet=DecisionTable&cell=B6&openl= ・・・ Caused by: java.lang.RuntimeException: Oper = is not defined at com.openrules.types.Oper.<init>(Oper.java:189) ... 117 more ・・・ org.openl.syntax.SyntaxErrorException: Error: Oper = is not defined : java.lang.RuntimeException at file:/C:/resin/resin-pro-4.0.40_forma/webapps/imart/WEB-INF/im_bis/datasource/rule/5iembl44yljdcpd/ xxxxxx.xls?sheet=DecisionTable&cell=B6&openl= ・・・
1.3.3. 原因¶
Excelファイル内に下記の定義誤りが存在する場合に発生します。
- DecisionTable や Decision で使っている演算子が、半角ではなく全角になっている
- DecisionTable や Decision で使っている演算子が、利用している OpenRules のバージョンで利用できない演算子となっている
1.3.4. 解決方法¶
スタックトレース中に、Excelファイルの誤っている可能性のあるセルが書いてありますので、そのセルの内容と関連する定義を確認してください。上のスタックトレースの場合の読み方は、次の通りです。下記の読み方に基づいて、Excelの定義ファイルを修正し、再度データソース定義にアップロードしてください。
DecisionTable で利用している演算子を全角で記述した例
xxxxxx.xls?sheet=<シート名>&cell=< の箇所>
- エラーが発生しているExcelの定義ファイル内のシートやセルを表します。
Oper <演算子> is not defined
- 演算子で利用している記号やキーワードが、 OpenRules で提供されているものと異なっている、全角など不適切な値になっていることを表します。
実行している OpenRules のバージョンは、ルールが実行されたタイミングでコンソール上から確認できます。下記のように実行する直前数行上のエンジン初期化のログにバージョン名(例:OPENRULES ENGINE 6.3.2 Alpha Evaluation Version)が出力されます。[INFO] o.o.u.Log - [] INITIALIZE OPENRULES ENGINE 6.3.2 Alpha Evaluation Version (build 08112014) for [file:C:\resin\resin-pro-4.0.40\webapps\imart\WEB-INF\・・・ [INFO] o.o.u.Log - [] INCLUDE=../lib/openrules.config/IntramartTemplate.xls ・・・ [INFO] o.o.u.Log - [] *** Decision <実行しているDecision名> *** [INFO] o.o.u.Log - [] Decision has been initialized [INFO] o.o.u.Log - [] Decision Run has been initialized [INFO] o.o.u.Log - [] Decision <実行しているDecision名>:エンジンのバージョンによる演算子の利用可否については、「 OpenRules のバージョンによる記法の差異 」も確認してください。