Відповіді:
Які плюси і мінуси прийняття двигунів правил 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).
Зараз ми оцінюємо правила для використання з нашим сервером додатків. Ми натрапили на OpenRules , який легко інтегрувати з Java і, наскільки показали наші тестування, досить швидко. Основна перевага OpenRules над іншими - спосіб модифікації та обробки правил. Все це відбувається в таблицях Excel, що є найпростішим способом для непрограмістів. Усі учасники, навіть нетехнічні люди, все чудово розуміли :-)
У нас також інтегровані дролі, але правила набагато складніше зрозуміти, оскільки це більш програмний підхід. Тому ми - швидше за все, будемо дотримуватися OpenRules.
У нас було подібне питання, ми, нарешті, підхопили Drools, і слід використовувати дролі, якщо у вас є:
Дізнайтеся більше за наступною URL-адресою
Просто додаю, що багато людей шукають щось подібне до управління тим, чи виконуються певні умови, щоб увімкнути або вимкнути певні функції в додатку.
Я втомився від повторної реалізації однієї і тієї ж схеми всюди, куди я їздив, тому я вирішив зробити проект OSS для цього під назвою Roolie http://sourceforge.net/projects/roolie/
Я просто переробив його, і оскільки з 2010 року, коли він був випущений, не було повідомлено про помилки, я оновив його до версії 1.0, не маючи змін, крім необхідних для розміщення в Maven Central (що я зараз роблю ).
В основному JSR-94 є надмірним для більшості речей, і існує величезна крива та накладні витрати, які йдуть разом із поточними пропозиціями. Це добре, якщо це те, що ти хочеш. Але якщо ви просто хочете пов’язати прості правила, написані на Java разом з XML, щоб підтримувати свої тести стану, Роолі - це дуже швидкий спосіб зробити це. Ніяких залежностей і жодної кривої навчання.
Коли нам знадобився механізм з правилами, ми вирішили розгорнути свою власну, оскільки доступні були занадто складними для наших простих завдань. Якщо ви навіть віддалено відчуваєте розбір виразів, які користувачі можуть вводити, це зробити не дуже важко. У нашому випадку більшість специфікацій обробляється XSD, і лише кілька полів розбираються далі.