Antworten:
Was sind die Vor- und Nachteile der Übernahme der Java-Regel-Engines JESS und Drools?
Verwenden Sie eine Regelengine, wenn Sie die Geschäftsregeln von der Anwendungslogik trennen müssen. Der Artikel Benötigt Ihr Projekt eine Regelengine? Hat ein gutes Beispiel:
Ein typisches Storefront-System kann beispielsweise Code zur Berechnung eines Rabatts enthalten:
if (product.quantity > 100 && product.quantity < 500) { product.discount = 2; } else if (product.quantity >= 500 && product.quantity < 2000) { product.discount = 5; } else if (product.quantity >= 2000) { product.discount = 10; }
Eine Regelengine ersetzt die oben genannten durch Code, der folgendermaßen aussieht:
ruleEngine.applyRules(product);
Es liegt an Ihnen zu entscheiden, ob es eine gute Sache ist, eine Regeladministrationskonsole in die Hände von nicht-technischen Personen zu legen oder nicht :)
Weitere Details finden Sie unter Soll ich eine Rules Engine verwenden? , Warum eine Regel-Engine verwenden? , Einige Richtlinien für die Entscheidung , ob Sie mit A Rules Engine und auf Google .
Gibt es noch andere Spieler?
Andere Spieler sind JRules, Corticon (JRules ist die bekannteste IMO - was nicht die beste bedeutet).
Wie vergleichen sie sich in anderen Bereichen wie Benutzerfreundlichkeit, Leistung und Integrationsgrad Ihres Codes?
Ich kann es dir nicht genau sagen, ich habe nur ein wenig (positive) Erfahrung mit Drools. Sie erhalten jedoch Feedback von Blog-Posts wie JBoss Drools vs ILog JRules - eine anekdotische Geschichte (lesen Sie sie unbedingt ) oder Arbeiten mit Drools aus der Perspektive von JRules . Ich bin sicher, dass Sie mehr davon bei Google finden können (aber ich würde Drools ausprobieren).
Wir evaluieren jetzt Regeln für die Verwendung mit unserem Anwendungsserver. Wir sind auf OpenRules gestoßen , das einfach in Java zu integrieren ist und, wie unsere Tests gezeigt haben, schnell genug ist. Der Hauptvorteil von OpenRules gegenüber den anderen ist die Art und Weise, wie die Regeln geändert und behandelt werden. Dies alles geschieht in Excel-Tabellen, was für Nicht-Programmierer der einfachste Weg ist. Alle Beteiligten, auch die nicht-technischen Leute, haben alles perfekt verstanden :-)
Wir haben auch Sabber integriert, aber die Regeln sind viel komplizierter zu verstehen, da es sich um einen programmatischeren Ansatz handelt. Deshalb werden wir uns höchstwahrscheinlich an OpenRules halten.
Wir hatten eine ähnliche Frage bei uns, wir haben endlich Drools aufgegriffen, man sollte Drools verwenden, wenn man folgendes hat:
Weitere Informationen finden Sie unter der folgenden URL
Fügen Sie einfach hinzu, dass viele Leute nach etwas suchen, das der Verwaltung ähnelt, ob bestimmte Bedingungen erfüllt sind, um bestimmte Funktionen in einer Anwendung zu aktivieren oder zu deaktivieren.
Ich hatte es satt, überall das gleiche Muster immer wieder neu zu implementieren, und beschloss, ein OSS-Projekt namens Roolie http://sourceforge.net/projects/roolie/ zu erstellen.
Ich habe es nur mavenisiert und da seit 2010, als es veröffentlicht wurde, keine Fehler gemeldet wurden, habe ich es auf Version 1.0 aktualisiert, ohne dass andere Änderungen vorgenommen wurden als die, die erforderlich sind, um es in Maven Central zu hosten (was ich gerade mache) ).
Grundsätzlich ist JSR-94 für die meisten Dinge ein Overkill, und es gibt eine enorme Lernkurve und einen Overhead, die mit den aktuellen Angeboten einhergehen. Das ist in Ordnung, wenn Sie das wollen. Wenn Sie jedoch nur einfache, in Java geschriebene Regeln mit XML verketten möchten, um Ihre Statustests aufrechtzuerhalten, ist Roolie eine sehr schnelle Möglichkeit, dies zu tun. Keine Abhängigkeiten und keine Lernkurve.
Als wir eine Regelengine brauchten, entschieden wir uns, unsere eigene zu rollen, da die verfügbaren für unsere einfachen Aufgaben viel zu kompliziert waren. Wenn Sie auch nur aus der Ferne Erfahrung mit dem Parsen von Ausdrücken haben, die Benutzer möglicherweise eingeben, ist dies nicht sehr schwierig. In unserem Fall wird der größte Teil der Spezifikation von einer XSD verarbeitet und nur einige der Felder werden weiter analysiert.