Dynamische Geschäftsregeln in einer web-Anwendung
Grüße!
Arbeit an einem webbasierten Projekt wurden von Geschäftsregeln und-Logik müssen angepasst werden, durch den Kunden. Ich möchte dies tun, ohne neu kompilieren zu müssen, die Anwendung jedes mal, wenn wir uns anmelden, einen neuen client auf dem system. Die Architekturen, die ich beschrieben habe sind bisher:
- Windows Workflow: Erstellen von dynamischen workflows, und speichern Sie in die Datenbank.
- Reflexion: Erstellen von business rules-Schnittstelle und reflektion verwenden, laden Sie die benutzerdefinierte client-assembly.
- Ein echtes business-Regel-engine
- Umsetzung eines IOC Containers wie Struktur gekennzeichnet. [zaff: Hinzugefügt 6/4]
Haben Sie jemals umgesetzt ähnliches? Wenn ja, was ist Ihre Erfahrung? Und schließlich gibt es eine andere Lösung, die ich sein sollte, zu erforschen?
Dank für deine Hilfe!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich implementiert die meisten der Ansätze, die Sie erwähnen. Die Antwort hängt von einer Vielzahl von Faktoren.
Welche client-Rolle(N) werden die änderungen an den Geschäftsregeln (z.B. business analyst, Entwickler, power-user, etc.)? Sinnvolle Unterstützung für das business Analysten benötigen möglicherweise eine Regel-engine mit externalisiert Regeln in eine db und ein brauchbares UI. Sinnvolle Unterstützung für Entwickler könnte so einfach sein wie die Nutzung so etwas wie MEF (http://www.codeplex.com/MEF).
Könnten Sie auch eine Rolle wie oft wird die business-Regeln müssen geändert werden und welche Arten von damit verbundenen operativen Anforderungen gelten können (z.B. host-Prozess muss weiterhin ausgeführt werden, Anwendungsdomäne entladen ok, etc.). Eine gute Auswahl müssen Sie einige sorgfältige Gedanken über wahrscheinlich vs. unwahrscheinlich, dass Zukunft muss.
Können Sie tun, Daten-driven-business-Regeln, wie diese. Entscheidung Bäume kann ein guter Weg zu gehen, wie gut.
Könnte man auch darüber nachdenken, Aspekt-orientierte Programmierung als ein Weg zur Umsetzung von business-Regeln.
Meine einzige Vorsicht mit Rete Induktion rules engine ist, dass die Regelsätze sollten klein gehalten werden und in der Nähe der Objekte, die Sie verwenden. Wenn Sie können Kapseln das Verhalten eines Objekts in eine Regel-engine, die Teil des Staates ist, umso besser. Ich kümmern sich nicht für die "enterprise" - Lösung, die dumps tausenden von Regeln in eine singleton-Regeln-engine, wird eine Abhängigkeit für jeden Teil des Unternehmens.
Dies ist möglicherweise nicht der beste Ansatz sein, aber meine Firma implementiert hat, Ihre #2 option, in mehreren Fällen mit Erfolg.
Wir grundsätzlich konfigurieren Sie die clients in einer Datenbank oder config-Datei, und für jeden client, es wäre eine lookup-Tabelle speichert ein Klasse name aufrufen für welchen betriebswirtschaftlichen Vorgang durchführen. Wenn Sie den code bekommt eine Anfrage zum client Ein, es sucht die Klasse zu verwenden, und schafft es und führt es über Reflexion.
Ich bin kein großer fan von putting-code-bezogene Dinge in der Datenbank, aber es funktioniert tatsächlich ok und nicht zu kompliziert in diesem Fall.
Schlage ich eine Kombination von 1 und 3.
Aber nicht speichern Sie den workflow in einer Datenbank speichern, es ist ein Entscheidungsbaum oder eine Regel fließen (wie wir Sie nennen).
Änderung des Workflows für eine bestimmte, Kunde oder zusammenschließen Sie Sie auf Ihrem Profil ist eine einfache Aufgabe, wenn Sie eine visuelle, action-driven tool, wie Visual Rules. Es gibt auch eine Menge von nutzen, um mit Ihrem business analyst oder support-Mitarbeiter, dass der Wandel, ohne Anpassung des Codes.
Auch keine dieser Anforderungen verlangen nach einer komplizierten AI-tools wie RETE und Leitlinien - Sequenzielle Logik ist die beste.
Erstellte ich eine dynamische Regel-engine basiert auf den folgenden open-source .NET Business Rule Engine NxBRE. Ich verwendet die Flow-engine, die als primäre Beispiel für meine dynamische Regel-engine.
Ich verwendet die gleiche Architektur, die in Ihrer Frage erwähnt.
Ich mag WF, aber wenn Sie haben es angeschaut und entschieden, dass Sie etwas anderes wollen, sollten Sie schauen,K2. Auch, BizTalk hat BRE unterstützen.