お手軽ビジネスルール管理(BRMS)
最近BRMSという言葉とよく聞くようになりました。言葉だけは以前から知っていいて昔のエキスパートシステムの派生版のように思っていました。しかし、現在はより広範囲に、(少し違和感を感じますが)プログラムの自動生成的なものにもBRMSという言葉を使うケースもあるようです。
今回は前者のエキスパートシステムで利用されるIF−THEN型ルール実行エンジンを.NET環境でお手軽に導入できるので紹介します、
WF(Windows Workflow Foundation)ビジネスエンジン
ビジネスルールを実行するためのエンジンは実は.NET FrameworkのWFに以前から用意されています。どのような機能があるかはWindows Workflow Foundation ルール エンジンの紹介を参考にしてもらえば分かると思いますが、このルールエンジンはワークフローデザイナで利用するのが一般的なのですが、ワークフローデザイナーからでなくても利用できます。それがExecute Windows Workflow Rules without Workflowにサンプルと共に紹介されています。
ビジネスルールの定義
ビジネスルールを実行する単位としてのルールセットといいものがあり、これを定義するエディターが用意されています。
このエディターを表示させるのは以下のように専用のダイアログを表示するコードだけで、このエディタではインテリセンスも効きます。この例はOrderクラスに対してのビジネスルールを定義しています。
var ruleSetDialog = new RuleSetDialog(typeof(Order), null, null); ruleSetDialog.ShowDialog(); var ruleSet = ruleSetDialog.RuleSet;
ビジネスルールの実行
定義したビジネスルールはシリアル化可能でファイルなどに保存できます。ビジネスルールの実行も簡単で以下のようなコードです。
var validation = new RuleValidation(typeof(Order), null); var execution = new RuleExecution(validation, someOrder); ruleSet.Execute(execution);
こんなに簡単に利用できるので、単にロジックを外だししたい場合に動的な式エディターとしても利用するのもありかもしれません*1。知っていると案外便利に利用できると思います。
*1:パフォーマンスは心配ですが...