cork jug - drools basics & pitfalls

18
Drools Basics & Common Pitfalls Mauricio Salatino / JBoss - Red Hat JUG Cork March - 2016

Upload: mauricio-salaboy-salatino

Post on 15-Feb-2017

2.018 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Cork JUG - Drools basics & pitfalls

Drools Basics & Common Pitfalls

Mauricio Salatino / JBoss - Red Hat JUG Cork March - 2016

Page 2: Cork JUG - Drools basics & pitfalls

Agenda● What is Drools?

○ Drools History○ Rule Engine○ DRL language○ Execution Cycle

● KIE - Knowledge is Everything○ KIE Platform & KIE API

● Our First Drools Project● Drools Common Usage● Drools Common Pitfalls● Roadmap (7.x version)

Page 3: Cork JUG - Drools basics & pitfalls

About Me● Senior Software Engineer @ Red Hat/JBoss ● I joined the Drools & jBPM in 2012● Passionate about Drools & jBPM● Author of 3 books about jBPM● New book about Drools

○ (1st April 2016)

Page 4: Cork JUG - Drools basics & pitfalls

What is Drools? - History● 2003: Created by Mark Proctor and Bob McWhirter ● 2005: Acquired by JBoss● 2007: Drools 3.x introduced the first version of the Rete

OO Algorithm● 2009: Drools 4.x focused on performance and production

ready● 2012: Drools 5.x focused on integration and unification

of Drools, jBPM and CEP (KIE was born)● 2014: Drools 6.x focused on infrastructure, deployment

and tooling

Page 5: Cork JUG - Drools basics & pitfalls

What is Drools?● It depends on what you need

○ Core: lightweight Rule Engine (a library)○ KIE Server: standalone - as a service provider

● Rule Engine -> Inference Engine○ Data Driven -> Forward Chaining Algorithms○ Goal Driven -> Backward Chaining Algorithms

● Change of paradigm from Imperative (Java) to Declarative

Page 6: Cork JUG - Drools basics & pitfalls

What is Drools? - Rule Structurerule “Large Orders require approval”

//<rule attributes>

when

Order(items.size >= 10 && total >= 100000)

then

// Trigger approval process

end

Page 7: Cork JUG - Drools basics & pitfalls

What is Drools? - Rule ENgine Overview

Page 8: Cork JUG - Drools basics & pitfalls

What is Drools? - Rule Execution Cycle

Page 9: Cork JUG - Drools basics & pitfalls

KIE Platform● Drools● Drools CEP (Fusion)● jBPM● OptaPlanner● KIE Server (Drools, jBPM & CEP unified server)● Uberfire (uberfireframework.com)

○ KIE Workbench (Drools, jBPM, Optaplanner Authoring, Runtime & monitoring)

○ KIE Drools Workbench (Drools Authoring)

Page 10: Cork JUG - Drools basics & pitfalls

KIE APIs● KieContainer● KieBase● KieSession

○ insert(Object)○ retract(FactHandle)○ update(FactHandle, Object)○ fireAllRules() / fireAllRules(int)

● KieScanner● kmodule.xml

Drools Specific

Page 11: Cork JUG - Drools basics & pitfalls

Our First Drools Project● Simple JAR Java Maven Project● Add Maven Dependencies

○ drools-compiler■ drools-core (transitive)■ kie-api (transitive)

● CDI Enabled○ cdi-api○ weld-se-core○ beans.xml

● KIE specific○ kmodule.xml

■ conventions over configurations

Page 12: Cork JUG - Drools basics & pitfalls

Rules Power● Any Java Model (non-intrusive)● Filter Data (Simple Filters)● Correlate Data (Multiple filters between patterns)● Accumulations / Aggregations (accumulate functions)● Inference Chain

○ Detailed Log○ Query Data○ Truth Maintenance System(TMS)

Page 13: Cork JUG - Drools basics & pitfalls

Common Pitfalls● Start simple, don’t over complicate things● Compare with if/else statements● Too much logic on the RHS● Infinite Loop● Complex (Nested) Models - Facts VS Non-Facts● Cross Product - DB/SQL analogy● From/Eval executed multiple time in RHS

○ External Service Calls (Sync calls)

● Persistence

Page 14: Cork JUG - Drools basics & pitfalls

Roadmap (7.x series)● Cloud Deployments● Tooling for the Cloud● Self-service applications● Different Vertical’s Packages● API refactoring towards

○ Flexibility○ Services○ Composition

● Drools language improvements● Phreak tuning and fragmentation for distribution

Page 15: Cork JUG - Drools basics & pitfalls

Community● www.drools.org / www.jbpm.org● Drools & jBPM Mailing lists● irc.freenode.net

○ #drools○ #jbpm

● Blogs:○ blog.athico.com○ salaboy.com

Page 16: Cork JUG - Drools basics & pitfalls

Questions?

Page 17: Cork JUG - Drools basics & pitfalls

RETE Network

Page 18: Cork JUG - Drools basics & pitfalls

Phreak