Contents
BRMSとは
BRMSはBusiness Rule Management Systemの略で、業務上の規則や条件、判断基準、経験的な対処パターンをビジネスルールとして定義・登録し、その組み合わせから複雑な業務判断を自動的に行うコンピュータ・システムのこと。
エキスパートシステム、ルールベースAI、ルールエンジン、ルールシステムなどとも呼ばれる。
通常は何らかの事前処理された集計データなどを使用してビジネスルール処理を行うと思われるが、事前処理に関してはBRMSと別の手段(ELTツールなど)で行っておく必要がある。そのため、ノンプログラミングでBRMSを使用できたとしても、それ以外の部分でプログラミングが必要になることがままある。
ビジネスルールの定義方法として、一般的に次のものがある。
- ルール言語
条件文のセットで構成される。プログラミング言語に近い記述方法をとる製品もあれば、自然言語に近い表現で記述できる製品もある - ディシジョンテーブル
表形式で定義し、ある変数の値がどの範囲にあるかによって、特定の値を決定する。ディシジョンテーブルの定義内容はルール言語において、if文などの条件文の連続でも表現可能であるので、ディシジョンテーブルはルール言語のシンタックスシュガーでしかない。
BRMSの製品の種類
無償で利用できるもの
Drools
- 開発言語:Java
- 公式サイト:https://www.drools.org/
- ダウンロード:https://www.drools.org/(バージョン7.2.9 / 2019年11月リリース)
- ルール言語サンプル:https://docs.jboss.org/drools/release/7.29.0.Final/drools-docs/html_single/index.html#_droolslanguagereferencechapter
読み方は”ドルール”。
ルール言語はプログラミング言語に近いDRLに加え、自然言語に近いDSLも使用できる。ただし、DSLは内部でDRLへと変換されるが、そのマッピングは自分であらかじめ定義しておく必要がある。
Droolsには以下のソフトウェアが含まれる。
- Drools (Drools Expert、Drools Fusion):Droolsの本体で、ビジネスルールの実行のみを司るルールエンジン。
- jBPM:BPMN 2.0に沿って作成したビジネスルールモデル(ビジネスフロー)を作成・実行できる。個別のビジネスルールの実行内容詳細はJavaコードで記述する必要がある(JavaコードはXML中に出力される)。
- OptaPlanner:経路最適計算のような一定の推論が必要な場合に使用される、推論エンジン
- Business Central(旧 Drools workbench):Webアプリケーション型のビジネスルール作成ツール
- UberFire:Business Centralの基礎部分を再構成したコンポーネントで、EclipseライクなUIを実現する。Business Centralに組み込まれているので、単独では使用しない。
デシジョンテーブルについては、Business Centralを使用せずにエクセルなどのスプレッドシートを使用して作成することもできる。使用方法はこちらが参考になる。
なお、ディシジョンテーブルを作成しても内部でルール言語に変換されるだけで、実行時には同じ扱いである。また、ディシジョンテーブルのセルには直接関数を記述できないが、ルール言語で定義した関数を指定することで動的な処理を埋め込むことができる。
有償版のJBoss BRMS向けであるが、こちらの資料がわかりやすい。
OpenRules
- 開発言語:Java
- 公式サイト:https://openrules.com/intro.htm
- ダウンロード:https://openrules.com/OPNRLS80008012019732993313protected.htm (バージョン8.0.0 / 2019年8月リリース)
- ルール言語サンプル:https://openrules.com/examples.htm ※いくつかのExcelファイルがあるが、1ファイルで1サンプルである
エクセルなどのスプレッドシートに、ルール言語とディシジョンテーブルを混在させて、スプレッドシートのみでビジネスルールを作成できる。
旧来のモデルである”Classic OpenRules BRDMS”と、大規模環境やクラウド環境にも対応した”OpenRules Decision Manager”がある。新しく使い始めるなら”OpenRules Decision Manager”のほうが良い。
有償版もあり、無償版はGPLライセンスであるので、OpenRulesを呼び出すプログラムを提供する場合はその相手に公開しなければならない。Webサービスや組織内部でしか使用しないのであれば、公開義務はない。
開発の際はこちらのドキュメントを最初に読むとよい。
外部サイトであるが、こちらもサンプルとして参考になる。
OpenL Tablets
- 開発言語:Java
- 公式サイト:http://openl-tablets.org/
- ダウンロード:http://openl-tablets.org/downloads (バージョン5.22.6 / 2019年10月リリース)
フレームワークに近く、ルールに沿ったオブジェクトのクラスを作成して対応付ける必要がある。
jBilling
- 開発言語:Java
- 公式サイト:http://www.jbilling.com/
- ダウンロード:https://sourceforge.net/projects/jbilling/ (バージョン4.1.1 / 2016年6月リリース)
請求書作成専用のソフトウェア。請求書作成後はPDFへのエクスポートやメール送信なども可能。
jBilling自体は有償であり、無償で使用できるのは、jBilling Communityである。両者の機能の差異は以下参照
http://www.jbilling.com/community
Community版の場合、APIを使用できないので、原則単独で使用する。つまり、用意されたUIから請求書の要素を入力し、定型的な計算方法を使用して請求書を作成するだけで、複雑なルールに基づく計算はできない。ただし、Droolsと連携可能であるので、Droolsを使用して独自ルールに基づく計算をすることができる。
参考:http://www.jbilling.com/documentation/users/getting-started/brms
Easy Rules
- 開発言語:Java
- 公式サイト:https://github.com/j-easy/easy-rules
- ダウンロード:https://github.com/j-easy/easy-rules (バージョン3.3.0 / 2019年4月リリース)
フレームワーク
RuleBook
- 開発言語:Java
- 公式サイト:http://deliveredtechnologies.com/
- ダウンロード:https://github.com/deliveredtechnologies/rulebook/tree/master (バージョン0.11)
フレームワーク
JESS
- 開発言語:Java
- 公式サイト:https://www.jessrules.com/
開発は停止されている模様
有償で使用できるもの
Progress Corticon
プログラムのコードを書かずに、開発可能。自作のプログラムと連携することもできる。
Red Hat Decision Manager
オープンソースであるDroolsに対し、Red Hatが追加テストを行い、サポートを付けて販売しているもの。旧Red Hat JBoss BPMS。
Pega Platform
Sparkling Logic
お薦めの製品
無償で利用できるもの
ビジネスルールをプログラムから分離するということが、BRMSの第一の目的あるため、ビジネスルールとプログラム上のオブジェクトとの対応付けに独自コードが必要になる、フレームワーク型より、ライブラリ型のほうが良い。
また、ルールの作成に独自のUIが用意されているか、Excelなどのスプレッドシートがあり、それらのみで完結する製品のほうが、ビジネスルールをメンテナンスする、非エンジニアにとっては扱いやすい。
更に、現在もアップデートが続いている製品のほうが良い。
異常を満たす製品はDroolsとOpenRulesのみである。
どちらが良いかは基本的には使用するルール言語やディシジョンテーブルの作成方法について、気に入ったほうを選択すれば良いだろう。
- Drools
- OpenRules