2012-12-11 10 views
9

W naszym projekcie musimy wdrożyć logikę biznesową dotyczącą mapowania niektórych obiektów do niektórych działań. Będziemy mieli szereg warunków dla sprawdzenia konkretnych typów obiektów, zanim pewne działanie zostanie ostatecznie rozwiązane. Innymi słowy dla 7 typów obiektów możemy mieć szereg działań (spośród prawie 45 działań).Czy Drools to najbardziej efektywny sposób mapowania reguł biznesowych/logiki?

Myśleliśmy o używaniu Drools do zapisywania wyżej wymienionych zasad. Czy ktoś ma jakieś pozytywne/negatywne doświadczenia związane z używaniem Drools, jeśli chodzi o jego efektywność? Istnieje również framework jBPM, który można wykorzystać (jeśli się nie mylę, używa się tam dragów) - czy ktoś jest obeznany z tą strukturą? Być może masz jakieś inne pomysły, jak rozwiązać problem?

Odpowiedz

7

Jeśli chodzi o efektywność, nie powinieneś mieć żadnych problemów z Drools. To brzmi jak bardzo mały zestaw faktów i zasad dla mnie. Silnik Rete, na którym jest oparty, jest prawie na pewno szybszy w podejmowaniu decyzji niż jakikolwiek stos instrukcji if-then-else, które sam sobie kodujesz. Szczególną korzyścią, którą zauważyłem, jest to, że czasy reakcji są bardzo przewidywalne.

Oczywiście wszystkie modele faktów i zasady różnią się, ale jako przykład aplikacja, którą obecnie buduję, zawiera setki faktów z pamięci roboczej w dowolnym czasie i ponad 1000 reguł. Jest w stanie podejmować decyzje o przychodzących żądaniach w około 20 milisekund.

Pełna struktura jBPM nie jest niezbędna do opisu. Jednak w tym, co robi, jest dobre. Na przykład GUI modelowania procesów, jeśli chcesz zaprojektować przepływy pracy, a Guvnor może być użyteczny dla autorów reguł nietechnicznych, jeśli zespół techniczny wkłada trochę wysiłku w pisanie DSL i budowanie tablic decyzyjnych.

Dla kompletności głównymi konkurentami są prawdopodobnie FICO Blaze Adviser lub IBM ILog JRules. Ogólnie rzecz biorąc, jeśli chodzi o testy porównawcze, są one nieco wyższe niż Drools, ale są one kosztowne. Wprawdzie, jeśli zdecydujesz się zapłacić za kontrakty serwisowe JBoss/RedHat, to niewiele się zmieni, ale jeśli z przyjemnością weźmiesz wsparcie społecznościowe dla Drools, to za darmo!

+0

Dziękuję za odpowiedź! Zdecydowaliśmy się wykorzystać Drools w naszym projekcie i jesteśmy z niego bardzo zadowoleni. Bardzo dobrze, że trzymamy nasze reguły w plikach DRL i nie musimy ponownie wdrażać aplikacji za każdym razem. –

4

Moja jedyna troska związana z Drools polega na tym, że nie ma przyzwoitego interfejsu graficznego, który ludzie z branży IT mogliby naprawdę wykorzystać. Wiele produktów twierdzi, że zapewniają taki interfejs, ale zawsze okazuje się to nieprawdą. Musisz więc zaakceptować fakt, że twój zespół programistów zakończy tworzenie i testowanie wszystkich tych reguł na podstawie tabel decyzyjnych lub innych formatów.

Poza tym, Drools to doskonały BRE stosowany przez rządy, banki i duże firmy.

+1

100% prawda. Ale, zgodnie z wyjaśnieniem, które podaje, być może tabela decyzyjna może być dobrym kandydatem. Jeśli tak jest, zasady mogą być zarządzane przez nie faceci IT z niewielką ilością bólu. –

+3

@EstebanAliverti Teoretycznie masz całkowitą rację. Podstawą tablic decyzyjnych było abstrakcyjne informatyzowanie biznesu. W rzeczywistości jednak to nigdy nie działa. Mam do czynienia z BRE przez 15 lat, przeszedłem przez wszystkie duże. Nigdy nie widziałem projektu, w którym ludzie biznesu mogliby tworzyć/edytować tabele bez pomocy. Format/akcje/warunki ciągle się zmieniają, pojawiają się nowi pracownicy itp. – Kizz

+1

Dziękujemy za odpowiedzi! Zdecydowaliśmy się wykorzystać Drools w naszym projekcie i jesteśmy z niego bardzo zadowoleni. Oczywiście istnieje problem z interfejsem GUI, ale można go zastąpić, używając tabel decyzyjnych w arkuszach kalkulacyjnych. Mam wpis na moim blogu [link] (http://toomuchcoding.blogspot.com/2013/02/drools-decision-tables-with-camel-and.html) –

1

Drools jest bardzo wydajny i szybki. Ale tak jak w przypadku każdej innej technologii, będzie potrzebna inwestycja, aby zintegrować się z projektem i nie jest to magiczna kula. Musisz wziąć pod uwagę:

  • Ile masz przepisów? Nie polecałbym żadnego silnika reguł, jeśli jest mniej niż 20 reguł. Może to nie usprawiedliwiać wysiłku, który wydasz na kompendię dodawania mechanizmu reguł tylko dla 7 obiektów i 45 działań ...
  • Czy potrzebujesz funkcji DSL (Domain Specific Language)? To znaczy. Czy nietechniczne osoby piszą zasady? IMHO nie jest to użyteczne w Drools w porównaniu do np. Oracle OPA. Ale znowu nie widziałem osoby nietechnicznej bezpiecznie majstrować przy systemie reguł. Oprócz zmiany wartości w tabeli decyzyjnej.
  • Jak często zmienią się Twoje zasady? Jeśli potrzebujesz scentralizowanego systemu do zarządzania, wersji, pakietu, testowania swoich reguł, Drools Guvnor jest bardzo zdolnym produktem.
1

jBPM nie jest silnikiem reguł, to silnik workflow. Drools to silnik reguł. Więc Drools jest tym, czego szukasz.

Drools i jBPM są projektami towarzyszącymi: integrują się bardzo ładnie, jeśli potrzebne są przepływy pracy z regułami.

Drools ma się dobrze JBPM jest nieco bardziej złożony w porównaniu do innych silników BPMN. Sugerowałbym pójść na Activiti, ponieważ jest nieco łatwiejszy i integracja wszystkiego, co mówi Spring, LDAP itp .; z Activiti jest łatwiejsze. Możesz także zintegrować Drools z Activiti. Więc idź na Activiti jako silnik aworkflow i Drools na silnik reguł.

Powiązane problemy