Odpowiedzi:
Jakie są zalety i wady przyjęcia silników reguł Java JESS i Drools?
Użyj silnika reguł, jeśli chcesz oddzielić reguły biznesowe od logiki aplikacji. Czy projekt Potrzebny Zasada Silnik artykuł ma dobry przykład:
Na przykład typowy system sklepowy może obejmować kod do obliczenia rabatu:
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; }
Silnik reguł zastępuje powyższy kod, który wygląda następująco:
ruleEngine.applyRules(product);
Do Ciebie należy decyzja, czy oddanie konsoli administracyjnej reguł w ręce nietechnicznych ludzi to dobra rzecz, czy nie :)
Więcej szczegółów w artykule Czy powinienem używać silnika reguł? , Dlaczego warto korzystać z mechanizmu reguł? , Kilka wskazówek dotyczących podejmowania decyzji, czy używać mechanizmu reguł i Google .
Czy są jacyś inni gracze?
Inni gracze to JRules, Corticon (JRules to najsłynniejszy IMO - co nie znaczy najlepszy).
jak wypadają w innych obszarach, takich jak łatwość obsługi, wydajność, poziom integracji z Twoim kodem?
Nie mogę ci powiedzieć dokładnie, mam tylko małe (pozytywne) doświadczenie z Drools. Ale otrzymasz informacje zwrotne z postów na blogu, takich jak JBoss Drools vs ILog JRules - anegdotyczna historia (koniecznie ją przeczytaj) lub Praca z Drools z perspektywy JRules . Jestem pewien, że możesz znaleźć ich więcej w Google (ale spróbuję Drools).
Obecnie oceniamy reguły do użycia z naszym serwerem aplikacji. Natknęliśmy się na OpenRules , który jest łatwy do zintegrowania z Javą i, o ile wykazały nasze testy, wystarczająco szybki. Główną zaletą OpenRules nad innymi jest sposób, w jaki reguły są modyfikowane i obsługiwane. Wszystko dzieje się w tabelach Excela, co jest najłatwiejszym sposobem dla nieprogramistów. Wszyscy zaangażowani, nawet osoby nietechniczne, rozumiały wszystko doskonale :-)
Mamy również zintegrowane śliniaki, ale zasady są znacznie trudniejsze do zrozumienia, ponieważ jest to podejście bardziej programowe. Dlatego - najprawdopodobniej - będziemy trzymać się OpenRules.
Mieliśmy z nami podobne pytanie, w końcu wybraliśmy Drools, należy użyć ślinek, jeśli masz:
Więcej informacji znajdziesz pod następującym adresem URL
Wystarczy dodać, że wiele osób szuka czegoś bardziej zbliżonego do zarządzania spełnieniem określonych warunków, aby włączyć lub wyłączyć pewne funkcje w aplikacji.
Byłem zmęczony ponownym wdrażaniem tego samego wzorca w kółko wszędzie, gdzie byłem, więc zdecydowałem się stworzyć dla niego projekt OSS o nazwie Roolie http://sourceforge.net/projects/roolie/
Właśnie go zmaksymalizowałem, a ponieważ od 2010 roku, kiedy został wydany, nie zgłoszono żadnych błędów, zaktualizowałem go do wersji 1.0 bez zmian innych niż te wymagane do hostowania go w Maven Central (nad czym obecnie pracuję ).
Zasadniczo JSR-94 jest przesadą w większości rzeczy i istnieje ogromna krzywa uczenia się i narzuty, które towarzyszą aktualnej ofercie. W porządku, jeśli tego chcesz. Ale jeśli chcesz po prostu połączyć proste reguły napisane w Javie razem z XML, aby utrzymać testy stanu, Roolie jest bardzo szybkim sposobem na zrobienie tego. Bez zależności i bez krzywej uczenia się.
Kiedy potrzebowaliśmy silnika reguł, zdecydowaliśmy się stworzyć własny, ponieważ dostępne były zbyt skomplikowane dla naszych prostych zadań. Jeśli nawet masz zdalne doświadczenie w przetwarzaniu wyrażeń, które mogą wprowadzać użytkownicy, nie jest to zbyt trudne. W naszym przypadku większość specyfikacji jest obsługiwana przez XSD i tylko kilka pól jest dalej analizowanych.