BRMSってご存知ですか?
最近になって再び聞かれるようになってきた「BRMS」。BRMSが何であるか簡単にご紹介します。
BRMSとは
BRMSとは、Business Rule Management System の略です。業務ロジックを実行/管理するものです。
よく間違えられるのがRDBMS。RDBMSは、Relational Data Base Management Systemであり、こちらはデータの話。BRMSはロジックの話であり、異なるものです。
BPMSも似ていますが違うものです。こちらは Business Process Management System の略であり、業務プロセス(誰が何時承認・却下し、どのようなコメントを残したか等)を管理するものです。BPMSの中からBRMSが提供するディシジョンサービスが呼ばれるようなケースがあります。例えば、対象となる商品によって承認パスを決定しなければならないような場合とか、適切な承認者や関係者を承認パスに動的に追加するような場合です。
BRMSを構成する3つの部品
BRMSは、主に3つのパートで構成されます。
ルールエンジン
いわゆる業務のIf-thenを行う実働部分です。ライブラリでの提供が多いですが、Webサービスとしての提供もあります。
実際のところは単にIf-Thenを行うのではなく、オブジェクトマッチング技術を使ったものが多く、その中でもRETEアルゴリズムをルーツとして実装の進化をしたものが多いです。ロジックそのものを単純化させ、「そのロジックで値が変わったことをトリガーにしてロジック全体を再評価させる」ような、推論機構とするものが主流です。推論機構をうまく利用すると、複雑なロジックもわかりやすく構成することができ、ロジックの改修等で絶大な力を発揮します。
また、ルールそのものは、そのルールエンジンに特化した表記方法、もしくはJava等の表記方法Decision Model and Notation形式での表記方法等が提供されますが、意思決定表や意思決定ツリーなどを使って、ITに詳しくない方でも理解可能な形で表記することもできるようになっています。
私が長年扱ってきたルールエンジンである、旧ILOG社 現IBM社のOperational Decision Manager や、旧Red Hat社 現IBM社のOperational Decision Manager Open Edition (*)もRETEアルゴリズムベースです。オブジェクトとオブジェクトを比較して評価する方式のため、比較するオブジェクトがnullでもNull Pointer Exceptionが出ないような仕組みが実装されており、業務視点でそのままロジックが書ける感じになります。
ルール管理
作ったルールはアプリケーションの中では一番細かいものになります。これを野放しにしてしまうと、少しだけ違う同じようなルールが大量にできる、バージョンの管理がされず正しく反映されない、誰かが勝手に書き換えるなどの問題が発生します。ロジック部分は業務の根幹であるため、それなりに管理する必要があります。
普通のアプリケーションにおいても、git等のソースコード管理をされているかと思います。ロジックはアプリケーションの一部となるので、そちらを使ってもよいですが、ルールは1つ1つをバラバラにdeployするわけではありません。ある程度の塊で「サービス」(Decision Service)として提供する形になります。そのためのコンパイルや塊の作成など、便利なツールが付いています。
実行されたルールの統計情報を取る機能が付いている製品もあり、利用されていないロジックの整理に役立ちます。
ルール作成GUI
ルールはもちろん、.cや.javaファイルのように、テキストファイルとして書くことは可能ですが、多くの場合はプログラム言語がわかる人向けのソースコードとなります。前述したような意思決定表や表記方法などを利用しようとすると、テキストファイルでは実現できず、なんらかのユーザインターフェースが必要になります。
コンパイル時のエラーの支援や、ロジックの矛盾の検知等をUI上からわかるようにしてある製品もあります。
また、テストシナリオを組んで品質をチェックできる機能を備えた製品もあります。ルールエンジンのテストは、複数のルールを組み合わせたディシジョンサービスとしてのテストとなり、ブラックボックステスト的なテストになります。各ルールのテストを行うことは、ほぼ製品のテストをすることと同じとなってしまいます。製品として担保している部分なので、一番粒度の細かいテスト実装・実施を省略できることも、BRMSを利用するメリットになりますね。
製品により、さらに便利なツールとして追加しているものもあります。
ルールエンジンに関するまとめサイトを作ってあります。文章・スライド・動画など、各筆者の方がかなりのボリュームで書かれておりまして、理解を深めるには良い教材になるはずです。
あわせて御覧ください。
(*) 旧 Red Hat のDecision Managerという製品は、2017年頃までは Red Hat JBoss BRMS という名前でした。