7.2. OpenRules で自動車保険申請のルールを作成する¶
OpenRules で自動車保険の保険料を計算するためのルールを作成します。このハンズオンでは、自動車保険の申し込み申請フローをサンプルに、「いずれかと一致」などの演算子やルールの結果に基づく入力チェックの実装方法を確認することができます。また、このハンズオンでは、登録ずみのデータソース定義のExcelのルール定義ファイルを更新しながら、ルール変更時の対応手順を確認します。
ルールを定義するExcelファイルを作成する手順
このシナリオで作成するルールの概要¶
作成するルールの内容
データソース定義をダウンロードする¶
このハンズオンでは、あらかじめ登録済みのデータソース定義のルールを更新する方法を行います。下記のデータソース定義のインポートファイルをダウンロードしてください。
データソース定義
データソース定義ファイルをインポートする¶
先の手順でダウンロードしたファイルをデータソース定義からインポートし、変更を行うExcelのルール定義ファイルを入手します。
データソース定義ファイルをインポートする¶
データソース定義からExcelのルール定義ファイルをダウンロードする¶
DecisionTable の条件となる値を確認する¶
今回は、Excelのルール定義ファイル上に、申請画面のラジオボタンの送信値と DecisionTable に記述するための値(論理名)のマッピングが定義されています。DecisionTable の作成の前に、マッピングテーブルの内容を確認しましょう。
マッピングの DecisionTable の内容を確認する¶
条件の値に利用されているラジオボタンのマッピングの設定を確認しましょう。
Excelファイルの「MappingTable」シートを表示します。 車種、排気量、最大積載量に関する値のマッピングが定義されていることを確認することができます。これから作成する DecisionTable では、これらの値を条件に利用しますので、項目名と値を確認してください。 確認した値に基づいて、次の手順から DecisionTable を作成していきましょう。
保険対象の内容のチェックと保険料を計算するための DecisionTable を作成する¶
最初に、申請書に入力された保険の対象に関する情報に基づいて自動車保険の保険料を計算する DecisionTable を作成しましょう。ダウンロードしたExcelのルール定義ファイルには、 Data/Variable や Decision などは定義されていますが、 DecisionTable がありませんので、ハンズオンでは、この DecisionTable を作成します。おおまかには、以下の図のようにExcel上にまとめます。
DecisionTable の項目を設定する¶
DecisionTable の列を必要な分だけ追加し、条件と評価の項目名を設定していきましょう。
編集中のExcelファイルの「DecisionTable」シートを表示します。 サブヘッダのキーワード、項目名(論理名)が以下のように設定できたら、一度ファイルを保存します。 これで、 DecisionTable の項目が設定できましたので、各行に条件と評価を入力していきましょう。
DecisionTable の正常パターンの条件・評価を設定する¶
先の手順で設定した DecisionTable に保険料が正しく計算されるパターンの条件と評価(結果)を設定していきましょう。
車種が「普通自動車」の保険料が計算されるパターンの条件と評価(メッセージ・保険料)を設定します。「普通自動車」では、最大積載量や排気量は条件に含まれないため、空欄(無条件)とし、以下のように設定します。 車種が「軽自動車」の保険料が計算されるパターンの条件と評価(メッセージ・保険料)を設定します。「軽自動車」も、最大積載量や排気量は条件に含まれないため、空欄(無条件)とし、普通自動車と同様に以下のように設定します。 車種が「トラック」の保険料が計算されるパターンの条件と評価(メッセージ・保険料)を設定します。「トラック」では、追加条件として最大積載量が考慮されるため、排気量のみ空欄(無条件)とし、以下のように設定します。
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
車種が「バイク」の保険料が計算されるパターンの条件と評価(メッセージ・保険料)を設定します。「バイク」では、追加条件として排気量が考慮されるため、最大積載量のみ空欄(無条件)とし、以下のように設定します。
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
これで、 DecisionTable の保険料が計算されるパターンが作成できましたので、一度ファイルを保存しましょう。
DecisionTable のエラーパターンの条件・評価を設定する¶
続いて DecisionTable に保険料の一覧に保険料が設定されていない条件となった場合のエラーパターンの条件と評価(結果)を設定していきましょう。
エラーのパターンのひとつとして、車種に最大積載量や排気量が誤って設定された場合には、保険料を0とし、エラーメッセージを返却するようにします。このエラーを表現するためには、車種が「普通自動車」「軽自動車」の場合には、最大積載量や排気量に対象外以外の値がセットされている場合には、エラーと判断させるようにしましょう。条件の演算子には、「Is One Of」を利用して、最大積載量や排気量に設定される値をカンマ区切りで設定しましょう。
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
先に設定したように、トラックでは排気量、バイクでは、最大積載量が設定されている場合をエラーとします。普通自動車・軽自動車と同様に、演算子「Is One Of」を利用して、以下のように設定しましょう。また、トラックやバイクを選択されている場合には、必要な最大積載量や排気量の設定値が「対象外」となる場合にもエラーとする必要がありますので、合わせて設定します。 エラーのパターンとして、車種ごとに決められた保険期間でない期間が設定された場合には、保険料を0とし、エラーメッセージを返却するようにします。DecisionTable では、上から順番に条件を評価しますので、車種が「普通自動車」で先に設定したパターンのいずれにも合致しない場合、と記述することで表現できます。DecisionTable の最後の行に、各車種の名前を条件にして、保険料とエラーメッセージを以下のように設定します。
DecisionTable の正常パターン、エラーパターンの評価順をコントロールする¶
最後に DecisionTable に設定した正常パターン、エラーパターンの条件の評価の順序を考慮して、正しく評価が行われるように並び替えをしましょう。
OpenRules の DecisionTable はExcelの表を左上から右下に向かって評価を行います。車種「普通自動車」や「軽自動車」では、最大積載量や排気量が空欄(無条件)の設定となっているため、今の設定で実行した場合には、最大積載量や排気量に誤った値が設定されていてもエラーと判定しません。車種によって最大積載量や排気量に誤った値が設定されたときに、正しくエラーと評価できるように、「 DecisionTable のエラーパターンの条件・評価を設定する」の手順1~2で作成した条件を1番上の行に移動します。 保険期間の入力チェックについては、保険期間が正常パターンに記述されている条件のどれとも一致しない場合をエラーとします。そのため、正常パターンのどれにも一致しない場合に評価が行われるようにそのまま一番下にします。 これで、Excelファイルの条件の評価順を正しく設定することができました。今回のハンズオンのExcelのルール定義ファイルには、その他に必要な定義は設定済みとなっているため、ファイルを保存します。完成した DecisionTable は、以下の図の通りになります。次の手順で IM-BIS の画面(フォーム)と連携するための設定を行っていきましょう。