2009-08-22 7 views
4

ビジネスプロセスロジックに触れることなくルールを追加できるように、ビジネスプロセスからビジネスルールを外部化するにはどうすればよいですか?ビジネスプロセスとビジネスプロセスの分離

たとえば、「製品の追加」や「製品の更新」という2つのビジネスプロセスがありますが、これらの2つのプロセスが共有するいくつかの一般的なルールがあります。私は、特定のプロセスで利用できるすべてのルールを実行するビジネスプロセスを一度書くつもりであり、例外がスローされなければ、ビジネスプロセスを正常に完了し続けます。

ルールエンジンを使用するつもりはないので、私のアーキテクチャでは重すぎるかもしれないと思います。

おかげで、よろしく、
アジャイ

+0

ルールエンジンに問題がありますか? –

+1

質問は有効ですが、-1を書いた人はあなたの顔を見せることができますか?私は有効な質問のために+1を与える。 –

+0

私のアプリケーションドメインは、コンテキストに依存する複数のパラメータを持つ非常に複雑なルールを必要としません。私はルールエンジンがアーキテクチャ上で膨らんだように感じます。 – Ajay

答えて

1

はこの質問への答えは、私がここに書くことができるよりも複雑です。これは、あなたのビジネス/業界のデータ関係、セキュリティ、ポリシーの教義、および管理上の制約の科学に触れています。

"ビジネスルール"と "ビジネスポリシー"よりもあまりあいまいでないものを意味する場合、私はあなたの質問を誤解する可能性があります。

0

質問は、私は一般的なパターンの面でお答えしますかなり広いです。

多くの場合私がやったことは、プロセスの適切な段階でいくつかの「ゲートキーパー」アクティビティを挿入するようにプロセスを定義することです。これらのゲートキーパーのそれ​​ぞれは、ビジネスルールの特定のサブセットを実施する責任があります。たとえば、そのようなアクティビティの1つがデータ品質を強化する可能性があります。もう1つは、ビジネスルールに基づいてルーティングを決定する場合があります。別の価格設定。等々。

実際のルール自体はワークフローの外部に保持されており、ワークフローとは独立して変更できます。このトリックは、ルール評価の「プロセスの結果」を制約して、予測可能な(テスト可能な)プロセスを継続できるようにすることです。

1

多くの手法を使用して、プロセスのフローとルールを分けることができます。 abstarctionのいくつかのレベルでは、ビジネスプロセスのさまざまなポイントから "メソッド"を呼び出しています。問題はビジネスプロセス自体を変更することなくそのメソッドを変更できるメカニズムの1つになります。

独自のライブラリ(dll、jarなど)にメソッドをパッケージし、そのjarを新しいバージョンに置き換えることができます。ライブラリを変更し、ビジネスルールを変更します。

データベースから得られた構成可能なパラメータの観点から、この方法の論理を表現することができる。データベースを変更し、ビジネスルールを変更します。

複雑さは、あなたがあなた自身のルールエンジンを実装していることがわかり十分に上昇した場合。

ある時点で、このホイールを再開発するのではなく、既存のルールエンジンを使用する方が効率的になります。より詳細なアドバイスについて

あなたは私たちにあなたが何をしているかについての詳細を伝える必要があります。