Плюсы и минусы механизмов правил Java [закрыто]

108

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

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

хвастун
источник

Ответы:

128

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

Паскаль Тивент
источник
1
ваш ответ выглядит хорошо. Не могли бы вы сказать мне, где использовать слюни, а где Джесс? В принципе, я жду ответа, связанного с различием. ч / б пускают слюни и Джесс.
Тони
7
Вау, @Pascal, этот пример количества товара / скидки - настоящий чушь. Скажем, количество 5000. Первый IF принимает значение «истина», IF ELSE никогда не оцениваются. Включение такой бизнес-логики в механизм правил ничего не поможет, хотя может затруднить поиск ошибки.
DOK
В его защиту этот пример взят из той первой статьи. Не уверен, насколько правдоподобно это выглядит ... :)
Джеб
6
Просто хороший пример того, как опасно передавать контроль правил в руки нетехнических специалистов.
Pace
1
Зачем использовать систему правил? лучшая среди перечисленных ссылок
Аравинд Яррам
16

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

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

Доминик Санджая
источник
19
Drools также поддерживает правила, редактируемые в Excel и через веб-интерфейс.
ретроним
7

У нас был аналогичный вопрос с нами, мы, наконец, выбрали Drools, следует использовать слюни, если у вас есть следующие:

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

Более подробная информация по следующему URL-адресу

Сачин Тхапа
источник
3

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

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

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

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

RK
источник
2
Рули заявляет, что MIT имеет лицензию на SourceForge, но в коде указано LGPLv3. По сути, это означает, что использование его в любом коммерческом продукте (а также в некоторых продуктах с открытым исходным кодом) сомнительно. См. Nmav.gnutls.org/2013/03/the-perils-of-lgplv3.html .
ingyhere
2

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

Спутанность сознания
источник
6
Механизмы правил используют хорошо зарекомендовавшие себя алгоритмы (такие как прямая цепочка и алгоритм Rete) для масштабирования до нетривиальных задач. Если вы просто оцениваете выражения, может оказаться полезной существующая библиотека, такая как MVEL.
jevon