ルールエンジンの使い方
JBoss Rulesをはじめ、Jess、ILOG JRulesなど、ルールエンジンは商用/OSSを問わずいくつか出回っている。ルールエンジンは、SOAの文脈でもよく登場する。しかし、実際のところどうやって使っていいか、なかなかイメージが湧きにくいミドルウェアでもある。
Ronald G. Rossという人が、「ビジネスルールアプローチ」という手法を以下の書籍で提唱しているのだが、その中でルールエンジンの使い方を体系的に分類しているので、参考になる。
Ronald G. Ross, Principles of the Business Rule Approach (Addison-Wesley Information Technology Series)
1. 拒否機能(Rejector)・・・ルールに違反したイベントを棄却する
2. 生成機能(Producer)・・・イベントから何かを生み出す
2-1. 計算ルール(Computation rule)・・・計算アルゴリズムによって何かを算出する
2-2. 導出ルール(Derivation rule)・・・論理演算によって何かを導き出す
3. 応答機能(Projector)・・・イベントに応答して新たなイベントを派生させる
3-1. 有効/無効化(Toggle)・・・何かのスイッチを ON/OFF する
3-1-1. 推論ルール(Inference rule)・・・ある条件下で何かが真かどうかを推論する
3-1-2. ルールの有効/無効化(Rule toggle)・・・特定のルールを有効/無効化する
3-1-3. プロセスの有効/無効化(Process toggle)・・・特定のプロセスを有効/無効化する
3-1-4. データの有効/無効化(Data toggle)・・・ある条件化でデータを生成/削除する
3-2. コピー(Copier)・・・何かの複製に関する処理を行なう
3-2-1. 記録ルール(Imprint rule)・・・データを永続化する
3-2-2. 表示ルール(Presentation rule)・・・データの表示スタイルを変更する
3-3. トリガー(Executive)・・・別のプロセス/ルールを発火させる
3-3-1. プロセストリガー(Process trigger)・・・別のプロセスを発火させる
3-3-2. ルールトリガー(Rule trigger)・・・別のルールを発火させる
私自身はあるプロジェクトで、Webから来る入力データの妥当性検証を行なうフレームワークとしてJBoss Rulesを使ったことがあるが、妥当性検証は上の分類では1の「拒否機能」に相当する使い方と言えそうだ。
Ronald G. Rossという人が、「ビジネスルールアプローチ」という手法を以下の書籍で提唱しているのだが、その中でルールエンジンの使い方を体系的に分類しているので、参考になる。
![](https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fecx.images-amazon.com%2Fimages%2FI%2F216MNRVC6YL.jpg)
1. 拒否機能(Rejector)・・・ルールに違反したイベントを棄却する
2. 生成機能(Producer)・・・イベントから何かを生み出す
2-1. 計算ルール(Computation rule)・・・計算アルゴリズムによって何かを算出する
2-2. 導出ルール(Derivation rule)・・・論理演算によって何かを導き出す
3. 応答機能(Projector)・・・イベントに応答して新たなイベントを派生させる
3-1. 有効/無効化(Toggle)・・・何かのスイッチを ON/OFF する
3-1-1. 推論ルール(Inference rule)・・・ある条件下で何かが真かどうかを推論する
3-1-2. ルールの有効/無効化(Rule toggle)・・・特定のルールを有効/無効化する
3-1-3. プロセスの有効/無効化(Process toggle)・・・特定のプロセスを有効/無効化する
3-1-4. データの有効/無効化(Data toggle)・・・ある条件化でデータを生成/削除する
3-2. コピー(Copier)・・・何かの複製に関する処理を行なう
3-2-1. 記録ルール(Imprint rule)・・・データを永続化する
3-2-2. 表示ルール(Presentation rule)・・・データの表示スタイルを変更する
3-3. トリガー(Executive)・・・別のプロセス/ルールを発火させる
3-3-1. プロセストリガー(Process trigger)・・・別のプロセスを発火させる
3-3-2. ルールトリガー(Rule trigger)・・・別のルールを発火させる
私自身はあるプロジェクトで、Webから来る入力データの妥当性検証を行なうフレームワークとしてJBoss Rulesを使ったことがあるが、妥当性検証は上の分類では1の「拒否機能」に相当する使い方と言えそうだ。