7

ご挨拶!Webアプリケーションの動的ビジネスルール

Webベースのプロジェクトの作業はビジネスルールであり、ロジックはクライアントによってカスタマイズする必要があります。私はシステムで新しいクライアントにサインアップするたびにアプリケーションを再コンパイルせずにこれを実行したいと思います。これまでに概説したアーキテクチャは、次のとおりです。

  1. Windowsワークフロー:動的ワークフローを作成し、データベースに保存します。
  2. リフレクション:ビジネスルールインターフェイスを作成し、リフレクションを使用してカスタムクライアントアセンブリを読み込みます。
  3. 構造マップのようなIOCコンテナの実装真のビジネス・ルール・エンジン
  4. 。 [zaff:added 6/4]

このようなことはこれまでに実装したことがありますか?もしそうなら、あなたの経験は何ですか?そして最後に私が探検すべきもう一つの解決策がありますか?

ありがとうございます!

答えて

2

あなたが言及したアプローチのほとんどを実装しました。その答えは、さまざまな要因に依存する可能性があります。

ビジネスルール(ビジネスアナリスト、デベロッパー、パワーユーザーなど)を変更するクライアントの役割は何ですか?ビジネスアナリストにとって意味のあるサポートには、dbと使用可能なUIで外部化されたルールを持つルールエンジンが必要な場合があります。開発者のための意味のあるサポートは、MEF(http://www.codeplex.com/MEF)のようなものを活用するだけで簡単です。

また、ビジネスルールを変更する必要があるかどうか、関連する運用要件が適用される可能性がある要因を考慮する必要があります(ホストプロセスの実行、アプリケーションドメインのアンロードなど)。良い選択は、将来の可能性が高いとは考えられないことに対するいくつかの注意深い考えを必要とするかもしれない。

2

thisのようなデータ駆動型ビジネスルールを実行できます。決定木も同様に良い方法です。

ビジネスルールを実装する方法として、アスペクト指向プログラミングについて考えることもできます。

Rete誘導ルールエンジンで注意すべき点は、ルールセットを小さくし、それを使用するオブジェクトに近いものにすることです。状態の一部であるルールエンジンにオブジェクトの動作をカプセル化することができれば、より良い結果が得られます。何千ものルールをシングルトンルールエンジンにダンプして企業のあらゆる部分に依存する「エンタープライズ」ソリューションは気にしません。

1

これは最善の方法ではないかもしれませんが、私の会社はいくつかのケースで成功して#2オプションを実装しました。

私たちは、基本的にはデータベースや設定ファイルにクライアントを構成し、各クライアントのために、実行するためにどのような事業運営のために呼び出すために、クラス名を格納したルックアップテーブルが存在することになります。コードがクライアントAの要求を受け取ると、使用するクラスをルックアップして作成し、リフレクションによって実行します。

私はコード関連のものをデータベースに入れているのではありませんが、実際にはうまくいきますし、あまり複雑ではありません。

0

私はWFが好きですが、あなたがそれを見て、あなたが何か違うものを望むと決めたら、K2を見てください。また、BizTalkにはBREがサポートされています。

0

次のオープンソース.NETビジネスルールエンジンNxBREに基づいて動的ルールエンジンを作成しました。ダイナミックルールエンジンの主要な例としてFlowエンジンを使用しました。

あなたの質問に記載されているのと同じアーキテクチャを使用しました。

1

Iは1と3

の組み合わせを提案する。しかし、データベースにワークフローを保存していない、それは決定木やルールフロー(私たちはそれらを呼び出すよう)である格納します。

Visual Rulesのようなビジュアルなアクション駆動型ツールを使用すると、特定の顧客、顧客、またはそれらを自分のプロファイルに統合するためのワークフローを変更することは簡単です。ビジネスアナリストやサポート担当者がコードを変更することなく、その変更を行うことには多くの利点があります。

また、RETEや推論などの複雑なAIツールが必要です。シーケンシャルロジックが最適です。

関連する問題