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

11.8. OpenRules のバージョンによる記法の差異

IM-BIS と OpenRules をアップデートする場合、 OpenRules のバージョンによって追加・変更が発生する事項をまとめています。
アップデートを行う際には、本項の内容に基づいて必要な対応を実施してください。

なお、各項目の「利用できる OpenRules のバージョン」は、ユーザモジュールに含まれるバージョンに基づいて記載しているため、 OpenRules 本体で追加・変更されたバージョンと差異がある場合があります。

コラム

本項の内容は OpenRules 本体の仕様に関する内容のため、以下のリンク先のリリースノートやユーザマニュアルで詳細を参照してください。

テーブルタイプ

DecisionTable

キーワードで「DecisionTableSingleHit」が利用可能

以下の表で image_ok のある OpenRules のバージョンでは、 DecisionTable で「DecisionTableSingleHit」を利用できます。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.2.4 image_ng
    OpenRules 6.2.6 以降 image_ok

列タイプ「OnOff」が利用可能

以下の表で image_ok のある OpenRules のバージョンでは、 DecisionTable の列タイプとして「OnOff」を利用できます。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.3.3 以前 image_ng
    OpenRules 6.4.2 以降 image_ok

DecisionTable1

キーワードで「DecisionTableMultiHit」が利用可能

以下の表で image_ok のある OpenRules のバージョンでは、 DecisionTable1 で「DecisionTableMultiHit」を利用できます。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.2.4 image_ng
    OpenRules 6.2.6 以降 image_ok

列タイプ「OnOff」が利用可能

以下の表で image_ok のある OpenRules のバージョンでは、 DecisionTable1 の列タイプとして「OnOff」を利用できます。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.3.3 以前 image_ng
    OpenRules 6.4.2 以降 image_ok

DecisionTable2

列タイプ「OnOff」が利用可能

以下の表で image_ok のある OpenRules のバージョンでは、 DecisionTable2 の列タイプとして「OnOff」を利用できます。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.3.3 以前 image_ng
    OpenRules 6.4.2 以降 image_ok

DecisionTableAssign

テーブルタイプ「DecisionTableAssign」が利用可能

以下の表で image_ok のある OpenRules のバージョンでは、テーブルタイプとして DecisionTableAssign が利用できます。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.3.3 以前 image_ng
    OpenRules 6.4.2 以降 image_ok

コラム

OpenRules 6.4.2では、配列型のオブジェクトを扱う下記のテーブルタイプも追加されていますが、 IM-BIS との連携では利用できません。
  • DecisionTableIterate
  • DecisionTableSort

条件として利用できるキーワード

Condition

数値範囲の記載方法に[1..n]形式を追加

OpenRules 6.3.0では、数値範囲の表現方法で[5,15](5~15の範囲を表す)と同義の形式として[5..15]の形式でも記載できます。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.2.6 以前 image_ng
    OpenRules 6.3.0 以降 image_ok

数値比較の演算子に「Outside / Outside Interval」を追加

OpenRules 6.3.2で提供された演算子「Outside / Outside Interval」が利用できます。
詳細については該当のキーワードのリファレンスを参照してください。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.3.1 以前 image_ng
    OpenRules 6.3.3 以降 image_ok

文字列比較の演算子として「Does Not Contain」が利用可能

OpenRules 6.3.3で修正された演算子「Does Not Contain」が利用できます。
当該バージョンより前のバージョンで定義した場合、利用できません。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.3.1 以前 image_ng
    OpenRules 6.3.3 以降 image_ok

数値比較の演算子として「Is One Of」「 Is Not One Of」が利用可能

OpenRules 6.4.0で修正された演算子「Is One Of」「Is Not One Of」が利用できます。
当該バージョンより前のバージョンで定義した場合、利用できません。
詳細については該当のキーワードのリファレンスを参照してください。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.3.3 以前 image_ng
    OpenRules 6.4.2 以降 image_ok

ConditionIntOperInt

特定のデータ型の項目( Data/Variable )同士を比較するためのキーワードの追加

OpenRules 6.3.0では、特定のデータ型の項目同士を簡単に比較するためのキーワードとして、「 ConditionIntOperInt 」を追加しました。
詳細については該当のキーワードのリファレンスを参照してください。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.2.6 以前 image_ng
    OpenRules 6.3.0 以降 image_ok

ConditionRealOperReal

特定のデータ型の項目( Data/Variable )同士を比較するためのキーワードの追加

OpenRules 6.3.0では、特定のデータ型の項目同士を簡単に比較するためのキーワードとして、「 ConditionRealOperReal 」を追加しました。
詳細については該当のキーワードのリファレンスを参照してください。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.2.6 以前 image_ng
    OpenRules 6.3.0 以降 image_ok

ConditionDateOperDate

特定のデータ型の項目( Data/Variable )同士を比較するためのキーワードの追加

OpenRules 6.3.0では、特定のデータ型の項目同士を簡単に比較するためのキーワードとして、「 ConditionDateOperDate 」を追加しました。
詳細については該当のキーワードのリファレンスを参照してください。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.2.6 以前 image_ng
    OpenRules 6.3.0 以降 image_ok

結果・処理として利用できるキーワード

Conclusion

式の記述時の()の扱いが変更

OpenRules 6.3.0では、::=で始まる式を Conclusion などと組み合わせて記載する場合、式を()で囲わなくてもよい形に変更になりました。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.2.6 以前 image_ng
    OpenRules 6.3.0 以降 image_ok

日付クラス( com.openrules.tools.Dates )の追加

OpenRules 6.4.0で日付型項目を扱うためのクラスが追加されました。
このクラスには日数計算などのメソッドが含まれています。
詳細については以下のリファレンスを参照してください。

ActionExecute

Decision からの Sub-Decision( Decision)、DecisionTable の呼び出し方法の変更

OpenRules 6.2.6では、 Decision からの呼び出し方法が変更されました。
OpenRules 6.2.6以降のバージョンの環境で、OpenRules 6.2.4以前に対応した記述でのルールを実行すると、シンタックスエラーが発生します。
  • OpenRules 6.2.4以前での記述方法

    ../../_images/actionexecute_6_2_4.png
    // Sub-Decision(Decisionから別のDecisionの呼び出し)
     := DecisionName(decision)
    
    // DecisionTable(DecisionからのDecisionの呼び出し)
     := DecisionTableName()
    
    • 利用できる OpenRules のバージョン

      OpenRules 利用可否
      OpenRules 6.2.4 image_ok
      OpenRules 6.2.6 以降 image_ng
  • OpenRules 6.2.6以降での記述方法

    ../../_images/actionexecute_6_2_6.png
    // Sub-Decision(Decisionからの別のDecisionの呼び出し)
     DecisionName
    
    // DecisionTable(DecisionからのDecisionの呼び出し)
     DecisionTableName
    
    • 利用できる OpenRules のバージョン

      OpenRules 利用可否
      OpenRules 6.2.4 image_ng
      OpenRules 6.2.6 以降 image_ok

Methodで利用できるキーワード(API)

全般

すべてのget/set/compareメソッドの呼び出し変更、getメソッドの代替マクロの追加

すべてのget/set/compareメソッドについて、実行されるメソッドがExcelファイル(DecisionTemplates.xls、DecisionTableExecuteTemplates.xls)からJavaに移行されたことに伴い、呼び出し方法の書き方が変わります。
また、getメソッドの代替の記述方法としてマクロが追加されました。
  • OpenRules 6.2.6以前での記述方法

    以下の記述方法は、下位互換を保持するために OpenRules 6.3.0でも動作しますが、非推奨メソッドとして扱います。
    ../../_images/accessor_6_2_6.png
    // get()の例
    
       getInt("項目の論理名")
    
    • 利用できる OpenRules のバージョン

      OpenRules 利用可否
      OpenRules 6.2.6 以前 image_ok
      OpenRules 6.3.0 以降 △(非推奨)
  • OpenRules 6.3.0以降での記述方法

    ../../_images/accessor_6_3_0.png
    • OpenRules 6.3.0以降のバージョンでは、上の形式でget/set/compareメソッドを記述してください。
      $で始まるマクロはgetメソッドのみに対応しています。
    // get()の例
    
       decision.getInt("項目の論理名")
       $I{項目の論理名}
    

Method からの Decision インスタンスに含まれるパラメータへのアクセス方法の変更

Glossary で定義した Business ConceptVariable(Glossary)Method で扱う場合には Decision インスタンスからアクセスします。
OpenRules 6.3.0では、この Decision インスタンスへのアクセス方法の記述が変更されました。
OpenRules 6.2.6以前での記述方法を利用している場合、複数のスレッドで同時にルールを実行する際に正しく対象のインスタンスにアクセスできないなどの問題がありますので、注意してください。
  • OpenRules 6.2.6以前での記述方法

    ../../_images/decision_6_2_6.png
  • OpenRules 6.3.0以降での記述方法

    ../../_images/decision_6_3_0.png
    • 利用できる OpenRules のバージョン

      OpenRules 利用可否
      OpenRules 6.2.6 以前 image_ng
      OpenRules 6.3.0 以降 image_ok

BigDecimal、longに対するマクロを追加

OpenRules 6.3.4からBigDecimal、 6.4.1からlongのデータ型に対するgetメソッドのマクロが提供されました。
ただし、 IM-BIS が対応していないため、 IM-BIS との連携では利用できません。
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.3.3 以前 image_ng
    OpenRules 6.4.2 以降 image_ok

配列に対する反復処理、ソート処理に関するメソッドを追加

OpenRules 6.4.2から配列に対する反復処理、ソート処理を行うためのメソッドが提供されました。
ただし、 IM-BIS が対応していないため、 IM-BIS との連携では利用できません。
  • iterate(String arrayName, String rules)
  • iterate(String arrayName, String arrayType, String rules)
  • sort(String arrayName)
  • sort(String arrayName, String rules)
  • sort(ComparableDecisionVariable[] array)
  • sort(ComparableDecisionVariable[] array, String rules)
  • 利用できる OpenRules のバージョン

    OpenRules 利用可否
    OpenRules 6.3.3 以前 image_ng
    OpenRules 6.4.2 以降 image_ok