2012-12-11 12 views
9

In unserem Projekt müssen wir Geschäftslogik in Bezug auf die Zuordnung bestimmter Objekte zu einigen Aktionen implementieren. Wir werden eine Reihe von Bedingungen für bestimmte Arten von Objekten haben, die verifiziert werden müssen, bevor eine bestimmte Aktion schließlich gelöst wird. Mit anderen Worten, für 7 Arten von Objekten können wir eine Reihe von Aktionen (von fast 45 Aktionen) haben.Ist Drools der effizienteste Weg, um Geschäftsregeln/Logik abzubilden?

Wir dachten daran, Drools zu verwenden, um die oben genannten Regeln aufzuschreiben. Hat jemand positive/negative Erfahrungen mit der Verwendung von Drools in Bezug auf seine Effizienz? Es gibt auch das jBPM-Framework, das verwendet werden kann (wenn ich mich nicht irre, Drools werden dort verwendet) - ist jemand mit diesem Framework vertraut? Vielleicht haben Sie andere Ideen, wie Sie das Problem lösen können?

Antwort

7

In Bezug auf Effizienz sollten Sie mit Drools überhaupt keine Probleme haben. Das klingt nach einem ziemlich kleinen Satz von Fakten und Regeln für mich. Die Rete-Engine, auf der sie basiert, ist mit ziemlicher Sicherheit schneller Entscheidungen zu treffen als jeder Stapel von if-then-else-Anweisungen, die Sie selbst programmieren. Und ein besonderer Vorteil, den ich bemerkt habe, ist, dass Reaktionszeiten extrem vorhersehbar sind.

Offensichtlich unterscheiden sich alle Faktenmodelle und Regeln, aber als Beispiel hat die Anwendung, die ich gerade erstelle, Hunderte von Fakten im Arbeitsspeicher und mehr als 1000 Regeln. Es ist in der Lage, Entscheidungen über eingehende Anfragen in etwa 20 Millisekunden zu treffen.

Das vollständige jBPM-Framework klingt nicht notwendig für das, was Sie beschreiben. Es ist jedoch gut, was es tut. Zum Beispiel gibt es eine Prozessmodellierungs-GUI, wenn Sie Workflows entwerfen möchten, und Guvnor kann für nicht-technische Regelautoren verwendet werden, wenn das technische Team einige Anstrengungen unternimmt, um DSLs zu schreiben und Entscheidungstabellen zu erstellen.

Der Vollständigkeit halber sind die Hauptkonkurrenten wahrscheinlich FICO Blaze Adviser oder IBM ILog JRules. Generell, wenn es um Benchmarks geht, sind die Drools zwar etwas besser, aber teuer. Zugegeben, wenn Sie sich entscheiden, für JBoss/RedHat Service-Verträge zu zahlen, dann ist es nicht viel anders, aber wenn Sie gerne Community-Support auf Drools nehmen, dann ist es kostenlos!

+0

Vielen Dank für Ihre Antwort! Wir haben beschlossen, Drools in unserem Projekt zu verwenden und wir sind wirklich glücklich damit. Eine gute Sache ist, dass wir unsere Regeln in DRL-Dateien behalten und die Anwendung nicht jedes Mal neu bereitstellen müssen. –

4

Meine einzige Sorge über Drools ist, dass es keine vernünftige GUI dafür gibt, die ein Nicht-IT-Business-Leute wirklich verwenden könnte. Viele Produkte behaupten, dass sie solche UI bieten, aber es stellt sich immer heraus, dass sie nicht wirklich wahr sind. Sie müssen also die Tatsache akzeptieren, dass Ihr Entwicklungsteam alle diese Regeln basierend auf Entscheidungstabellen oder anderen Formaten erstellt und testet.

Darüber hinaus ist Drools eine große BRE von Regierungen, Banken und großen Unternehmen eingesetzt.

+1

100% wahr. Aber nach der Erklärung, die er gibt, könnte vielleicht eine Entscheidungstabelle ein guter Kandidat sein. Wenn das der Fall ist, können Regeln von keinen IT-Leuten mit ein wenig Schmerz gehandhabt werden. –

+3

@EstebanAliverti Theoretisch sind Sie absolut richtig. Die gesamte Prämisse der Entscheidungstabellen war, die IT von der Wirtschaft zu trennen. In Wirklichkeit funktioniert das aber nie. Ich beschäftige mich seit 15 Jahren mit BREs, ging durch alle großen. Ich habe noch nie ein Projekt gesehen, bei dem Geschäftsleute Tabellen ohne Hilfe erstellen oder bearbeiten. Hilfe von der IT. Format/Aktionen/Bedingungen werden ständig geändert, neue Geschäftsleute kommen herein usw. usw. – Kizz

+1

Vielen Dank für Ihre Antworten! Wir haben beschlossen, Drools in unserem Projekt zu verwenden und wir sind wirklich glücklich damit. Natürlich gibt es ein Problem mit der GUI, aber Sie können es überschreiben, indem Sie die Entscheidungstabellen in Tabellen verwenden. Ich habe einen Beitrag dazu auf meinem Blog [link] (http://toomuchcoding.blogspot.com/2013/02/drools-decision-tables-with-camel-and.html) –

1

Drools ist sehr effizient und schnell. Aber wie bei jeder Technologie & Framework wird es eine Investition benötigen, um in Ihr Projekt zu integrieren, und es ist kein Wundermittel. Sie müssen in Betracht ziehen:

  • Wie viele Regeln haben Sie? Ich würde keine Regel-Engine empfehlen, wenn es weniger als 20 Regeln gibt. Es kann den Aufwand nicht rechtfertigen, den Sie für die Kompliziertheit der Hinzufügung einer Regelmaschine gerade für 7 Gegenstände und 45 Aktionen rechtfertigen ...
  • Benötigen Sie DSL (domänenspezifische Sprache) Fähigkeiten? Ie. Werden nicht-technische Leute Regeln schreiben? IMHO ist das in Drools im Vergleich zu zB nicht sehr brauchbar. Oracle OPA. Aber ich habe noch nicht einmal eine nicht-technische Person gesehen, die sicher an einem Regelsystem herumgebastelt hat. Neben dem Ändern von Werten in einer Entscheidungstabelle.
  • Wie oft ändern sich Ihre Regeln? Wenn Sie ein zentralisiertes System benötigen, um Ihre Regeln zu verwalten, zu versionieren, zu verpacken und zu testen, dann ist Drools Guvnor ein sehr fähiges Produkt.
1

jBPM ist keine Regelengine, es ist eine Workflow-Engine. Drools ist eine Regelmaschine. Also, Drools ist was du suchst.

Drools und jBPM sind begleitende Projekte: Sie integrieren sich wirklich gut, wenn Sie Workflows mit Regeln benötigen.

Drools ist gut gut JBPM ist im Vergleich zu anderen BPMN-Engines etwas komplex. Ich würde vorschlagen, für Activiti zu gehen, weil es etwas einfacher ist und Integration von irgendetwas Frühling, LDAP usw .; mit Activiti ist einfacher. Außerdem können Sie Drools mit Activiti integrieren. Also gehen Sie für Activiti als Workflow-Engine und Drools für eine Regel-Engine.