ビジネスルールはセマンティックに記述する(第1回) ~プログラミングとビジネスルールアプローチの違い~
2021.09.22 InnoRules
本エントリーはイノルールズ株式会社 白石浩一様が寄稿したエントリー(https://business.facebook.com/innorules.co.jp/)を転載したものとなります。
今回はビジネスルールアプローチの特徴をルールの表現方法に視点を当てて、プログラムロジックと比較しながら記します。
ビジネスルールの基本的な表現方法はセマンティックであると言われます。セマンティック(意味的)とは何でしょうか。プログラムのロジックと比較しながら特徴を見ていきます。
例えば、簡単なif~then~else文です;
if A=1 and B=2 then
action1 is to be executed.
else
action2 is to be executed.
end if
この場合、action2を実行する条件は、if文の条件(A=1 and B=2)で把握します。そうするとelseの条件はAND条件の否定となるので、
A not equal 1 or B not equal 2
となることがわかります。さらに、もう一つ条件が加わるとelseの条件がとても複雑になり、一目では把握しにくくなります。
elseのように、条件が明示的に書かれていない場合には前の処理(ifの条件)をロジカルに読まなくてはなりません。
これに対してビジネスルールアプローチではelseという概念は"基本的に"ありません。つまり意味が明示的なルールだけがビジネスルールとして真となります。これをセマンティック(意味的)なルール記述と捉えることができます。
BRMSで多くサポートされるディシジョンテーブルにおいてもルール単位にelseを表現することはありません。
レガシーコードをビジネスルールに自動コンバージョンすることが難しい背景もここにあります。コードのロジックを分析してコードで実行したい意味を明確に捉え直す必要があるからです。
次回はスクラッチ開発のシステムが本番稼働して発生した事故のケースについて触れ、セマンティックなビジネスルールアプローチの効果について記します。
参考資料)BRS(http://www.brsolutions.com/) JT on EDM(http://jtonedm.com/)