Kennt jemand eine gute .NET-Bibliotheksregelbibliothek (idealerweise Open Source)? Ich brauche etwas, das verschachtelte logische Ausdrücke ausführen kann, z. B. (A UND B) UND (B ODER C ODER D). Ich muss Vergleiche von Objekteigenschaften durchführen, z. B. A.P1 UND B.P1. (Idealerweise könnte ich jede Eigenschaft vergleichen - A.P1 UND B.P2).
Es sollte die Regeln in einer Datenbank speichern (ich habe eine Menge einfacher konfigurierbarer Logik). Und es sollte eine API zum Erstellen / Verwalten von Regeln haben. Das Verwaltungstool müsste die Instanzen überprüfen, um festzustellen, welche Eigenschaften verfügbar sind und welche Einschränkungen bestehen.
Vielen Dank!
Oh, noch eine Sache. Als Regel-Engine muss ich das Konzept der Aktionen (Befehle) einbeziehen. Diese werden ausgeführt, wenn der Ausdruck zurückgegeben wird:
If (expression.Evaluation) { actions.Execute(); }
Ich sehe eine Regel als etwas wie:
class Rule
{
Expression Exp;
Actions[] Actions;
Run()
{
if(Exp.Evaluate())
{
foreach(action in Actions)
{
action.Execute();
}
}
}
}