Download - drools introduction
![Page 1: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/1.jpg)
Drools business rule management system
Дисклаймер: я никогда с этим не работал, прочитал пол книжки и доки на drools.jboss.org.
Все примеры являются вымышленными и скопипащенными с интернета.
![Page 2: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/2.jpg)
Drools – это процессор правил с открытым кодом, написанный на Java и выполняющий правила в соответствии с алгоритмом Рете . Благодаря Drools бизнес-правила приложения можно описывать декларативным образом, используя простой для изучения и понимания язык
![Page 3: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/3.jpg)
Преимущества. Зачем нужны правила?
Отделить приложение от изменяющейся логики: Правила могут изменять различные группы людей Не нужно пере-компилировать или редеплоить Все правила в одном месте
Декларативный подход Легко читать и изменять
Централизованность - все находится в одном репозитории
Понятность ( декларативный подход, высокоуровневость)
Скорость и масштабируемость (алгоритм Rete)
Легко находить ошибки - правила легче понять соответственно легче поправить
![Page 4: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/4.jpg)
Недостатки (don't think of Drools as the silver bullet)
Нужно вкладывать в обучение - недостаток знаний может дать неэффективные правила ($)
Нужно изменить подход в мышлении при написании правил. Но сделав это раз станет просто и понятно писать быстро и хорошо.
Сложно отлаживать правила в отличии от Java кода
Затраты на память
В ходе работы одного правила могут быть измененны факты, участвующие в работе других правил
![Page 5: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/5.jpg)
POJO as fact
Drools 5 поднял простоту POJO-программирования на новый уровень, позволив программистам внедрять POJO-объекты как факты непосредственно в сеанс управления знаниями или то, что в механизме управления правилами называется «рабочей памятью».
![Page 6: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/6.jpg)
Rule
Условия правила:
Тип объекта - Applicant
Поле age должно быть < 18
Действие правила:
setValid(false)
Примеры
![Page 7: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/7.jpg)
Drools Rule Language: Executing Rules
StatefullKnowledgeSession
KnowledgeSession
StatelessKnowledgeSession
![Page 8: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/8.jpg)
Drools Rule Language
KnowledgeBase может быть изменена внутри правил
insert() - вставка объектов в текущую сессию
update() - обновление существующих в рабочей памяти объектов
delete() - удаление объектов из сессии
![Page 9: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/9.jpg)
ClassesRule
Результат работы правила:
Примеры
![Page 10: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/10.jpg)
Как это работает ?
![Page 11: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/11.jpg)
Условные операторы
not Applicant(name = “Bob")
exist Applicant(name = “Bob")
forall ($a : Applicant(name == “Bob”)
forall ($a : Applicant(age = 20) Applicant (this== $a, name == “Sam”))
![Page 12: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/12.jpg)
Timers - работа по часам
Timer (interval and cron ) - можно писать обычные cron выражения.
Пример кода:Результат:
..бесконечный timer world
![Page 13: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/13.jpg)
Интеграция со Spring и Camel
![Page 14: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/14.jpg)
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 - подсветка синтаксиса
![Page 15: drools introduction](https://reader036.vdocuments.pub/reader036/viewer/2022062419/558a37b4d8b42ab91d8b456d/html5/thumbnails/15.jpg)
ИсточникиDrools Homepage
http://www.jboss.org/drools/Drools Blog
http://blog.athico.com/Drools Chat
irc.codehaus.org #droolsDrools Mailing List