2010-01-30 3 views
98

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

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

ответ

13

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

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

+14

Drools также поддерживает правила отредактированные в Excel, а также через веб-интерфейс. – retronym

118

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

Используйте механизм правил, если вам необходимо отделить бизнес-правила от логики приложения. Does Your Project Need a 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); 

до вас г ecide ли положить консоль правила администратора в руках неопытных людей, это хорошая вещь или нет :)

Более подробной информации в Should I use a Rules Engine?, Why use a Rule Engine?, Some Guidelines For Deciding Whether To Use A Rules Engine и Google.

Есть ли другие игроки?

Другие игроки включают JRules, Corticon (JRules - самая известная ИМО, что не означает лучшее).

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

Не могу точно сказать, у меня есть только небольшой (положительный) опыт работы с Drools. Но вы получите некоторую обратную связь из сообщений блога, таких как JBoss Drools vs ILog JRules - an anecdotal story (обязательно прочитайте) или Working with Drools from a JRules perspective. Я уверен, что вы можете найти их больше в Google (но я бы попросил Drools).

+0

ваш ответ выглядит хорошо. Не могли бы вы рассказать мне, где использовать слюну, а где Джесс? В принципе, я ожидаю, что ответ будет больше связан с разницей. ч/б слюни и Джесс. – Tony

+7

Ничего себе, @ Паскаль, этот пример количества продукта/скидки - настоящий WTF. Произнести количество 5000. Первый IF оценивает значение true, ELSE IFs никогда не оцениваются. Включение такой бизнес-логики в механизм правил ничего не поможет, хотя это может затруднить поиск ошибки. – DOK

+0

В его защиту этот пример был из этой первой статьи. Не так уверен, насколько правдоподобно, что вы смотрите больше ... :) – Jeb

2

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

+6

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

3

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

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

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

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

+1

Roolie заявляет, что MIT лицензируется на SourceForge, но код сообщает LGPLv3. Это, по сути, означает, что использовать его в любом коммерческом продукте (и в некоторых продуктах с открытым исходным кодом) тоже сомнительно. См. Http://nmav.gnutls.org/2013/03/the-perils-of-lgplv3.html. – ingyhere

6

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

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

больше деталей в следующих URL

Смежные вопросы