SlideShare uma empresa Scribd logo
Globalcode – Open4education
Trilha SOA & Big Data
Da introdução à prática com Drools Expert e Drools Flow
Ricardo da Silva Longa
Globalcode – Open4education
Ricardo Longa (@ricardolonga)
Graduado em Sistemas de Informação;
Pós-graduado em Eng. de Software;
Analista de Sistemas na Dígitro Tecnologia;
Em contato com Java desde 2005.
Globalcode – Open4education
Agenda
JBoss Drools
Introdução e curiosidades
Drools Expert
O que é?
Como funciona?
Quando não utilizar?
Quais as vantagens/desvantagens?
Domain Specification Language (DSL)
Globalcode – Open4education
Agenda
Drools Flow (atual jBPM 5)
O que é?
Como funciona?
Globalcode – Open4education
Agenda
JBoss Drools
Introdução e curiosidades
Drools Expert
O que é?
Como funciona?
Quando não utilizar?
Quais as vantagens/desvantagens?
Domain Specification Language (DSL)
Globalcode – Open4education
- Criado em 2001 por Bob McWhirter e Mark
Proctor e disponibilizado na SourceForge;
- V. 1.0 nunca liberada;
- V. 2.0 Rete/final/Mark/XML/Codehaus (também criado por
Bob em 2003);
- Principal mecanismo de regras Java open source;
- V. 3.0 introduziu o formato DRL;
- V. 4.0 grandes melhorias no desempenho;
- 2005 federado pela JBoss;
- 2006 a JBoss foi adquirida pela Red Hat;
- Roda também na plataforma .NET.
- Curiosidades
Globalcode – Open4education
Globalcode – Open4education
- Curiosidades
“I started out contributing to open-source as a way to learn C++.” (Bob)
“I created (along with Mark Proctor) the Drools open-source rule engine, and
sold it to JBoss.” (Bob)
@bobmcwhirter @markproctor
Globalcode – Open4education
- Curiosidades
“Drools 5 introduces the Business Logic integration Platform which provides
a unified and integrated platform for Rules, Workflow and Event Processing.”
Globalcode – Open4education
- Curiosidades
Globalcode – Open4education
Agenda
JBoss Drools
Introdução e curiosidades
Drools Expert
O que é?
Como funciona?
Quando não utilizar?
Quais as vantagens/desvantagens?
Domain Specification Language (DSL)
Globalcode – Open4education
- O que é?
“Is a declarative, rule based, coding environment.”
Foco em “o que fazer” e não em “como fazer”.
regras.drl
Globalcode – Open4education
Agenda
JBoss Drools
Introdução e curiosidades
Drools Expert
O que é?
Como funciona?
Quando não utilizar?
Quais as vantagens/desvantagens?
Domain Specification Language (DSL)
Globalcode – Open4education
- Como funciona?
Globalcode – Open4education
- Como funciona?
Regras escritas em Java, MVEL, Python ou Groovy;
Regras em arquivos .DRL;
Inference engine: executor das regras;
Production memory: as regras em memória;
Working memory: onde inserimos os fatos.
Globalcode – Open4education
- Como funciona?
Globalcode – Open4education
- Como funciona?
Globalcode – Open4education
- Como funciona?
Globalcode – Open4education
- Como funciona?
Alto
custo
Carregamos a production memory.
Globalcode – Open4education
- Como funciona?
Criamos uma nova sessão, nosso
ponto de interação com a
inference engine.
Globalcode – Open4education
- Como funciona?
Nosso Pojo, nosso Fato.
Globalcode – Open4education
- Como funciona?
Inserimos nosso Fato na
working memory.
Globalcode – Open4education
- Como funciona?
Disparamos nossas regras!
Globalcode – Open4education
- Como funciona?
Globalcode – Open4education
- Como funciona?
Condição: Código nativo DRL.
Globalcode – Open4education
- Como funciona?
Consequência: Código Java.
Globalcode – Open4education
- Como funciona?
A consequência será executada
considerando a idade do Fulano?
“It’s considered very bad practice to have conditional logic (if statements) within
rule consequence.”
Globalcode – Open4education
- Como funciona?
“When a fact is inserted/modified/retracted the rule engine works with a
new set of facts; rules may be activated/deactivated.”
Globalcode – Open4education
- Como funciona?
Globalcode – Open4education
Agenda
JBoss Drools
Introdução e curiosidades
Drools Expert
O que é?
Como funciona?
Quando não utilizar?
Quais as vantagens/desvantagens?
Domain Specification Language (DSL)
Globalcode – Open4education
- Quando não utilizar?
Projeto com poucas regras (menos de 20);
Sem a necessidade de alterar as regras em tempo de
execução;
Em um ambiente restrito de memória;
Falta tempo para o treinamento necessário para a equipe.
Globalcode – Open4education
Agenda
JBoss Drools
Introdução e curiosidades
Drools Expert
O que é?
Como funciona?
Quando não utilizar?
Quais as vantagens/desvantagens?
Domain Specification Language (DSL)
Globalcode – Open4education
- Vantagens
Fácil de compreender (Declarativo);
Fácil manutenção;
Lógica separada dos dados;
Alto desempenho (algoritmo RETE);
Requisitos se tornam regras;
Ferramentas de integração (validação, debugging, etc);
Reusabilidade.
Globalcode – Open4education
- Desvantagens
Necessidade de treinamento da equipe (analogia aos comandos SQL);
Alto consumo de memória.
Globalcode – Open4education
Agenda
JBoss Drools
Introdução e curiosidades
Drools Expert
O que é?
Como funciona?
Quando não utilizar?
Quais as vantagens/desvantagens?
Domain Specification Language (DSL)
Globalcode – Open4education
- DSL
“Are a way of creating a rule language that is dedicated to your problem domain.”
Melhora a legibilidade do seu código;
Ótimo exemplo: comando SQL.
“SELECT nome FROM pessoa WHERE ...”
Globalcode – Open4education
- DSL
Globalcode – Open4education
- DSL
Globalcode – Open4education
- DSL
Globalcode – Open4education
Agenda
Drools Flow (jBPM 5)
O que é?
Como funciona?
Globalcode – Open4education
- O que é?
“Allow user to create a graphical flow chart that defines the order in which rule
sets should be evaluated.”
Globalcode – Open4education
Agenda
Drools Flow (jBPM 5)
O que é?
Como funciona?
Globalcode – Open4education
- Como funciona?
Globalcode – Open4education
- Como funciona?
Globalcode – Open4education
Referências
http://www.jboss.org/drools/
http://www.jboss.org/drools/drools-expert
http://blog.athico.com/
http://markproctor.com/
http://drools.askdefine.com/

Mais conteúdo relacionado

Mais procurados

Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013
Pablo Dall'Oglio
 

Mais procurados (19)

TDC2016SP - Criando modelos em nuvem com Azure Machine Learning
TDC2016SP - Criando modelos em nuvem com Azure Machine LearningTDC2016SP - Criando modelos em nuvem com Azure Machine Learning
TDC2016SP - Criando modelos em nuvem com Azure Machine Learning
 
Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...
Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...
Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Spring Roo
Spring RooSpring Roo
Spring Roo
 
O papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareO papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de software
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigData
 
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
 
Business Rules com Drools
Business Rules com DroolsBusiness Rules com Drools
Business Rules com Drools
 
MediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastMediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCast
 
Programação funcional que funciona
Programação funcional que funcionaProgramação funcional que funciona
Programação funcional que funciona
 
Seamforge
SeamforgeSeamforge
Seamforge
 
Text Mining
Text MiningText Mining
Text Mining
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
 
O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!
 
[TDC-Floripa 2017] Utilizando BDD para análise de negócio e desenvolvimento d...
[TDC-Floripa 2017] Utilizando BDD para análise de negócio e desenvolvimento d...[TDC-Floripa 2017] Utilizando BDD para análise de negócio e desenvolvimento d...
[TDC-Floripa 2017] Utilizando BDD para análise de negócio e desenvolvimento d...
 
TDC2012 Agile - 7 Padrões Para Implantar Métodos Ágeis
TDC2012 Agile - 7 Padrões Para Implantar Métodos ÁgeisTDC2012 Agile - 7 Padrões Para Implantar Métodos Ágeis
TDC2012 Agile - 7 Padrões Para Implantar Métodos Ágeis
 
Design Patterns com PHP
Design Patterns com PHPDesign Patterns com PHP
Design Patterns com PHP
 
TDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberTDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saber
 
Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013
 

Destaque

Introducing Drools
Introducing DroolsIntroducing Drools
Introducing Drools
Mario Fusco
 
Drools5 Community Training Module#1: Drools5 BLiP Introduction
Drools5 Community Training Module#1: Drools5 BLiP IntroductionDrools5 Community Training Module#1: Drools5 BLiP Introduction
Drools5 Community Training Module#1: Drools5 BLiP Introduction
Mauricio (Salaboy) Salatino
 
3 t drools
3 t drools3 t drools
3 t drools
jeansoat
 

Destaque (11)

Introducing Drools
Introducing DroolsIntroducing Drools
Introducing Drools
 
Drools5 Community Training Module#1: Drools5 BLiP Introduction
Drools5 Community Training Module#1: Drools5 BLiP IntroductionDrools5 Community Training Module#1: Drools5 BLiP Introduction
Drools5 Community Training Module#1: Drools5 BLiP Introduction
 
Code Refactoring
Code RefactoringCode Refactoring
Code Refactoring
 
Drools5 Community Training module 4 RETE Algorithm Introduction
Drools5 Community Training module 4 RETE Algorithm IntroductionDrools5 Community Training module 4 RETE Algorithm Introduction
Drools5 Community Training module 4 RETE Algorithm Introduction
 
3 t drools
3 t drools3 t drools
3 t drools
 
Drools
DroolsDrools
Drools
 
Rule Engine Evaluation for Complex Event Processing
Rule Engine Evaluation for Complex Event ProcessingRule Engine Evaluation for Complex Event Processing
Rule Engine Evaluation for Complex Event Processing
 
Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)
 
Rule Engine & Drools
Rule Engine & DroolsRule Engine & Drools
Rule Engine & Drools
 
JBoss Drools - Pure Java Rule Engine
JBoss Drools - Pure Java Rule EngineJBoss Drools - Pure Java Rule Engine
JBoss Drools - Pure Java Rule Engine
 
Spaghetti Diagrams
Spaghetti DiagramsSpaghetti Diagrams
Spaghetti Diagrams
 

Semelhante a Da introdução à prática com Drools Expert e Drools Flow

Semelhante a Da introdução à prática com Drools Expert e Drools Flow (20)

Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
TDC 2012 - JDF
TDC 2012 - JDFTDC 2012 - JDF
TDC 2012 - JDF
 
Organizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gostaOrganizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gosta
 
Machine Learning Black Boxes
Machine Learning Black BoxesMachine Learning Black Boxes
Machine Learning Black Boxes
 
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho DuroTDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviços
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Cross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appiumCross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appium
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012
 
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App Engine
 
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
 
Slide db4 o
Slide db4 oSlide db4 o
Slide db4 o
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Modularização em java com osgi
Modularização em java com osgiModularização em java com osgi
Modularização em java com osgi
 
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworksDo Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
 

Mais de Ricardo Longa

Android - Programação para dispositivos móveis (Aula 2)
Android - Programação para dispositivos móveis (Aula 2)Android - Programação para dispositivos móveis (Aula 2)
Android - Programação para dispositivos móveis (Aula 2)
Ricardo Longa
 
Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)
Ricardo Longa
 

Mais de Ricardo Longa (20)

Big Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoBig Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenho
 
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonMinicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento android
 
Aula 12/06 (SQLite)
Aula 12/06 (SQLite)Aula 12/06 (SQLite)
Aula 12/06 (SQLite)
 
Aula 05/06 (Service)
Aula 05/06 (Service)Aula 05/06 (Service)
Aula 05/06 (Service)
 
Aula 05/06 (Notification)
Aula 05/06 (Notification)Aula 05/06 (Notification)
Aula 05/06 (Notification)
 
Aula 29/05 (AlarmManager)
Aula 29/05 (AlarmManager)Aula 29/05 (AlarmManager)
Aula 29/05 (AlarmManager)
 
Aula 22/05 (Handler)
Aula 22/05 (Handler)Aula 22/05 (Handler)
Aula 22/05 (Handler)
 
Adopt a JSR
Adopt a JSRAdopt a JSR
Adopt a JSR
 
JSR 339 - Java API for RESTful Web Services
JSR 339 - Java API for RESTful Web ServicesJSR 339 - Java API for RESTful Web Services
JSR 339 - Java API for RESTful Web Services
 
Aula 6 - 08/05 (SharedPreferences)
Aula 6 - 08/05 (SharedPreferences)Aula 6 - 08/05 (SharedPreferences)
Aula 6 - 08/05 (SharedPreferences)
 
Aula 6 - 08/05 (Menu)
Aula 6 - 08/05 (Menu)Aula 6 - 08/05 (Menu)
Aula 6 - 08/05 (Menu)
 
Aula 5 - 24/04 (Landscape / Portrait)
Aula 5 - 24/04 (Landscape / Portrait)Aula 5 - 24/04 (Landscape / Portrait)
Aula 5 - 24/04 (Landscape / Portrait)
 
JBoss Forge 2
JBoss Forge 2JBoss Forge 2
JBoss Forge 2
 
Aula 17 04 (Exercícios e ScrollView)
Aula 17 04 (Exercícios e ScrollView)Aula 17 04 (Exercícios e ScrollView)
Aula 17 04 (Exercícios e ScrollView)
 
Aula 10 04 (intents)
Aula 10 04 (intents)Aula 10 04 (intents)
Aula 10 04 (intents)
 
Aula 10 04 (Gerenciadores de layouts)
Aula 10 04 (Gerenciadores de layouts)Aula 10 04 (Gerenciadores de layouts)
Aula 10 04 (Gerenciadores de layouts)
 
Android - Programação para dispositivos móveis (Aula 2)
Android - Programação para dispositivos móveis (Aula 2)Android - Programação para dispositivos móveis (Aula 2)
Android - Programação para dispositivos móveis (Aula 2)
 
Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)
 
Da introdução à prática no desenvolvimento Android
Da introdução à prática no desenvolvimento AndroidDa introdução à prática no desenvolvimento Android
Da introdução à prática no desenvolvimento Android
 

Da introdução à prática com Drools Expert e Drools Flow