IM-BIS for Accel Platform / OpenRules for IM-BIS 連携ガイド 第2版 2015-08-01

7.2. OpenRules で自動車保険申請のルールを作成する

OpenRules で自動車保険の保険料を計算するためのルールを作成します。
このハンズオンでは、自動車保険の申し込み申請フローをサンプルに、「いずれかと一致」などの演算子やルールの結果に基づく入力チェックの実装方法を確認することができます。
また、このハンズオンでは、登録ずみのデータソース定義のExcelのルール定義ファイルを更新しながら、ルール変更時の対応手順を確認します。

このシナリオで作成するルールの概要

  • 作成するルールの内容

    1. 自動車保険の契約対象を条件に、保険料を計算する。
      保険対象に関する情報が正しく設定されていない場合には、入力チェックでエラーとする。
      • 入力値:車種・保険期間・(車種により)最大積載量・(車種により)排気量
      • 出力値:保険料、メッセージ
    条件と返却する保険料の組み合わせは、以下の通りです。
    (以下の表内に登場しない条件の組み合わせは、入力チェックエラーとして扱います。)
    ../../_images/decisiontable1.png

データソース定義をダウンロードする

このハンズオンでは、あらかじめ登録済みのデータソース定義のルールを更新する方法を行います。
下記のデータソース定義のインポートファイルをダウンロードしてください。

データソース定義ファイルをインポートする

先の手順でダウンロードしたファイルをデータソース定義からインポートし、変更を行うExcelのルール定義ファイルを入手します。

データソース定義ファイルをインポートする

データソース定義ファイルをインポートします。
  1. サイトマップの「 IM-BIS 」から「データソース定義インポート」をクリックします。
    ../../_images/datasource_import_11.png
  2. インポートファイルに、先にダウンロードしたデータソース定義ファイルを選択し、「インポート実行」をクリックします。
    ../../_images/datasource_import_21.png
  3. 以下のように表示されたら、データソース定義ファイルが正常にインポートできました。
    ../../_images/datasource_import_31.png

データソース定義からExcelのルール定義ファイルをダウンロードする

データソース定義からExcelのルール定義ファイルを入手します。
  1. サイトマップの「 IM-BIS 」から「データソース定義」をクリックします。
    ../../_images/download_excel_1.png
  2. 一覧からインポートしたデータソース定義の編集をクリックします。
    ../../_images/download_excel_2.png
  3. データソース定義に付属しているExcelファイルの「ダウンロード」をクリックします。
    ../../_images/download_excel_3.png
  4. ダウンロードしたファイルは、別名で保存します。
    ../../_images/download_excel_4.png
  5. これで、Excelファイルを編集する準備ができましたので、次の手順に進みます。

DecisionTable の条件となる値を確認する

今回は、Excelのルール定義ファイル上に、申請画面のラジオボタンの送信値と DecisionTable に記述するための値(論理名)のマッピングが定義されています。
DecisionTable の作成の前に、マッピングテーブルの内容を確認しましょう。

マッピングの DecisionTable の内容を確認する

条件の値に利用されているラジオボタンのマッピングの設定を確認しましょう。
  1. Excelファイルの「MappingTable」シートを表示します。
    ../../_images/confirm_1.png
  2. 車種、排気量、最大積載量に関する値のマッピングが定義されていることを確認することができます。
    これから作成する DecisionTable では、これらの値を条件に利用しますので、項目名と値を確認してください。
    ../../_images/confirm_2.png
  3. 確認した値に基づいて、次の手順から DecisionTable を作成していきましょう。

保険対象の内容のチェックと保険料を計算するための DecisionTable を作成する

最初に、申請書に入力された保険の対象に関する情報に基づいて自動車保険の保険料を計算する DecisionTable を作成しましょう。
ダウンロードしたExcelのルール定義ファイルには、 Data/VariableDecision などは定義されていますが、 DecisionTable がありませんので、ハンズオンでは、この DecisionTable を作成します。
おおまかには、以下の図のようにExcel上にまとめます。
../../_images/excel_dt2.png

DecisionTable の項目を設定する

DecisionTable の列を必要な分だけ追加し、条件と評価の項目名を設定していきましょう。
  1. 編集中のExcelファイルの「DecisionTable」シートを表示します。
    ../../_images/dt_col_1.png
  2. 今回作成する DecisionTable にあわせた表が記載されていますので、ConditionConclusion のキーワードと項目名(論理名)を設定します。
    ../../_images/dt_col_2.png

    Condition

    Condition

    Condition

    Condition

    Conclusion

    Conclusion

    車種

    最大積載量

    排気量

    保険期間

    メッセージ

    保険料

  3. サブヘッダのキーワード、項目名(論理名)が以下のように設定できたら、一度ファイルを保存します。
    ../../_images/dt_col_3.png
  4. これで、 DecisionTable の項目が設定できましたので、各行に条件と評価を入力していきましょう。

DecisionTable の正常パターンの条件・評価を設定する

先の手順で設定した DecisionTable に保険料が正しく計算されるパターンの条件と評価(結果)を設定していきましょう。
  1. 車種が「普通自動車」の保険料が計算されるパターンの条件と評価(メッセージ・保険料)を設定します。
    「普通自動車」では、最大積載量や排気量は条件に含まれないため、空欄(無条件)とし、以下のように設定します。
    ../../_images/dt_normal_1.png

    Condition

    Condition

    Condition

    Condition

    Conclusion

    Conclusion

    車種

    最大積載量

    排気量

    保険期間

    メッセージ

    保険料

    = 普通自動車

       

    = 12

    = 保険料を計算しました。

    = 16400

    = 普通自動車

       

    = 13

    = 保険料を計算しました。

    = 17300

    = 普通自動車

       

    = 24

    = 保険料を計算しました。

    = 27800

    = 普通自動車

       

    = 25

    = 保険料を計算しました。

    = 28800

    = 普通自動車

       

    = 36

    = 保険料を計算しました。

    = 39100

    = 普通自動車

       

    = 37

    = 保険料を計算しました。

    = 40000

  2. 車種が「軽自動車」の保険料が計算されるパターンの条件と評価(メッセージ・保険料)を設定します。
    「軽自動車」も、最大積載量や排気量は条件に含まれないため、空欄(無条件)とし、普通自動車と同様に以下のように設定します。
    ../../_images/dt_normal_2.png

    Condition

    Condition

    Condition

    Condition

    Conclusion

    Conclusion

    車種

    最大積載量

    排気量

    保険期間

    メッセージ

    保険料

    = 軽自動車

       

    = 12

    = 保険料を計算しました。

    = 15600

    = 軽自動車

       

    = 13

    = 保険料を計算しました。

    = 16500

    = 軽自動車

       

    = 24

    = 保険料を計算しました。

    = 26400

    = 軽自動車

       

    = 25

    = 保険料を計算しました。

    = 27200

    = 軽自動車

       

    = 36

    = 保険料を計算しました。

    = 36900

    = 軽自動車

       

    = 37

    = 保険料を計算しました。

    = 37800

  3. 車種が「トラック」の保険料が計算されるパターンの条件と評価(メッセージ・保険料)を設定します。
    「トラック」では、追加条件として最大積載量が考慮されるため、排気量のみ空欄(無条件)とし、以下のように設定します。
    ../../_images/dt_normal_3.png

    Condition

    Condition

    Condition

    Condition

    Conclusion

    Conclusion

    車種

    最大積載量

    排気量

    保険期間

    メッセージ

    保険料

    = トラック

    = 2トン超

     

    = 12

    = 保険料を計算しました。

    = 35700

    = トラック

    = 2トン超

     

    = 13

    = 保険料を計算しました。

    = 38300

    = トラック

    = 2トン超

     

    = 24

    = 保険料を計算しました。

    = 66200

    = トラック

    = 2トン超

     

    = 25

    = 保険料を計算しました。

    = 68700

    = トラック

    = 2トン以下

     

    = 12

    = 保険料を計算しました。

    = 24000

    = トラック

    = 2トン以下

     

    = 13

    = 保険料を計算しました。

    = 25600

    = トラック

    = 2トン以下

     

    = 24

    = 保険料を計算しました。

    = 43100

    = トラック

    = 2トン以下

     

    = 25

    = 保険料を計算しました。

    = 44600

  4. 車種が「バイク」の保険料が計算されるパターンの条件と評価(メッセージ・保険料)を設定します。
    「バイク」では、追加条件として排気量が考慮されるため、最大積載量のみ空欄(無条件)とし、以下のように設定します。
    ../../_images/dt_normal_4.png

    Condition

    Condition

    Condition

    Condition

    Conclusion

    Conclusion

    車種

    最大積載量

    排気量

    保険期間

    メッセージ

    保険料

    = バイク

     

    = 250cc

    = 12

    = 保険料を計算しました。

    = 9200

    = バイク

     

    = 250cc

    = 13

    = 保険料を計算しました。

    = 9600

    = バイク

     

    = 250cc

    = 24

    = 保険料を計算しました。

    = 13600

    = バイク

     

    = 250cc

    = 25

    = 保険料を計算しました。

    = 14000

    = バイク

     

    = 250cc

    = 36

    = 保険料を計算しました。

    = 18000

    = バイク

     

    = 250cc

    = 37

    = 保険料を計算しました。

    = 18400

    = バイク

     

    = 125cc-250cc

    = 12

    = 保険料を計算しました。

    = 9500

    = バイク

     

    = 125cc-250cc

    = 24

    = 保険料を計算しました。

    = 14300

    = バイク

     

    = 125cc-250cc

    = 36

    = 保険料を計算しました。

    = 19000

    = バイク

     

    = 125cc-250cc

    = 48

    = 保険料を計算しました。

    = 23600

    = バイク

     

    = 125cc-250cc

    = 60

    = 保険料を計算しました。

    = 28100

    = バイク

     

    = 125cc以下

    = 12

    = 保険料を計算しました。

    = 7300

    = バイク

     

    = 125cc以下

    = 24

    = 保険料を計算しました。

    = 9900

    = バイク

     

    = 125cc以下

    = 36

    = 保険料を計算しました。

    = 12400

    = バイク

     

    = 125cc以下

    = 48

    = 保険料を計算しました。

    = 14900

    = バイク

     

    = 125cc以下

    = 60

    = 保険料を計算しました。

    = 17300

  5. これで、 DecisionTable の保険料が計算されるパターンが作成できましたので、一度ファイルを保存しましょう。

DecisionTable のエラーパターンの条件・評価を設定する

続いて DecisionTable に保険料の一覧に保険料が設定されていない条件となった場合のエラーパターンの条件と評価(結果)を設定していきましょう。
  1. エラーのパターンのひとつとして、車種に最大積載量や排気量が誤って設定された場合には、保険料を0とし、エラーメッセージを返却するようにします。
    このエラーを表現するためには、車種が「普通自動車」「軽自動車」の場合には、最大積載量や排気量に対象外以外の値がセットされている場合には、エラーと判断させるようにしましょう。
    条件の演算子には、「Is One Of」を利用して、最大積載量や排気量に設定される値をカンマ区切りで設定しましょう。
    ../../_images/dt_error_1.png

    Condition

    Condition

     

    Condition

     

    Condition

    Conclusion

    Conclusion

    車種

    最大積載量

     

    排気量

     

    保険期間

    メッセージ

    保険料

    = 普通自動車

    Is One Of

    2トン超,2トン以下

         

    = 入力内容に誤りがあります。

    = 0

    = 普通自動車

       

    Is One Of

    125cc,125cc-250cc,250cc

     

    = 入力内容に誤りがあります。

    = 0

    = 軽自動車

    Is One Of

    2トン超,2トン以下

         

    = 入力内容に誤りがあります。

    = 0

    = 軽自動車

       

    Is One Of

    125cc,125cc-250cc,250cc

     

    = 入力内容に誤りがあります。

    = 0

  2. 先に設定したように、トラックでは排気量、バイクでは、最大積載量が設定されている場合をエラーとします。
    普通自動車・軽自動車と同様に、演算子「Is One Of」を利用して、以下のように設定しましょう。
    また、トラックやバイクを選択されている場合には、必要な最大積載量や排気量の設定値が「対象外」となる場合にもエラーとする必要がありますので、合わせて設定します。
    ../../_images/dt_error_2.png

    Condition

    Condition

     

    Condition

     

    Condition

    Conclusion

    Conclusion

    車種

    最大積載量

     

    排気量

     

    保険期間

    メッセージ

    保険料

    = トラック

       

    Is One Of

    125cc,125cc-250cc,250cc

     

    = 入力内容に誤りがあります。

    = 0

    = バイク

    Is One Of

    2トン超,2トン以下

         

    = 入力内容に誤りがあります。

    = 0

    = トラック

    = 対象外

           

    = 入力内容に誤りがあります。

    = 0

    = バイク

       

    = 対象外

       

    = 入力内容に誤りがあります。

    = 0

  3. エラーのパターンとして、車種ごとに決められた保険期間でない期間が設定された場合には、保険料を0とし、エラーメッセージを返却するようにします。
    DecisionTable では、上から順番に条件を評価しますので、車種が「普通自動車」で先に設定したパターンのいずれにも合致しない場合、と記述することで表現できます。
    DecisionTable の最後の行に、各車種の名前を条件にして、保険料とエラーメッセージを以下のように設定します。
    ../../_images/dt_error_3.png

    Condition

    Condition

    Condition

    Condition

    Conclusion

    Conclusion

    車種

    最大積載量

    排気量

    保険期間

    メッセージ

    保険料

    = 普通自動車

         

    = 保険期間が正しく設定されていません。

    = 0

    = 軽自動車

         

    = 保険期間が正しく設定されていません。ecli

    = 0

    = トラック

         

    = 保険期間が正しく設定されていません。

    = 0

    = バイク

         

    = 保険期間が正しく設定されていません。

    = 0

DecisionTable の正常パターン、エラーパターンの評価順をコントロールする

最後に DecisionTable に設定した正常パターン、エラーパターンの条件の評価の順序を考慮して、正しく評価が行われるように並び替えをしましょう。
  1. OpenRules の DecisionTable はExcelの表を左上から右下に向かって評価を行います。
    車種「普通自動車」や「軽自動車」では、最大積載量や排気量が空欄(無条件)の設定となっているため、今の設定で実行した場合には、最大積載量や排気量に誤った値が設定されていてもエラーと判定しません。
    車種によって最大積載量や排気量に誤った値が設定されたときに、正しくエラーと評価できるように、「 DecisionTable のエラーパターンの条件・評価を設定する」の手順1~2で作成した条件を1番上の行に移動します。
    ../../_images/dt_sort_1.png
  2. 保険期間の入力チェックについては、保険期間が正常パターンに記述されている条件のどれとも一致しない場合をエラーとします。
    そのため、正常パターンのどれにも一致しない場合に評価が行われるようにそのまま一番下にします。
    ../../_images/dt_sort_2.png
  3. これで、Excelファイルの条件の評価順を正しく設定することができました。
    今回のハンズオンのExcelのルール定義ファイルには、その他に必要な定義は設定済みとなっているため、ファイルを保存します。
    完成した DecisionTable は、以下の図の通りになります。
    次の手順で IM-BIS の画面(フォーム)と連携するための設定を行っていきましょう。
    ../../_images/dt_sort_3.png