IM-BIS for Accel Platform OpenRules for IM-BIS 連携ガイド 第9版 2019-04-01

1. データソース定義の登録・更新でエラーが発生する

OpenRules をデータソース定義に登録する際に発生するエラーをまとめています。

データソース定義で発生するエラー

1.1. OpenRules 内の項目やキーワードの綴りが誤っている

1.1.1. 現象

データソース定義にExcelファイルをアップロードし、「登録」または「更新」をクリックしたときに下記のエラーメッセージが表示される。
  • 「ルールの読み込みに失敗しました。設定ファイルを確認してください。」

    ../../_images/common_error.png

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.3. 原因

Excelファイル内に下記の定義誤りが存在する場合に発生します。
  • OpenRules のキーワード( Condition など)の綴りが間違っている。

1.1.4. 解決方法

スタックトレース中に、Excelファイルの誤っている可能性のあるセルが書いてありますので、そのセルの内容と関連する定義を確認してください。
上のスタックトレースの場合の読み方は、次の通りです。
下記の読み方に基づいて、Excelの定義ファイルを修正し、再度データソース定義にアップロードしてください。
  • DecisionTable に定義する列タイプを「 Conclusion 」とすべきところ、綴りミスで「Conclution」と記述した例

    ../../_images/spellmiss_log.png
image_number_1 Function label <キーワード・関数名> is not found
  • Function label ・・・ 誤りの箇所が OpenRules のキーワードや Method で定義した関数名を記述するセルである可能性を表します。
  • is not found in template table・・・ルールの実行時に参照した OpenRules の製品の定義ファイルやデータソース定義にて納したExcelの定義ファイルに定義が存在しないことを表します。
image_number_2 <データソース定義ID>/<対象のデータソース定義で参照しているExcelファイル名>.xls
  • Excelファイル名・・・データソース定義のどのExcelの定義ファイルにエラーが発生しているかを表します。
image_number_3 sheet=<シート名>&range=<セル範囲>
  • シート名・・・Excelの定義ファイル内の対象のシート名です。
  • セル範囲・・・Excelの定義ファイル内の対象のシートの対象のセル範囲です。

1.2. DecisionObject が利用する変数名が誤っている

1.2.1. 現象

データソース定義にExcelファイルをアップロードし、「登録」または「更新」をクリックしたときに下記のエラーメッセージが表示される。
  • 「ルールの読み込みに失敗しました。設定ファイルを確認してください。」

    ../../_images/common_error.png

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 で定義したインスタンス名に不整合が発生している例

    ../../_images/namemiss_log.png
image_number_1 Error: Field not found: <変数名>
  • <変数名>で定義されたインスタンスが、 Data/Variable に定義されていないことを表します。
image_number_2 (RequestObject) getInputData(decision, requestObject)
  • エラーが発生しているExcel内の式の箇所を表します。
image_number_3 xxxxx.xls?sheet=<シート名>&cell=< image_number_2 の式の箇所>
  • エラーが発生しているExcelの定義ファイル内のシートやセルを表します。

1.3. DecisionTable の演算子を全角で定義している

1.3.1. 現象

データソース定義にExcelファイルをアップロードし、「登録」または「更新」をクリックしたときに下記のエラーメッセージが表示される。
  • 「ルールの読み込みに失敗しました。設定ファイルを確認してください。」

    ../../_images/common_error.png

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ファイル内に下記の定義誤りが存在する場合に発生します。
  • DecisionTableDecision で使っている演算子が、半角ではなく全角になっている
  • DecisionTableDecision で使っている演算子が、利用している OpenRules のバージョンで利用できない演算子となっている

1.3.4. 解決方法

スタックトレース中に、Excelファイルの誤っている可能性のあるセルが書いてありますので、そのセルの内容と関連する定義を確認してください。
上のスタックトレースの場合の読み方は、次の通りです。
下記の読み方に基づいて、Excelの定義ファイルを修正し、再度データソース定義にアップロードしてください。
  • DecisionTable で利用している演算子を全角で記述した例

    ../../_images/multibyte_error.png
image_number_1 xxxxxx.xls?sheet=<シート名>&cell=< image_number_2 の箇所>
  • エラーが発生しているExcelの定義ファイル内のシートやセルを表します。
image_number_2 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 のバージョンによる記法の差異 」も確認してください。