Плюсы и минусы движков правил Java

Каковы плюсы и минусы использования механизмов правил Java JESS и Слюни? Есть ли другие игроки?

Я понимаю, что Drools — это Open Source, а JESS — нет, но как они соотносятся в других областях, таких как простота использования, производительность, уровень интеграции с вашим кодом?


person brabster    schedule 30.01.2010    source источник


Ответы (5)


Каковы плюсы и минусы использования движков правил Java JESS и Drools?

Используйте обработчик правил, если вам нужно отделить бизнес-правила от логики приложения. В статье Нужен ли вашему проекту механизм правил есть хороший пример:

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

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. vs ILog JRules — анекдотическая история (обязательно прочитайте) или Работа с Drools с точки зрения JRules. Я уверен, что вы можете найти больше из них в Google (но я бы попробовал Drools).

person Pascal Thivent    schedule 30.01.2010
comment
ваш ответ выглядит хорошо. Не могли бы вы сказать мне, где использовать слюни и где Джесс? В принципе, я ожидаю ответа более связанного diff. ч/б слюни и Джесс. - person Tony; 01.07.2010
comment
Вау, @Pascal, этот пример количества/скидки продукта - настоящий WTF. Скажем, количество 5000. Первый IF оценивается как true, ELSE IF никогда не оцениваются. Помещение такой бизнес-логики в механизм правил ничему не поможет, хотя может затруднить поиск ошибки. - person DOK; 15.03.2011
comment
В его защиту этот пример был из той первой статьи. Не уверен, насколько правдоподобно это выглядит... :) - person Jeb; 16.12.2011
comment
Просто хороший пример опасностей передачи контроля над правилами в нетехнические руки. - person Pace; 10.04.2013
comment
Зачем использовать механизм правил? лучшая среди перечисленных ссылок - person Aravind Yarram; 17.01.2014

Сейчас мы оцениваем правила для использования с нашим сервером приложений. Мы столкнулись с OpenRules, который легко интегрируется с Java и, как показало наше тестирование, достаточно быстро . Основное преимущество OpenRules перед другими заключается в том, как правила изменяются и обрабатываются. Все это происходит в таблицах Excel, что является самым простым способом для непрограммистов. Все причастные, даже не технические люди, все прекрасно поняли :-)

У нас также есть интегрированные drools, но правила намного сложнее понять, поскольку это более программный подход. Поэтому мы, скорее всего, будем придерживаться OpenRules.

person Dominik Sandjaja    schedule 30.01.2010
comment
Drools также поддерживает правила, редактируемые в Excel и через веб-интерфейс. - person retronym; 30.01.2010

У нас был похожий вопрос, мы наконец-то взяли Drools, нужно использовать drools, если у вас есть следующие:

  • Бизнес-логика, которая, по вашему мнению, загромождена множеством условий if из-за множества сценариев.
  • У вас будет растущий спрос на увеличение сложности
  • Изменения бизнес-логики будут частыми (1-2 раза в год также будет часто)
  • У вашего сервера достаточно памяти, так как это инструмент, требующий памяти, он обеспечивает производительность за счет памяти.

Дополнительные сведения см. по следующему URL.

person Sachin Thapa    schedule 16.08.2013

Просто добавим, что многие люди ищут что-то более похожее на управление выполнением определенных условий для включения или отключения определенных функций в приложении.

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

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

По сути, JSR-94 является излишним для большинства вещей, и существует огромная кривая обучения и накладные расходы, связанные с текущими предложениями. Это нормально, если ты этого хочешь. Но если вы просто хотите связать простые правила, написанные на Java, вместе с XML для поддержки ваших тестов состояния, Roolie — очень быстрый способ сделать это. Никаких зависимостей и кривой обучения.

person R K    schedule 01.04.2013
comment
Рули заявляет, что это лицензия MIT на SourceForge, но в коде указано LGPLv3. По сути, это означает, что сомнительно использовать его в любом коммерческом продукте (и в некоторых продуктах с открытым исходным кодом). См. nmav.gnutls.org/2013/03/the-perils. -of-lgplv3.html . - person ingyhere; 24.05.2013

Когда нам понадобился движок правил, мы решили создать свой собственный, потому что доступные были слишком сложны для наших простых задач. Если вы хотя бы отдаленно разбираетесь в выражениях, которые могут вводить пользователи, это не очень сложно сделать. В нашем случае большая часть спецификации обрабатывается XSD, и только несколько полей анализируются дальше.

person Confusion    schedule 30.01.2010
comment
Механизмы правил используют хорошо зарекомендовавшие себя алгоритмы (такие как прямая цепочка и алгоритм Рете) для решения нетривиальных задач. Если вы просто вычисляете выражения, может оказаться полезной существующая библиотека, такая как MVEL. - person jevon; 28.02.2011