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

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

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

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

  • 作成するルールの内容

    1. 自動車保険の契約対象を条件に、保険料を計算する。
      保険対象に関する情報が正しく設定されていない場合には、入力チェックでエラーとする。
      • 入力値:車種・保険期間・(車種により)最大積載量・(車種により)排気量
      • 出力値:保険料、メッセージ
    条件と返却する保険料の組み合わせは、以下の通りです。
    (以下の表内に登場しない条件の組み合わせは、入力チェックエラーとして扱います。)
    車種/区分 保険期間
    12ヶ月契約 13ヶ月契約 24ヶ月契約 25ヶ月契約 36ヶ月契約 37ヶ月契約 48ヶ月契約
    普通自動車 16,400円 17,300円 27,800円 28,800円 39,100円 40,000円
    軽自動車 15,600円 16,500円 26,400円 27,200円 36,900円 37,800円
    トラック 積載量 2トン以下 24,000円 25,600円 43,100円 44,600円
    積載量 2トン超 35,700円 38,300円 66,200円 68,700円
    バイク 排気量 125cc未満(原付) 7,300円 9,900円 12,400円 14,900円
    排気量 125cc~250cc
    (軽二輪車)
    9,500円 14,300円 19,000円 23,600円
    排気量 250cc(小型二輪車) 9,200円 9,600円 16,400円 14,000円 18,000円 18,400円

ルールのExcelファイルを作成する手順

今回は、あらかじめ登録済みのデータソース定義のルールを更新します。
このシナリオでは、以下の図の流れで作成していきます。

自動車保険料計算のハンズオンを開始するための準備

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

このハンズオンでは、あらかじめ登録済みのデータソース定義のルールを更新する方法を行います。
まずは、対象のデータソース定義のファイルを入手しましょう。
  1. 以下のリンクからデータソース定義のファイルをダウンロードしてください。

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

先の手順でダウンロードしたファイルをデータソース定義からインポートし、変更を行う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. ダウンロードしたファイルは、別名で保存してください。
    ここでは例として、「insuranceRule_1.xls」と設定して進めていきます。
    ../../_images/download_excel_4.png
  5. これで、Excelファイルを編集する準備ができましたので、次の手順に進みます。

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

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

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

条件の値に利用されているラジオボタンのマッピングの設定を確認しましょう。
  1. Excelファイルの「MappingTable」シートを表示してください。
    ../../_images/confirm_1.png
  2. 車種、排気量、最大積載量に関する値のマッピングが定義されていることを確認することができます。
    これから作成する DecisionTable では、これらの値を条件に利用しますので、項目名と値を確認してください。
    画面(フォーム)のラジオボタンの設定との組み合わせは以下の通りです。
    • 左(Condition)の設定 → ラジオボタンの送信値
    • 右(Conclusion)の設定 → ラジオボタンの表示値
    ../../_images/confirm_2.png
    各表のマッピング対象は以下の通りです。
    1. 車種のマッピングに利用する DecisionTable
    2. 排気量のマッピングに利用する DecisionTable
    3. 最大積載量のマッピングに利用する DecisionTable
  3. 確認した値に基づいて、次の手順から DecisionTable を作成していきましょう。

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

最初に、申請書に入力された保険の対象に関する情報に基づいて自動車保険の保険料を計算する DecisionTable を作成しましょう。
ダウンロードしたExcelのルール定義ファイルには、 Data/VariableDecision などは定義されていますが、 DecisionTable がありませんので、ハンズオンでは、この DecisionTable を作成します。
以下の図のようにExcel上にまとめます。
../../_images/excel_dt2.png
  1. 正常パターン(保険料を計算)
    業務上の入力値の組み合わせとして、正しい組み合わせの場合には、メッセージと対応する保険料を返却するようにします。
  2. エラーパターン(入力チェック)
    入力値の組み合わせで、業務上誤った組み合わせに対しても、メッセージと保険料を返却します。
    IM-BIS との連携時にメッセージ内容を利用した入力チェックを設定し、正しくない場合には申請を行えないように設定します。

DecisionTable の項目を設定する

DecisionTable の列を必要な分だけ追加し、条件と評価の項目名を設定していきましょう。
  1. 編集中のExcelファイルの「DecisionTable」シートを表示してください。
    ../../_images/dt_col_1.png
  2. 今回作成する DecisionTable にあわせた表が記載されていますので、ConditionConclusion のキーワードと項目名(論理名)を設定してください。
    ../../_images/dt_col_2.png
    a b c d e f
    Condition Condition Condition Condition Conclusion Conclusion
    車種 最大積載量 排気量 保険期間 メッセージ 保険料
  3. サブヘッダのキーワード、項目名(論理名)が以下のように設定できたら、一度ファイルを保存します。
    ../../_images/dt_col_3.png
  4. これで、 DecisionTable の項目が設定できましたので、各行に条件と評価を入力していきましょう。

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

先の手順で設定した DecisionTable に保険料が正しく計算されるパターンの条件と評価(結果)を設定していきましょう。
  1. 車種が「普通自動車」の保険料が計算されるパターンの条件と評価(メッセージ・保険料)を設定します。
    「普通自動車」では、最大積載量や排気量は条件に含まれないため、空欄(無条件)とし、以下のように設定してください。
    ../../_images/dt_normal_1.png
    a b c d e f
    Condition Condition Condition Condition Conclusion Conclusion
    車種 最大積載量 排気量 保険期間 メッセージ 保険料
    = 普通自動車     = 12 = 保険料を計算しました。 = 16400
    = 普通自動車     = 13 = 保険料を計算しました。 = 17300
    = 普通自動車     = 24 = 保険料を計算しました。 = 27800
    = 普通自動車     = 25 = 保険料を計算しました。 = 28800
    = 普通自動車     = 36 = 保険料を計算しました。 = 39100
    = 普通自動車     = 37 = 保険料を計算しました。 = 40000
  2. 車種が「軽自動車」の保険料が計算されるパターンの条件と評価(メッセージ・保険料)を設定します。
    「軽自動車」も、最大積載量や排気量は条件に含まれないため、空欄(無条件)とし、普通自動車と同様に以下のように設定してください。
    ../../_images/dt_normal_2.png
    a b c d e f
    Condition Condition Condition Condition Conclusion Conclusion
    車種 最大積載量 排気量 保険期間 メッセージ 保険料
    = 軽自動車     = 12 = 保険料を計算しました。 = 15600
    = 軽自動車     = 13 = 保険料を計算しました。 = 16500
    = 軽自動車     = 24 = 保険料を計算しました。 = 26400
    = 軽自動車     = 25 = 保険料を計算しました。 = 27200
    = 軽自動車     = 36 = 保険料を計算しました。 = 36900
    = 軽自動車     = 37 = 保険料を計算しました。 = 37800
  3. 車種が「トラック」の保険料が計算されるパターンの条件と評価(メッセージ・保険料)を設定します。
    「トラック」では、追加条件として最大積載量が考慮されるため、排気量のみ空欄(無条件)とし、以下のように設定してください。
    ../../_images/dt_normal_3.png
    a b c d e f
    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
    a b c d e f
    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
    a b   c   d e f
    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
    a b   c   d e f
    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
    a b c d e f
    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