Suche nach einer einfachen Regel-Engine-Bibliothek in .NET
Kennt jemand eine gute .NET-Bibliothek Regeln Bibliothek (ideal open source)? Ich brauche etwas, das tun können geschachtelte Logik-Ausdrücke, z.B., (A UND B) UND (B ODER C ODER D). Ich brauche Vergleiche der Eigenschaften der Objekte, z.B., A. P1 UND B. P1. (Im Idealfall, ich könnte vergleichen, eine Eigenschaft-A. P1 UND B. P2).
Sollte es speichern Sie die Regeln in einer Datenbank (ich habe eine Menge von simple configurable logic). Und es sollte eine Regel haben für die Erstellung/- management-API. Das management-tool müsste überprüfen der Instanzen, um zu bestimmen, welche Eigenschaften verfügbar sind und welche Einschränkungen existieren.
Dank!
Oh, ein mehr Ding. Als Regeln-engine, die ich brauchen, um das Konzept der Aktionen (Befehle). Diese sind, was ausgeführt wird, wenn der Ausdruck gibt:
If (expression.Evaluation) { actions.Execute(); }
Also ich sehen in der Regel so etwas wie:
class Rule
{
Expression Exp;
Actions[] Actions;
Run()
{
if(Exp.Evaluate())
{
foreach(action in Actions)
{
action.Execute();
}
}
}
}
InformationsquelleAutor der Frage Kurtz | 2008-10-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einverstanden, ich würde sagen, etwas von der workflow-engine, die Familie, obwohl nicht workflow.
Prüfen System.Workflow.Aktivitäten.Regeln Namespace ein wenig - es unterstützt .Net 3, und eingebaut .Net3.5. Sie haben alles in der hand für kostenlos zu benutzen, wie du Sie erwähnt hast :
RuleCondition für Bedingungen , RuleAction für Aktionen
standardisiertes format für die Beschreibung
metacode (CodeDom - CodeExpressions)
können Sie plugin jede Art von Komplexität
in, der (die Wahrheit zu sagen außer
Linq und Lambda-Ausdrücke und so die Erweiterung
Methoden Art) über
TypeProviders
gibt es eine builtin-editor für die Regel
Bearbeitung mit intellisense
als die Regel ist serializable kann es sein
leicht beibehalten
Datenbank-Schema dann über typeprovider
kann es umgesetzt werden zu
Für einen starter :
Mit Vorschriften, die außerhalb eines Workflows
Ps.: wir verwenden es ausgiebig und es gibt viel mehr in diesem namespace als Sie sich jemals vorstellen -> eine vollständige meta-Algorithmus, Sprache
Und das wichtigste : es ist einfach zu bedienen - wirklich
InformationsquelleAutor der Antwort Nicolai Ustinov
Hier ist eine Klasse, die ich in der Vergangenheit verwendet haben. Es wertet Streicher genauso wie eval() in Javascript.
Alles, was Sie tun müssen, ist, erstellen Sie eine Zeichenfolge ausgewertet werden von Ihrem business objects und diese kümmert sich um alle die komplizierten verschachtelte Logik etc.
InformationsquelleAutor der Antwort Shaun Bowe
Keiner von open Source .NET-rules-engine, die Unterstützung für die Speicherung der Regeln in die Datenbank. Die einzigen, die Speicherung der Regeln in einer Datenbank sind kommerzielle. Ich habe einige UIs für benutzerdefinierte Regel Motoren, aus der Datenbank, aber das kann nicht-trivial zu implementieren. Das ist normalerweise der Hauptgrund, warum Sie nicht sehen, die Funktion für frei.
Soweit ich weiß, keiner von Ihnen erfüllen alle deine Kriterien, aber hier ist eine Liste von denen, die ich kenne:
Einfachste SRE
http://sourceforge.net/projects/sdsre/
Eines Regel-management-UI ist NxBRE
http://www.agilepartner.net/oss/nxbre/
Drools.NET nutzt JBOSS Regeln
http://droolsdotnet.codehaus.org/
Ich persönlich noch nicht benutzt, weil alle Projekte arbeitete ich wollte nie etwas selbst gebaut. Die meisten Unternehmen denken, dass dies ziemlich einfach zu tun, aber am Ende verschwenden zu viel Zeit, Codierung und Umsetzung. Dies ist einer jener Bereiche, die Nicht Hier Erfunden-Syndrom (NIH) zu Regeln.
InformationsquelleAutor der Antwort Hector Sosa Jr
Gut, da die logischen Ausdrücken sind nur eine Teilmenge der mathematischen Ausdrucks verwendet werden, möchten Sie vielleicht, um zu versuchen, NCalc - Mathematische Ausdrücke Gutachter .NET über auf CodePlex.
InformationsquelleAutor der Antwort James Curran
Die offizielle MS-Lösung für dies ist Windows Workflow. Obwohl ich würde nicht nennen es "einfach", es erfüllt alle deine Vorgaben (die verlangen eine umfassende Rahmenbedingungen zu erfüllen, jedenfalls).
InformationsquelleAutor der Antwort Will
Ich habe diese verwendet werden, http://www.codeproject.com/KB/recipes/Flee.aspx mit Erfolg in der Vergangenheit. Probieren Sie es aus.
InformationsquelleAutor der Antwort BuddhiP
Windows Workflow Foundation stellt Ihnen eine Kostenlose forward-chaining inference-engine. Und Sie können es verwenden, ohne dass der workflow Teil. Erstellen und Bearbeiten von Regeln ist ok für Entwickler.
Wenn Sie wollen, um nicht-Programmierern das Bearbeiten und pflegen der Regeln, die Sie ausprobieren können, die Regel-Manager.
Den Regel-Manager generiert eine funktionierende visual-studio-Lösung für Sie. Das sollte Ihnen den Einstieg Recht schnell. Klicken Sie einfach auf Datei \ Exportieren und selecte die WFRules format.
InformationsquelleAutor der Antwort Sentient
Können Sie einen Blick in unsere Produkt-als auch auf http://www.FlexRule.com
FlexRule ist eine Business Rule Engine-framework mit Unterstützung für drei Motoren; Prozedurale engine Inference engine und RuleFlow-Motor. Ihre ableitungsfunktion ist eine forward-chaining inference verwendet, die Verbesserung der Umsetzung des Rete-Algorithmus.
InformationsquelleAutor der Antwort Arash Aghlara
Ich würde schauen Windows Workflow. Regel-engines und workflow-neigen dazu, beginnen einfach und werden zunehmend komplexer. So etwas wie Windows Workflow Foundation ist nicht zu schwierig, mit zu beginnen und bietet Raum für Wachstum. Hier ist ein Beitrag, der zeigt, dass es nicht zu schwierig, um eine einfache workflow-engine gehen.
InformationsquelleAutor der Antwort Brian Ellis
Vielleicht check out SmartRules. Seine nicht kostenlos, aber das interface sieht einfach genug.
Weiß davon nur, weil ich habe mit der SmartCode codegen-Dienstprogramm von dort aus vor.
Hier ist ein Beispiel in der Regel aus der Website:
InformationsquelleAutor der Antwort Brendan Kowitz
Können Sie ein RuEn, eine einfache open-source-Attribut basierende Regel-Engine von mir erstellt:
http://ruen.codeplex.com
InformationsquelleAutor der Antwort Bhaskar
Ausprobieren
http://rulesengine.codeplex.com/
Es ist eine C# - Open Source rules engine, die Werke mit Expression trees.
InformationsquelleAutor der Antwort Arnaud
Haben Sie einen Blick auf Logiker: tutorial/overview auf CodeProject
Projekt: Seite/Quelle auf SourceForge
InformationsquelleAutor der Antwort Eric
Je nachdem, was Sie versuchen zu tun, mit Lambda-Ausdrücken (und ausdrucksstrukturen) kann für dieses Konzept. Im wesentlichen, Sie einen Ausdruck als string, der dann kompiliert on the fly in einen lambda-Ausdruck/expression-Baum, die Sie ausführen können (Evaluierung). Es ist nicht einfach zu verstehen auf den ersten, aber sobald Sie tun es ist extrem leistungsfähig und relativ einfach einzurichten.
InformationsquelleAutor der Antwort Scott Dorman
Es ist nicht frei, da Sie nicht leicht zu entwirren, die es von seinem BizTalk Abstammung, aber die Business Rules Engine-Komponenten von BizTalk sind eine separate Einheit aus der core-BizTalk-engine selbst, und bestehen aus einer sehr leistungsstarken rules-engine, enthält eine Regel /policy-basiertes GUI. Wenn es eine Kostenlose version dieser würde deinen Anforderungen entspricht (Kauf BizTalk nur für die BRE-würde nicht wirklich funktionieren, wirtschaftlich.)
InformationsquelleAutor der Antwort Hugo Rodger-Brown