ルールエンジンの使い方 | Ouobpo

ルールエンジンの使い方

 JBoss Rulesをはじめ、JessILOG 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の「拒否機能」に相当する使い方と言えそうだ。