2009-06-17 2 views
1

既製品(MSBRE、Droolsなど)を評価した後、独自のルールエンジンを作成しています(この決定は行われました。私が望む細部を行うことになるそれらのうち、最も歓迎されています)。ルールエンジン用ツール(コントロール)GUI

私が望むのは、ユーザーに私たちのドメイン "オブジェクト"のうちの1つをとり、Xmlまたは(理想的には).netコードに変換できるGUIでルールを作ることができるような単純なGUIをユーザーに与えることです。

たとえば、ユーザーがStaffDutyを選択し、「スタッフグループが管理グループに属し、今日のDutyが8時間より長い場合、明日のサインオン時刻が08:00以降であることを確認します」としたいとします。 StaffDutyオブジェクトにはGroups、DutyTime、NextDutyの各プロパティがあり、NextDutyはSignOnプロパティを持つ型になります。

"ビットを埋める"というユーザーと幾分グラフィカルに表示し、それを保存して(おそらくxmlを解釈して)コードに変換できるようにしたいと考えています。

私はこれをかなり解釈したままにしておきました。具体的にすることで、この時点で何かを除外したくないからです。

アイデアありがとうございます!

答えて

0

大企業のビジネスルールエンジンでこれまでしました。

XMLスキーマを使用してデータを記述するには、XMLスキーマ注釈を使用してすべてのルールエンジン固有のビットを追加し、スキーマが有効であることを確認してください。

GUIには、構造を示すツリービューと選択されたツリーノードの詳細を表示する右側のペインがある従来のエクスプローラスタイルのビューが用意されていました。

かなり複雑なXSLT(カスタム拡張機能付き)を使用して、フォームを表す小さなXML文書とそのフォーム定義からコントロールを動的にレンダリングする小さなエンジンを生成しました。

フォームの背後にあるコードは、XMLフラグメントを更新し、XMLフラグメントを別のXSLTによってXML差分に変換し、スキーマのメモリ内表現を更新するために使用します。

注釈付きXMLスキーマが作成されると、コンパイラは2つの.NETアセンブリを生成しました.1つはスキーマのコード表現を含み、もう1つはビジネスルールの実装です。

これは非常に複雑なコードですが、非常に柔軟でダイナミックで、大部分のUIはXSLTだけでカスタマイズできます。実際、一部のユーザーは、XSLTを含む動的に読み込まれたアセンブリを使用して完全に処理された異なるビューを必要としました。

コストはおよそ2.5M GBPで、開発に2年以上かかりました(すべてのことがUIだけではありません)。私が28年間ビジネスで最も誇りに思ってきた開発はまだ残っています!

さらにお気軽にご相談ください。

+0

素晴らしい音ですが、よりシンプルなソリューション(指が交差しています)を望んでいます。ありがとう! – Mark

1

Windows Workflow Foundationのルールエンジンのルールと式のデザイナーを見てみましょう。それらは両方ともVisual Studioの外部でホスト可能であることを意図しています。特に、ルールデザイナーがそのコンテキストとして与えられた型に渡され、その型のプロパティとそれらのプロパティによって参照される型のプロパティに基づいてルールと式を作成できる例を見ました。実際、オブジェクトグラフのルートに型を渡すことができ、エンジンはグラフ内のすべてのオブジェクトのプロパティを処理できました。

+0

ありがとうジョン私はこれをもう一度見ます。私がこのルールエンジンで持っていた私の問題の1つは、オブジェクトグラフを歩くことができないと思ったことでした。私の場合は、StaffDuty.NextDuty.StartTime <08:00のような条件を設定したかったのです。しかし、NextDutyは複雑なタイプなので、できませんでした。おそらく私は間違っていたでしょう。 – Mark

関連する問題