SlideShare a Scribd company logo
1 of 43
Download to read offline
Instituto de Inovação com TIC




                Drools Expert - um framework gerenciador
                               de regras de negócio




            Inovação é com a gente!


Eduardo Araújo Oliveira (eao@cesar.org.br)
Anderson Neves (afrdn@cesar.org.br)



                                                                slide 1
2
Drools

 O que é?

 Drools is a business rule management system
   (BRMS) with a forward chaining inference based
   rules engine, more correctly known as a
   production rule system, using an enhanced
   implementation of the Rete algorithm.




                                                    3
Drools

 -   The Business Logic integration Platform
 -   5 Módulos integrados
 -   Desde 2001
 -   Jboss e Red Hat
 -   Open Source
 -   Plugin para Eclipse
 -   http://www.jboss.org/drools




                                               4
Drools - motivação

• Implementa ferramentas para decisões complexas
  de negócio
• Problemas dos métodos tradicionais:
   – If-else (Código espaguete)
   – Alterações geralmente precisam de recompilação e redeploy
   – Não separa código de infraestrutura das regras de negócio




                                                                 5
Drools - motivação

• Permite implementar a lógica de negócio de uma
  maneira mais declarativa
• Separa o conhecimento do código de
  infraestrutura
• Fornece diferentes ferramentas para cada tipo de
  lógica de negócio
      – Decisões a partir de dados
      – Processos de negócio
      – Decisões a partir de eventos




                                                     6
Drools




         7
Drools

Totalmente integrável com Java
   – Integração transparente através de um plug-in do
     Eclipse;
   – Pode ler classes Java nas condições das regras;
   – Pode chamar métodos de Java na ação das regras;




                                                        8
Drools

Vantagens
– Fácil entendimento
– Maior facilidade de manutenção
– Desempenho razoável
  – Quantidade de regras vs performance
– Requisitos traduzidos em regras




                                          9
Drools

java
public boolean invalidarMatricula(Aluno aluno) {
   if (aluno.getIdade() < 18) {
       aluno.getMatricula().setValida(false);
       return true;
   }
   return false;
}


drools
rule “Invalidar matricula aluno"
    when
        $aluno : Aluno(idade < 18)
    then
        $aluno. getMatricula().setValida(false);
end




                                                   10
Drools

Vantagens das regras

   – Regras rodam em uma camada separada do código
     nativo da aplicação
   – Podem ser expressas em uma linguagem diferente, mais
     natural (DSL)
   – Facilidade de manutenção e leitura
   – Introduz a possibilidade do próprio analista de negócios
     realizar a autoria e manutenção das regras sabendo
     exatamente como serão interpretadas pelo sistema




                                                                11
Drools

Desvantagens
– Requer uma curva de aprendizado
   – Entender minimamente como funciona uma engine de
     regras (máquina de inferência)
   – As regras podem gerar recursão, que devem ser
     tratadas pelo desenvolvedor
   – Em casos de conflitos o desenvolvedor tem que escolher
     qual tratamento usar
– Consumo de memória




                                                              12
Performance Characteristic




            Sacrifices memory for speed




                                          13
Drools License

 • JBoss Rules           - Apache License v.2.0



 The Apache license is particularly business-friendly,
   and you can take the code and use it in pretty
   much any way you want, as long as you
   acknowledge that your product was 'built using
   Drools'. You don't have to publish your changes
   or additions (as another famous open source
   license, the GPL, requires you to do).




                                                         14
Drools




         Módulos




                   15
Drools

 Engine de regras
 Linguagem para regras (DRL)
 Linguagem específica do domínio (DSL)
 Integrado ao Java




É o módulo principal, que compreende
o motor de regras e linguagem de
regras. Raciocínio baseado em regras


         http://www.jboss.org/drools/drools-expert.html   16
Drools

 Workflows
 BPMN
 Editor gráfico do fluxograma
 Extensível
 Para criar, executar e monitorar processos de
   negócio



Adiciona as capacidades para lidar
com processos de negócio



          http://www.jboss.org/drools/drools-flow.html
                                                         17
Drools

 Processamento de Eventos Complexos (CEP)
    - Eventos no tempo
 Integrado ao Drools Expert
 Para sistemas de:
    – Detecção de fraudes
    – Aprovação de crédito




Adiciona capacidades para realizar o
CEP (Complex Event Processing).
Decisões a partir de eventos


            http://www.jboss.org/drools/drools-fusion.html
                                                             18
Drools

 BRMS (não só regras)
 Repositório centralizado do conhecimento
 Aplicação Web
 Versionamento
 Foco nas regras de negócio




Ferramenta para Gerência das regras
de negócio (BRMS).


         http://www.jboss.org/drools/drools-guvnor.html
                                                          19
Drools

 Problemas com restrições
 Problemas como:
   – Escalas de empregados
   – Horário escolar
   – Caixeiro viajante




         http://www.jboss.org/drools/drools-fusion.html
                                                          20
Drools




         21
Sistemas de Produção
 • Fatos: x, y
 • Regras: x & y => p
 • Encadeamento para a frente (Forward
   chaining)
   – Dados x e y, derive então p


 • Encadeamento para trás (Backward
   chaining)
   – p é verdade? Então verificarei x e y.
   – Prolog
Módulos de Sistemas de Produção

 • Base de Regras ou memória permanente
    – regras se-então e fatos conhecidos
 • Memória de Trabalho ou temporária
    – percepções do agente, fatos iniciais e gerados a partir da
      BR pelo mecanismo de inferência
 • Mecanismo (motor) de Inferência
    – determina o método de raciocínio utilizado (progressivo
      ou regressivo)
    – Executa a busca com casamento (unificação)
    – resolve conflitos e executa ações.
Como funciona?




                 24
Como funciona?

 • Working Memory - Memória de Trabalho
    – É onde residem os fatos.
 • Production Memory - Base de Conhecimento
    – É onde reside todo o conhecimento de negócio (regras).
 • Pattern Matcher - Reconhecedor de padrões
    – Responsável por casar os fatos na memória de trabalho
      com as condições das regras e criar ativações a partir
      dos casamentos.
 • Agenda
    – Responsável pela ordenação das ativações para
      execução.




                                                          slide 25
Basic RETE Network




                     26
Conceitos Básicos

  Fatos:
  • São objetos que representam um determinado
    estado do domínio
  Regras de negócio
  • Toda regra é representada por dois elementos
    principais, seguindo a sintaxe:
  quando
     <condições (LHS)>
  então
     <ações (RHS)>
Conceitos Básicos


 • Representam conhecimento com pares condição-
   ação
    – Se condição (ou premissa ou antecedente) ocorre
      então ação (resultado, conclusão ou conseqüente)
      deverá ocorrer.
 • Regras de produção produzem novos fatos a
   partir dos fatos e regras da PM.
    – Esses novos fatos passam a fazer parte da WM
    – Novas regras da PM podem ser disparadas
 • Lógica de primeira ordem
Drools Expert - Conceitos Básicos


 package bank.model;
 rule "basic rule"
 when // condition
   Account( balance < 100 )
 then // consequence
   System.out.println("Account balance is less than
   100");
 end
Drools Expert - Conceitos Básicos


  O package funciona como um namespace
 – Nomes de regras em um pacote tem que ser
    únicas
 basic rule é o nome da regra
 when indica a condição (premissa)
    – LHS (Left Hand Side)
 then indica a consequência da regra
    – RHS (Right Hand Side)
 // é usado para comentários
Drools Expert - Conceitos Básicos
 Várias condições
    Account( balance == 200 )
    Customer( name == "John" )
 Variáveis nas regras
    $account : Account( $type : type )
 Tipos
 – String
    Customer( name matches "[A-Z][a-z]+" )
 – Date
    Account( dateCreated > "01-Jan-2008" )
 – Boolean
    Transaction( approved == true )
 – Enum
    Account( type == Account.Type.SAVINGS )
 Comentários
 #Comentário de única linha
 //Comentário de única linha
 /*Comentário de
 várias linhas*/
Drools Expert - Conceitos Básicos
 Imports
    import com.mycompany.mypackage.MyClass;
    import com.mycompany.anotherPackage.*;
 Variáveis Globais
 Funções
 function double calculateSquare(double value) {
    return value * value;
 }
 Condição da regra
 – And
 Customer( name == "John", age < 26 )
 – Or
 Customer( name == "John" || age < 26 )
 Customer( age < 26 || > 70 )
 – Not
 not Account( type == Account.Type.SAVINGS )
 – Exists
 exists Account( type == Account.Type.SAVINGS )
Drools Expert - Conceitos Básicos

 Quando todas as condições de uma regra são
   satisfeitas, a regra é ativada

 Uma regra ativada é disparada,         segundo     a
  estratégia de resolução de conflito

 A execução das regras podem ativar outras regras

 O processo é repetido até que nenhuma regra seja
   ativada
Drools Expert - Conceitos Básicos
  Alguns comandos usados na consequência da regra

 –   update(objeto);
 –   insert(new Objeto());
 –   insertLogical(new Objeto());
 –   retract(objeto);
 –   drools.halt();
 –   drools.getRule().getName();
 –   kcontext.getKnowledgeRuntime().halt();


 http://www.ibm.com/developerworks/java/library/j-drools/
Drools Expert - Conceitos Básicos
 Alguns atributos das regras
 – salience (prioridade)
    Default é 0
    salience 100
 – no-loop
 – date-effective
    date-effective "01-Jan-2011”
 – date-expires
    date-expires "01-Jan-2011"
 – duration
    duration 3000


 http://www.ibm.com/developerworks/java/library/j-drools/
Exemplos




           Hello World




                         36
Exemplos




           37
Exemplos




           38
DSL

 Domain Specific Languages
 O motor de regras possui uma poderosa maneira de
   mapear sua linguagem nativa, expressa nos drl's,
   para uma linguagem mais natural, como
   mostrada nos primeiros exemplos.
 Este mapeamento se dá através das Domain
   Specific Languages, ou dsl's.
 dsl´s são expressas em arquivos .dsl, com uma
   sintaxe bastante simples, bem parecida com um
   arquivo .properties




                                                      39
DSL

 Domain Specific Languages por exemplo:
 [keyword]rule=regra
 [keyword]when=quando
 [keyword]then=então
 [keyword]end=fim
 [when]O Aluno em questão possui=a : Aluno($pf :
    pessoaFisica) pf : PessoaFisica($p :
 pessoa) from $pf p : Pessoa($dataNasc: dataNascimento,
    $nome : nome) from $p
 [when]-     idade      menor      que   {idadeMinima}=eval(
    subtraiData(dataAtual, $dataNasc) <
 {idadeMinima} )
 [then]Invalidar matrícula=mensagemMenorDeIdade($nome);
    a.getMatricula().invalidar();

                                                               40
DSL

 A regra anterior poderia ser reescrita da seguinte
 maneira:
 regra "deve ser maior de idade"
    salience 0
    ruleflow-group "validacao"
    quando
       O aluno em questão possui
          - idade menor que 18
    então
       Invalidar matrícula
 fim




                                                      41
Exemplos

 http://imasters.com.br/artigo/12444/desenvolvimento/d
    e_forca_ao_usuario_com_o_drools_parte_1/

 http://imasters.com.br/artigo/12708/java/de_forca_ao_
    usuario_com_drools_parte_2/

 http://imasters.com.br/artigo/15646/desenvolvimento/d
    e-forca-ao-usuario-com-drools-parte-03/

 códigos:
   http://diegopacheco.svn.beanstalkapp.com/sandbox/trunk/
   JBossDrools-test/src/com/blogspot/diegopacheco/drools/



                                                             42
perguntas ???

Eduardo Araújo Oliveira (eao@cesar.org.br)
Anderson Neves (afrdn@cesar.org.br)

More Related Content

What's hot

Web Application Firewall intro
Web Application Firewall introWeb Application Firewall intro
Web Application Firewall intro
Rich Helton
 
Google Cloud Platform
Google Cloud PlatformGoogle Cloud Platform
Google Cloud Platform
VMware Tanzu
 
SRM versus Stretched Clusters: Choosing the Right Solution
SRM versus Stretched Clusters: Choosing the Right SolutionSRM versus Stretched Clusters: Choosing the Right Solution
SRM versus Stretched Clusters: Choosing the Right Solution
Scott Lowe
 

What's hot (20)

Amazon QLDB를 통한 원장 기반 운전 면허 검증 서비스 구현 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon QLDB를 통한 원장 기반 운전 면허 검증 서비스 구현 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon QLDB를 통한 원장 기반 운전 면허 검증 서비스 구현 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon QLDB를 통한 원장 기반 운전 면허 검증 서비스 구현 - 윤석찬 :: AWS Unboxing 온라인 세미나
 
Pros and Cons of a MicroServices Architecture talk at AWS ReInvent
Pros and Cons of a MicroServices Architecture talk at AWS ReInventPros and Cons of a MicroServices Architecture talk at AWS ReInvent
Pros and Cons of a MicroServices Architecture talk at AWS ReInvent
 
Web Application Firewall intro
Web Application Firewall introWeb Application Firewall intro
Web Application Firewall intro
 
Jfrog artifactory as private docker registry
Jfrog artifactory as private docker registryJfrog artifactory as private docker registry
Jfrog artifactory as private docker registry
 
Amazon Personalize 개인화 추천 모델 만들기::김태수, 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
Amazon Personalize 개인화 추천 모델 만들기::김태수, 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나Amazon Personalize 개인화 추천 모델 만들기::김태수, 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
Amazon Personalize 개인화 추천 모델 만들기::김태수, 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
 
Usage Report(利用レポート)のダウンロード・開き方
Usage Report(利用レポート)のダウンロード・開き方Usage Report(利用レポート)のダウンロード・開き方
Usage Report(利用レポート)のダウンロード・開き方
 
Debugging mule
Debugging   muleDebugging   mule
Debugging mule
 
Deep Dive on Amazon RDS (Relational Database Service)
Deep Dive on Amazon RDS (Relational Database Service)Deep Dive on Amazon RDS (Relational Database Service)
Deep Dive on Amazon RDS (Relational Database Service)
 
Maturing your organization from DevOps to DevSecOps
Maturing your organization from DevOps to DevSecOpsMaturing your organization from DevOps to DevSecOps
Maturing your organization from DevOps to DevSecOps
 
AWS PrivateLink Fundamentals
AWS PrivateLink FundamentalsAWS PrivateLink Fundamentals
AWS PrivateLink Fundamentals
 
Google Cloud Platform
Google Cloud PlatformGoogle Cloud Platform
Google Cloud Platform
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
 
JMeter & ColdFusion
JMeter & ColdFusion JMeter & ColdFusion
JMeter & ColdFusion
 
Learn Oracle WebLogic Server 12c Administration
Learn Oracle WebLogic Server 12c AdministrationLearn Oracle WebLogic Server 12c Administration
Learn Oracle WebLogic Server 12c Administration
 
VMware Disaster Recovery Solution Presentation EN (1).pptx
VMware Disaster Recovery Solution Presentation EN (1).pptxVMware Disaster Recovery Solution Presentation EN (1).pptx
VMware Disaster Recovery Solution Presentation EN (1).pptx
 
AWS vs. Azure
AWS vs. AzureAWS vs. Azure
AWS vs. Azure
 
Clickstream Analysis with Apache Spark
Clickstream Analysis with Apache SparkClickstream Analysis with Apache Spark
Clickstream Analysis with Apache Spark
 
Finally, easy integration testing with Testcontainers
Finally, easy integration testing with TestcontainersFinally, easy integration testing with Testcontainers
Finally, easy integration testing with Testcontainers
 
SRM versus Stretched Clusters: Choosing the Right Solution
SRM versus Stretched Clusters: Choosing the Right SolutionSRM versus Stretched Clusters: Choosing the Right Solution
SRM versus Stretched Clusters: Choosing the Right Solution
 
Top 10 AWS Identity and Access Management (IAM) Best Practices (SEC301) | AWS...
Top 10 AWS Identity and Access Management (IAM) Best Practices (SEC301) | AWS...Top 10 AWS Identity and Access Management (IAM) Best Practices (SEC301) | AWS...
Top 10 AWS Identity and Access Management (IAM) Best Practices (SEC301) | AWS...
 

Viewers also liked

Viewers also liked (17)

BRMS - Business Rules Management System
BRMS - Business Rules Management SystemBRMS - Business Rules Management System
BRMS - Business Rules Management System
 
4 Forum SOA - Edgar Silva (Red Hat)
4 Forum SOA - Edgar Silva (Red Hat)4 Forum SOA - Edgar Silva (Red Hat)
4 Forum SOA - Edgar Silva (Red Hat)
 
Maratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
Maratona JBoss 2010 - Drools Expert : Programação Orientada a RegrasMaratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
Maratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
 
Red Hat Roadshow 2009 - Drools
Red Hat Roadshow 2009 - DroolsRed Hat Roadshow 2009 - Drools
Red Hat Roadshow 2009 - Drools
 
drools + robocode
drools + robocodedrools + robocode
drools + robocode
 
J Boss Drools
J Boss DroolsJ Boss Drools
J Boss Drools
 
Palestra EDTED: Análise de Negócios e Scrum
Palestra EDTED: Análise de Negócios e ScrumPalestra EDTED: Análise de Negócios e Scrum
Palestra EDTED: Análise de Negócios e Scrum
 
BRMS - Gestão de Regras - Introdução - Andre Venancio
BRMS -  Gestão de Regras - Introdução - Andre VenancioBRMS -  Gestão de Regras - Introdução - Andre Venancio
BRMS - Gestão de Regras - Introdução - Andre Venancio
 
Pedaços de XP, FDD, Scrum e Kanban na Análise de Negócios e Engenharia de Req...
Pedaços de XP, FDD, Scrum e Kanban na Análise de Negócios e Engenharia de Req...Pedaços de XP, FDD, Scrum e Kanban na Análise de Negócios e Engenharia de Req...
Pedaços de XP, FDD, Scrum e Kanban na Análise de Negócios e Engenharia de Req...
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 Overview
 
Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)
 
Ideation in service design. Ideation methods and tools
Ideation in service design. Ideation methods and toolsIdeation in service design. Ideation methods and tools
Ideation in service design. Ideation methods and tools
 
Como demonstrar ROI das entregas de valor com Business Case
Como demonstrar ROI das entregas de valor com Business Case Como demonstrar ROI das entregas de valor com Business Case
Como demonstrar ROI das entregas de valor com Business Case
 
Análise de Negócio na Perspectiva de BI
Análise de Negócio na Perspectiva de BIAnálise de Negócio na Perspectiva de BI
Análise de Negócio na Perspectiva de BI
 
Resumo do Guia BABOK® 3
Resumo do Guia BABOK®  3 Resumo do Guia BABOK®  3
Resumo do Guia BABOK® 3
 
Experiência do usuário e emergência
Experiência do usuário e emergênciaExperiência do usuário e emergência
Experiência do usuário e emergência
 
75 exemplos de Modelagem e Prototipagem de negócios Inovadores
75 exemplos de Modelagem e Prototipagem de negócios Inovadores75 exemplos de Modelagem e Prototipagem de negócios Inovadores
75 exemplos de Modelagem e Prototipagem de negócios Inovadores
 

Similar to drools

J Boss Rules Mgjug V2
J Boss Rules Mgjug V2J Boss Rules Mgjug V2
J Boss Rules Mgjug V2
Breno Barros
 
Aula 100823071954-phpapp01
Aula 100823071954-phpapp01Aula 100823071954-phpapp01
Aula 100823071954-phpapp01
cleytom
 
Documentação CakePHP - Português Br
Documentação CakePHP -  Português BrDocumentação CakePHP -  Português Br
Documentação CakePHP - Português Br
Luiz Ladeira
 
Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010
Alexandre Tarifa
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
Rômulo Jales
 

Similar to drools (20)

Jboss Night
Jboss NightJboss Night
Jboss Night
 
J Boss Rules Mgjug V2
J Boss Rules Mgjug V2J Boss Rules Mgjug V2
J Boss Rules Mgjug V2
 
Tomada de decisões com xPaaS aplicada ao fantasy game oficial do campeonato b...
Tomada de decisões com xPaaS aplicada ao fantasy game oficial do campeonato b...Tomada de decisões com xPaaS aplicada ao fantasy game oficial do campeonato b...
Tomada de decisões com xPaaS aplicada ao fantasy game oficial do campeonato b...
 
Oracleplsql
OracleplsqlOracleplsql
Oracleplsql
 
Business Rules com Drools
Business Rules com DroolsBusiness Rules com Drools
Business Rules com Drools
 
Introdução a Grails: Um framework veloz e poderoso
Introdução a Grails: Um framework veloz e poderosoIntrodução a Grails: Um framework veloz e poderoso
Introdução a Grails: Um framework veloz e poderoso
 
Projeto de Software (Protótipo de Software).
Projeto de Software (Protótipo de Software).Projeto de Software (Protótipo de Software).
Projeto de Software (Protótipo de Software).
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
Extreme 360 Arquitetura para Aplicações Delphi Spring4D - OOP e RAD
Extreme 360 Arquitetura para Aplicações Delphi Spring4D - OOP e RADExtreme 360 Arquitetura para Aplicações Delphi Spring4D - OOP e RAD
Extreme 360 Arquitetura para Aplicações Delphi Spring4D - OOP e RAD
 
Os 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPOs 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAP
 
Aula 100823071954-phpapp01
Aula 100823071954-phpapp01Aula 100823071954-phpapp01
Aula 100823071954-phpapp01
 
DDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquiteturaDDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquitetura
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - Linux
 
Documentação CakePHP - Português Br
Documentação CakePHP -  Português BrDocumentação CakePHP -  Português Br
Documentação CakePHP - Português Br
 
Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
Construindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosConstruindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutos
 

More from Eduardo Oliveira

Cidades Inteligentes - Civic Hacking - Open Data
Cidades Inteligentes - Civic Hacking - Open DataCidades Inteligentes - Civic Hacking - Open Data
Cidades Inteligentes - Civic Hacking - Open Data
Eduardo Oliveira
 
Ponteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaPonteiros e Alocação Dinâmica
Ponteiros e Alocação Dinâmica
Eduardo Oliveira
 

More from Eduardo Oliveira (10)

Distributed and heterogeneous data analysis for smart urban planning
Distributed and heterogeneous data analysis for smart urban planningDistributed and heterogeneous data analysis for smart urban planning
Distributed and heterogeneous data analysis for smart urban planning
 
UCD Process
UCD ProcessUCD Process
UCD Process
 
Physical Computing and IoT
Physical Computing and IoTPhysical Computing and IoT
Physical Computing and IoT
 
Recife as a Smart and Playable City
Recife as a Smart and Playable CityRecife as a Smart and Playable City
Recife as a Smart and Playable City
 
Cidades Inteligentes - Civic Hacking - Open Data
Cidades Inteligentes - Civic Hacking - Open DataCidades Inteligentes - Civic Hacking - Open Data
Cidades Inteligentes - Civic Hacking - Open Data
 
Dispositivos Móveis: Uma Revolução na Educação
Dispositivos Móveis: Uma Revolução na EducaçãoDispositivos Móveis: Uma Revolução na Educação
Dispositivos Móveis: Uma Revolução na Educação
 
Cidades Inteligentes
Cidades InteligentesCidades Inteligentes
Cidades Inteligentes
 
Ponteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaPonteiros e Alocação Dinâmica
Ponteiros e Alocação Dinâmica
 
IHC 2011 - Widgets Internship
IHC 2011 - Widgets InternshipIHC 2011 - Widgets Internship
IHC 2011 - Widgets Internship
 
EAD no Brasil
EAD no BrasilEAD no Brasil
EAD no Brasil
 

Recently uploaded

421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
LeloIurk1
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
RavenaSales1
 

Recently uploaded (20)

Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...
Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...
Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
praticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médiopraticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médio
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 

drools

  • 1. Instituto de Inovação com TIC Drools Expert - um framework gerenciador de regras de negócio Inovação é com a gente! Eduardo Araújo Oliveira (eao@cesar.org.br) Anderson Neves (afrdn@cesar.org.br) slide 1
  • 2. 2
  • 3. Drools O que é? Drools is a business rule management system (BRMS) with a forward chaining inference based rules engine, more correctly known as a production rule system, using an enhanced implementation of the Rete algorithm. 3
  • 4. Drools - The Business Logic integration Platform - 5 Módulos integrados - Desde 2001 - Jboss e Red Hat - Open Source - Plugin para Eclipse - http://www.jboss.org/drools 4
  • 5. Drools - motivação • Implementa ferramentas para decisões complexas de negócio • Problemas dos métodos tradicionais: – If-else (Código espaguete) – Alterações geralmente precisam de recompilação e redeploy – Não separa código de infraestrutura das regras de negócio 5
  • 6. Drools - motivação • Permite implementar a lógica de negócio de uma maneira mais declarativa • Separa o conhecimento do código de infraestrutura • Fornece diferentes ferramentas para cada tipo de lógica de negócio – Decisões a partir de dados – Processos de negócio – Decisões a partir de eventos 6
  • 7. Drools 7
  • 8. Drools Totalmente integrável com Java – Integração transparente através de um plug-in do Eclipse; – Pode ler classes Java nas condições das regras; – Pode chamar métodos de Java na ação das regras; 8
  • 9. Drools Vantagens – Fácil entendimento – Maior facilidade de manutenção – Desempenho razoável – Quantidade de regras vs performance – Requisitos traduzidos em regras 9
  • 10. Drools java public boolean invalidarMatricula(Aluno aluno) { if (aluno.getIdade() < 18) { aluno.getMatricula().setValida(false); return true; } return false; } drools rule “Invalidar matricula aluno" when $aluno : Aluno(idade < 18) then $aluno. getMatricula().setValida(false); end 10
  • 11. Drools Vantagens das regras – Regras rodam em uma camada separada do código nativo da aplicação – Podem ser expressas em uma linguagem diferente, mais natural (DSL) – Facilidade de manutenção e leitura – Introduz a possibilidade do próprio analista de negócios realizar a autoria e manutenção das regras sabendo exatamente como serão interpretadas pelo sistema 11
  • 12. Drools Desvantagens – Requer uma curva de aprendizado – Entender minimamente como funciona uma engine de regras (máquina de inferência) – As regras podem gerar recursão, que devem ser tratadas pelo desenvolvedor – Em casos de conflitos o desenvolvedor tem que escolher qual tratamento usar – Consumo de memória 12
  • 13. Performance Characteristic Sacrifices memory for speed 13
  • 14. Drools License • JBoss Rules - Apache License v.2.0 The Apache license is particularly business-friendly, and you can take the code and use it in pretty much any way you want, as long as you acknowledge that your product was 'built using Drools'. You don't have to publish your changes or additions (as another famous open source license, the GPL, requires you to do). 14
  • 15. Drools Módulos 15
  • 16. Drools Engine de regras Linguagem para regras (DRL) Linguagem específica do domínio (DSL) Integrado ao Java É o módulo principal, que compreende o motor de regras e linguagem de regras. Raciocínio baseado em regras http://www.jboss.org/drools/drools-expert.html 16
  • 17. Drools Workflows BPMN Editor gráfico do fluxograma Extensível Para criar, executar e monitorar processos de negócio Adiciona as capacidades para lidar com processos de negócio http://www.jboss.org/drools/drools-flow.html 17
  • 18. Drools Processamento de Eventos Complexos (CEP) - Eventos no tempo Integrado ao Drools Expert Para sistemas de: – Detecção de fraudes – Aprovação de crédito Adiciona capacidades para realizar o CEP (Complex Event Processing). Decisões a partir de eventos http://www.jboss.org/drools/drools-fusion.html 18
  • 19. Drools BRMS (não só regras) Repositório centralizado do conhecimento Aplicação Web Versionamento Foco nas regras de negócio Ferramenta para Gerência das regras de negócio (BRMS). http://www.jboss.org/drools/drools-guvnor.html 19
  • 20. Drools Problemas com restrições Problemas como: – Escalas de empregados – Horário escolar – Caixeiro viajante http://www.jboss.org/drools/drools-fusion.html 20
  • 21. Drools 21
  • 22. Sistemas de Produção • Fatos: x, y • Regras: x & y => p • Encadeamento para a frente (Forward chaining) – Dados x e y, derive então p • Encadeamento para trás (Backward chaining) – p é verdade? Então verificarei x e y. – Prolog
  • 23. Módulos de Sistemas de Produção • Base de Regras ou memória permanente – regras se-então e fatos conhecidos • Memória de Trabalho ou temporária – percepções do agente, fatos iniciais e gerados a partir da BR pelo mecanismo de inferência • Mecanismo (motor) de Inferência – determina o método de raciocínio utilizado (progressivo ou regressivo) – Executa a busca com casamento (unificação) – resolve conflitos e executa ações.
  • 25. Como funciona? • Working Memory - Memória de Trabalho – É onde residem os fatos. • Production Memory - Base de Conhecimento – É onde reside todo o conhecimento de negócio (regras). • Pattern Matcher - Reconhecedor de padrões – Responsável por casar os fatos na memória de trabalho com as condições das regras e criar ativações a partir dos casamentos. • Agenda – Responsável pela ordenação das ativações para execução. slide 25
  • 27. Conceitos Básicos Fatos: • São objetos que representam um determinado estado do domínio Regras de negócio • Toda regra é representada por dois elementos principais, seguindo a sintaxe: quando <condições (LHS)> então <ações (RHS)>
  • 28. Conceitos Básicos • Representam conhecimento com pares condição- ação – Se condição (ou premissa ou antecedente) ocorre então ação (resultado, conclusão ou conseqüente) deverá ocorrer. • Regras de produção produzem novos fatos a partir dos fatos e regras da PM. – Esses novos fatos passam a fazer parte da WM – Novas regras da PM podem ser disparadas • Lógica de primeira ordem
  • 29. Drools Expert - Conceitos Básicos package bank.model; rule "basic rule" when // condition Account( balance < 100 ) then // consequence System.out.println("Account balance is less than 100"); end
  • 30. Drools Expert - Conceitos Básicos O package funciona como um namespace – Nomes de regras em um pacote tem que ser únicas basic rule é o nome da regra when indica a condição (premissa) – LHS (Left Hand Side) then indica a consequência da regra – RHS (Right Hand Side) // é usado para comentários
  • 31. Drools Expert - Conceitos Básicos Várias condições Account( balance == 200 ) Customer( name == "John" ) Variáveis nas regras $account : Account( $type : type ) Tipos – String Customer( name matches "[A-Z][a-z]+" ) – Date Account( dateCreated > "01-Jan-2008" ) – Boolean Transaction( approved == true ) – Enum Account( type == Account.Type.SAVINGS ) Comentários #Comentário de única linha //Comentário de única linha /*Comentário de várias linhas*/
  • 32. Drools Expert - Conceitos Básicos Imports import com.mycompany.mypackage.MyClass; import com.mycompany.anotherPackage.*; Variáveis Globais Funções function double calculateSquare(double value) { return value * value; } Condição da regra – And Customer( name == "John", age < 26 ) – Or Customer( name == "John" || age < 26 ) Customer( age < 26 || > 70 ) – Not not Account( type == Account.Type.SAVINGS ) – Exists exists Account( type == Account.Type.SAVINGS )
  • 33. Drools Expert - Conceitos Básicos Quando todas as condições de uma regra são satisfeitas, a regra é ativada Uma regra ativada é disparada, segundo a estratégia de resolução de conflito A execução das regras podem ativar outras regras O processo é repetido até que nenhuma regra seja ativada
  • 34. Drools Expert - Conceitos Básicos Alguns comandos usados na consequência da regra – update(objeto); – insert(new Objeto()); – insertLogical(new Objeto()); – retract(objeto); – drools.halt(); – drools.getRule().getName(); – kcontext.getKnowledgeRuntime().halt(); http://www.ibm.com/developerworks/java/library/j-drools/
  • 35. Drools Expert - Conceitos Básicos Alguns atributos das regras – salience (prioridade) Default é 0 salience 100 – no-loop – date-effective date-effective "01-Jan-2011” – date-expires date-expires "01-Jan-2011" – duration duration 3000 http://www.ibm.com/developerworks/java/library/j-drools/
  • 36. Exemplos Hello World 36
  • 37. Exemplos 37
  • 38. Exemplos 38
  • 39. DSL Domain Specific Languages O motor de regras possui uma poderosa maneira de mapear sua linguagem nativa, expressa nos drl's, para uma linguagem mais natural, como mostrada nos primeiros exemplos. Este mapeamento se dá através das Domain Specific Languages, ou dsl's. dsl´s são expressas em arquivos .dsl, com uma sintaxe bastante simples, bem parecida com um arquivo .properties 39
  • 40. DSL Domain Specific Languages por exemplo: [keyword]rule=regra [keyword]when=quando [keyword]then=então [keyword]end=fim [when]O Aluno em questão possui=a : Aluno($pf : pessoaFisica) pf : PessoaFisica($p : pessoa) from $pf p : Pessoa($dataNasc: dataNascimento, $nome : nome) from $p [when]- idade menor que {idadeMinima}=eval( subtraiData(dataAtual, $dataNasc) < {idadeMinima} ) [then]Invalidar matrícula=mensagemMenorDeIdade($nome); a.getMatricula().invalidar(); 40
  • 41. DSL A regra anterior poderia ser reescrita da seguinte maneira: regra "deve ser maior de idade" salience 0 ruleflow-group "validacao" quando O aluno em questão possui - idade menor que 18 então Invalidar matrícula fim 41
  • 42. Exemplos http://imasters.com.br/artigo/12444/desenvolvimento/d e_forca_ao_usuario_com_o_drools_parte_1/ http://imasters.com.br/artigo/12708/java/de_forca_ao_ usuario_com_drools_parte_2/ http://imasters.com.br/artigo/15646/desenvolvimento/d e-forca-ao-usuario-com-drools-parte-03/ códigos: http://diegopacheco.svn.beanstalkapp.com/sandbox/trunk/ JBossDrools-test/src/com/blogspot/diegopacheco/drools/ 42
  • 43. perguntas ??? Eduardo Araújo Oliveira (eao@cesar.org.br) Anderson Neves (afrdn@cesar.org.br)