Frage

Viele Grüße!

Die Arbeit an einem Web-basierten Projekt waren Geschäftsregeln und Logik müssen vom Kunden angepasst werden. Ich möchte, dies zu tun, ohne die Anwendung wir einen neuen Client auf dem System anmelden, jedes Mal neu kompilieren zu müssen. Die Architekturen ich skizziert habe so weit sind:

  1. Windows Workflow: Erstellen von dynamischen Workflows und sie in die Datenbank zu speichern.
  2. Reflexion: eine Geschäftsregeln Interface und Nutzung Reflexion Erstellen des benutzerdefinierten Client Assembly zu laden.
  3. Ein echter Business Rules Engine
  4. Implementierung eines IOC Container wie Strukturplan. [Zaff: hinzugefügt 6/4]

Haben Sie jemals etwas ähnlich wie diese umgesetzt? Wenn ja, was ist Ihre Erfahrung? Und schließlich gibt es eine andere Lösung, die ich erforschen werden sollte?

Danke für Ihre Hilfe !!

War es hilfreich?

Lösung

Ich habe die meisten der Ansätze umgesetzt Sie erwähnen. Die Antwort kann auf einer Vielzahl von Faktoren ab.

Was Client Rolle (n) werden die Änderungen an den Geschäftsregeln werden zu machen (zum Beispiel Business Analyst, Entwickler, Power-User, etc.)? Bedeutungsvolle Unterstützung für Business-Analysten kann eine Regel-Engine mit externalisierte Regeln in einer db und ein nutzbares UI benötigen. Bedeutungsvolle Unterstützung für Entwickler könnte so einfach sein, wie so etwas wie MEF nutzen ( http://www.codeplex.com/MEF ).

Sie können auch Faktor dafür, wie oft die Geschäftsregeln geändert werden müssen und welche Arten von damit verbundenen betrieblichen Anforderungen gelten (z Host-Prozess bleiben muss laufen, Anwendungsdomäne Entladen ok, etc.). Eine gute Auswahl kann einige sorgfältige Überlegungen über wahrscheinlich vs. unwahrscheinlich zukünftigen Bedürfnisse erfordern.

Andere Tipps

Sie können Daten tun Geschäftsregeln angetrieben, wie dieser . Entscheidungsbäume können ein guter Weg sein, auch zu gehen.

Sie könnte auch darüber nachdenken, aspektorientierte Programmierung als eine Möglichkeit, Geschäftsregeln zu implementieren.

Meine einzige Verwarnung mit Induktions Rules Engine Rete ist, dass die Regelsätze klein und in der Nähe zu den Objekten, die sie verwenden gehalten werden sollen. Wenn Sie das Verhalten eines Objekts in einer Regel-Engine einkapseln kann, die einen Teil ihres Staates ist, umso besser. Ich für das „Unternehmen“ Lösung nicht kümmern, die Tausende von Regeln in eine Singleton Regel-Engine-Dumps, die für jeden Teil des Unternehmens eine Abhängigkeit wird.

Dies ist vielleicht nicht der beste Ansatz sein, aber meine Firma Ihre # 2 Option in mehreren Fällen umgesetzt hat, mit Erfolg.

Wir konfigurieren grundsätzlich Kunden in einer Datenbank oder Konfigurationsdatei, und für jeden Client, gäbe es eine Lookup-Tabelle, die einen Klassennamen für was auch immer Business-Operation auszuführen aufzurufen speichert. Wenn der Code eine Anforderung für Client A bekommt es die Klasse sieht bis zu verwenden, und schafft es und führt es über Reflexion.

Ich bin kein großer Fan von Code-bezogene Dinge in der Datenbank setzen, aber es funktioniert eigentlich ganz in Ordnung und ist nicht zu kompliziert in diesem Fall.

Ich schlage vor, eine Kombination aus 1 und 3

Aber nicht speichert den Workflow in einer Datenbank speichern, es ist ein Entscheidungsbaum oder Regelstrom (wie wir sie nennen).

Ändern den Workflow einen bestimmten Kunden gerecht zu werden, oder verbünden sie zu ihrem Profil ist eine einfache Aufgabe, wenn Sie ein visuelles haben, action-driven-Tool wie Visual Rules . Es gibt auch eine Menge Nutzen für Ihr Business Analyst oder Support-Mitarbeiter, dass Veränderungen vornehmen zu müssen, ohne den Code anpassen zu müssen.

Auch keine dieser Anforderungen erfordert ein kompliziertes AI-Tools wie RETE und inferencing- Sequential Logic ist am besten.

Ich habe einen dynamischen Regel-Engine basierte auf der folgenden Open-Source-.NET Business Rule-Engine NxBRE . Ich benutzte die Strömungsmaschine als das primäre Beispiel für meine dynamische Regel-Engine.

Ich habe die gleiche Architektur in Ihrer Frage erwähnt.

I WF mögen, aber wenn man es betrachtet haben und beschlossen, wollen Sie etwas anderes, sollten Sie suchen unter K2 . Auch BizTalk hat BRE Unterstützung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top