Плюси і мінуси двигунів правил Java [закрито]


108

Які плюси і мінуси прийняття Java - правил двигунів Джесс і Drools ? Чи є інші гравці?

Я розумію, що Drools - це Open Source, а JESS - ні, але як вони порівнюються в інших сферах, таких як простота використання, продуктивність, рівень інтеграції з вашим кодом?

Відповіді:


128

Які плюси і мінуси прийняття двигунів правил Java JESS і Drools?

Використовуйте механізм правил, якщо вам потрібно відокремити бізнес-правила від логіки програми. Чи Ваш проект потребує Rule Engine стаття має хороший приклад:

Наприклад, типова система вітрини може включати код для обчислення знижки:

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;
}

Двигун правил замінює вищезазначене кодом, який виглядає приблизно так:

ruleEngine.applyRules(product);

Ви самі вирішуєте, чи добре передавати консоль адміністрування правил в руки нетехнічним людям?

Більш детально в розділі Чи повинен я використовувати механізм правил? , Навіщо використовувати двигун правила? , Деякі вказівки щодо вирішення питання щодо використання двигуна правил та в Google .

Чи є інші гравці?

Інші гравці включають JRules, Corticon (JRules - найвідоміший IMO - що не означає найкращий).

як вони порівнюються в інших сферах, як простота використання, продуктивність, рівень інтеграції з вашим кодом?

Не можу точно сказати, у мене є лише невеликий (позитивний) досвід роботи з Drools. Але ви отримаєте відгуки з публікацій блогу, як-от JBoss Drools проти ILog JRules - анекдотична історія (не забудьте її прочитати) або Робота з Drools з точки зору JRules . Я впевнений, що ви можете знайти їх більше в Google (але я б спробував Drools).


1
ваша відповідь виглядає добре. Не могли б ви сказати мені, де використовувати дролл і де Джес? В основному, я очікую відповіді більш спорідненої різниці. б / ш дрол і Джесс.
Тоні

7
Нічого так, @Pascal, що кількість продукту / приклад знижки - справжній WTF. Скажімо, кількість - 5000. Перший показник IF оцінюється як істинний, коефіцієнти ELSE ніколи не оцінюються. Введення такої ділової логіки в механізм правил не допоможе нічого, хоча це може ускладнити пошук помилки.
DOK

На його захист цей приклад був із тієї першої статті. Не так впевнений , як ймовірно , що один це більше дивиться ... :)
Джеб

6
Просто хороший приклад небезпеки передачі контролю за правилами в нетехнічні руки.
Темп

1
Навіщо використовувати двигун правил? найкращий серед перерахованих посилань
Аравінд Яррам

16

Зараз ми оцінюємо правила для використання з нашим сервером додатків. Ми натрапили на OpenRules , який легко інтегрувати з Java і, наскільки показали наші тестування, досить швидко. Основна перевага OpenRules над іншими - спосіб модифікації та обробки правил. Все це відбувається в таблицях Excel, що є найпростішим способом для непрограмістів. Усі учасники, навіть нетехнічні люди, все чудово розуміли :-)

У нас також інтегровані дролі, але правила набагато складніше зрозуміти, оскільки це більш програмний підхід. Тому ми - швидше за все, будемо дотримуватися OpenRules.


19
Drools також підтримує правила, відредаговані в Excel та через веб-інтерфейс.
ретронім

7

У нас було подібне питання, ми, нарешті, підхопили Drools, і слід використовувати дролі, якщо у вас є:

  • Бізнес-логіка, яка, на вашу думку, переповнюється багаторазово, якщо умови через різні сценарії
  • У вас буде зростаючий попит на збільшення складності
  • Зміни ділової логіки були би частими (1 - 2 рази на рік також будуть частими)
  • Ваш сервер має достатньо пам’яті, оскільки це інструмент, який голодує на пам'ять, він забезпечує продуктивність за ціною пам'яті

Дізнайтеся більше за наступною URL-адресою


3

Просто додаю, що багато людей шукають щось подібне до управління тим, чи виконуються певні умови, щоб увімкнути або вимкнути певні функції в додатку.

Я втомився від повторної реалізації однієї і тієї ж схеми всюди, куди я їздив, тому я вирішив зробити проект OSS для цього під назвою Roolie http://sourceforge.net/projects/roolie/

Я просто переробив його, і оскільки з 2010 року, коли він був випущений, не було повідомлено про помилки, я оновив його до версії 1.0, не маючи змін, крім необхідних для розміщення в Maven Central (що я зараз роблю ).

В основному JSR-94 є надмірним для більшості речей, і існує величезна крива та накладні витрати, які йдуть разом із поточними пропозиціями. Це добре, якщо це те, що ти хочеш. Але якщо ви просто хочете пов’язати прості правила, написані на Java разом з XML, щоб підтримувати свої тести стану, Роолі - це дуже швидкий спосіб зробити це. Ніяких залежностей і жодної кривої навчання.


2
Роолі заявляє, що MIT ліцензований на SourceForge, але код повідомляє LGPLv3. Це по суті означає, що сумнівно використовувати його в будь-якому комерційному продукті (і в деяких продуктах з відкритим кодом). Дивіться nmav.gnutls.org/2013/03/the-perils-of-lgplv3.html .
ingyhere

2

Коли нам знадобився механізм з правилами, ми вирішили розгорнути свою власну, оскільки доступні були занадто складними для наших простих завдань. Якщо ви навіть віддалено відчуваєте розбір виразів, які користувачі можуть вводити, це зробити не дуже важко. У нашому випадку більшість специфікацій обробляється XSD, і лише кілька полів розбираються далі.


6
Двигуни правил використовують чітко встановлені алгоритми (такі як ланцюг вперед та алгоритм Rete), щоб масштабувати до нетривіальних проблем. Якщо ви просто оцінюєте вирази, існуюча бібліотека, наприклад MVEL, може бути корисною.
jevon
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.