drools introduction
Post on 24-Jun-2015
222 Views
Preview:
DESCRIPTION
TRANSCRIPT
Drools business rule management system
Дисклаймер: я никогда с этим не работал, прочитал пол книжки и доки на drools.jboss.org.
Все примеры являются вымышленными и скопипащенными с интернета.
Drools – это процессор правил с открытым кодом, написанный на Java и выполняющий правила в соответствии с алгоритмом Рете . Благодаря Drools бизнес-правила приложения можно описывать декларативным образом, используя простой для изучения и понимания язык
Преимущества. Зачем нужны правила?
Отделить приложение от изменяющейся логики: Правила могут изменять различные группы людей Не нужно пере-компилировать или редеплоить Все правила в одном месте
Декларативный подход Легко читать и изменять
Централизованность - все находится в одном репозитории
Понятность ( декларативный подход, высокоуровневость)
Скорость и масштабируемость (алгоритм Rete)
Легко находить ошибки - правила легче понять соответственно легче поправить
Недостатки (don't think of Drools as the silver bullet)
Нужно вкладывать в обучение - недостаток знаний может дать неэффективные правила ($)
Нужно изменить подход в мышлении при написании правил. Но сделав это раз станет просто и понятно писать быстро и хорошо.
Сложно отлаживать правила в отличии от Java кода
Затраты на память
В ходе работы одного правила могут быть измененны факты, участвующие в работе других правил
POJO as fact
Drools 5 поднял простоту POJO-программирования на новый уровень, позволив программистам внедрять POJO-объекты как факты непосредственно в сеанс управления знаниями или то, что в механизме управления правилами называется «рабочей памятью».
Rule
Условия правила:
Тип объекта - Applicant
Поле age должно быть < 18
Действие правила:
setValid(false)
Примеры
Drools Rule Language: Executing Rules
StatefullKnowledgeSession
KnowledgeSession
StatelessKnowledgeSession
Drools Rule Language
KnowledgeBase может быть изменена внутри правил
insert() - вставка объектов в текущую сессию
update() - обновление существующих в рабочей памяти объектов
delete() - удаление объектов из сессии
ClassesRule
Результат работы правила:
Примеры
Как это работает ?
Условные операторы
not Applicant(name = “Bob")
exist Applicant(name = “Bob")
forall ($a : Applicant(name == “Bob”)
forall ($a : Applicant(age = 20) Applicant (this== $a, name == “Sam”))
Timers - работа по часам
Timer (interval and cron ) - можно писать обычные cron выражения.
Пример кода:Результат:
..бесконечный timer world
Интеграция со Spring и Camel
Drools Eclipse IDE
Удобной средой разработки является Eclipse - поддерживает много графических возможностей для работы с Drools. Необходимо всего пара плагинов:
GEF - Eclipse Graphical Editing Frameworkhttp://www.eclipse.org/gef/
Drools Eclipse IDE plugin http://download.jboss.org/drools/release/5.6.0.Final/org.drools.updatesite/plugins/
IntelliJ IDEA JBoss Drools support plugin - подсветка синтаксиса
ИсточникиDrools Homepage
http://www.jboss.org/drools/Drools Blog
http://blog.athico.com/Drools Chat
irc.codehaus.org #droolsDrools Mailing List
rules-users@lists.jboss.org
top related