SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler 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)

Mais conteúdo relacionado

Mais procurados

Fundamental and concept of environmental geology
Fundamental and concept of environmental geologyFundamental and concept of environmental geology
Fundamental and concept of environmental geology
Ghassan Hadi
 
Global Water Distribution & Sources of Water.ppt
Global Water Distribution & Sources of Water.pptGlobal Water Distribution & Sources of Water.ppt
Global Water Distribution & Sources of Water.ppt
AmosMutua3
 
Geomorphology applications
Geomorphology applicationsGeomorphology applications
Geomorphology applications
vyshalik
 
Introduction to aquifers
Introduction to aquifersIntroduction to aquifers
Introduction to aquifers
India Water Portal
 

Mais procurados (20)

Dam Of India.. Awesome!!!Ppt
Dam Of India.. Awesome!!!PptDam Of India.. Awesome!!!Ppt
Dam Of India.. Awesome!!!Ppt
 
weather_forecasting_Archana_ppt.pptx
weather_forecasting_Archana_ppt.pptxweather_forecasting_Archana_ppt.pptx
weather_forecasting_Archana_ppt.pptx
 
Soil Moisture 301: Hydraulic Conductivity
Soil Moisture 301: Hydraulic ConductivitySoil Moisture 301: Hydraulic Conductivity
Soil Moisture 301: Hydraulic Conductivity
 
Trends in extreme events of rainfall in low country wet zone of Sri Lanka
Trends in extreme events of rainfall in low country wet zone of Sri LankaTrends in extreme events of rainfall in low country wet zone of Sri Lanka
Trends in extreme events of rainfall in low country wet zone of Sri Lanka
 
Soil water potential
Soil water potential Soil water potential
Soil water potential
 
Fundamental and concept of environmental geology
Fundamental and concept of environmental geologyFundamental and concept of environmental geology
Fundamental and concept of environmental geology
 
Hydrological cycle
Hydrological cycleHydrological cycle
Hydrological cycle
 
Global Water Distribution & Sources of Water.ppt
Global Water Distribution & Sources of Water.pptGlobal Water Distribution & Sources of Water.ppt
Global Water Distribution & Sources of Water.ppt
 
Geomorphology applications
Geomorphology applicationsGeomorphology applications
Geomorphology applications
 
Biological sickness of soil
Biological sickness of soilBiological sickness of soil
Biological sickness of soil
 
Soil Types Found In India
Soil Types Found In IndiaSoil Types Found In India
Soil Types Found In India
 
Updating the curve number method for rainfall runoff estimation
Updating the curve number method for rainfall runoff estimationUpdating the curve number method for rainfall runoff estimation
Updating the curve number method for rainfall runoff estimation
 
Water Management
Water ManagementWater Management
Water Management
 
SQL Server運用実践 - 3年間80台の運用経験から20の教訓
SQL Server運用実践 - 3年間80台の運用経験から20の教訓SQL Server運用実践 - 3年間80台の運用経験から20の教訓
SQL Server運用実践 - 3年間80台の運用経験から20の教訓
 
Groundwater:
Groundwater: Groundwater:
Groundwater:
 
GROUNDWATER PROVINCES OF INDIA AND ODISHA.pptx
GROUNDWATER PROVINCES OF INDIA AND ODISHA.pptxGROUNDWATER PROVINCES OF INDIA AND ODISHA.pptx
GROUNDWATER PROVINCES OF INDIA AND ODISHA.pptx
 
How to Use Plant-Water Relations and Atmospheric Demand for Simplified Water ...
How to Use Plant-Water Relations and Atmospheric Demand for Simplified Water ...How to Use Plant-Water Relations and Atmospheric Demand for Simplified Water ...
How to Use Plant-Water Relations and Atmospheric Demand for Simplified Water ...
 
Hydraulic conductivity( Darcy's law)
Hydraulic conductivity( Darcy's law)Hydraulic conductivity( Darcy's law)
Hydraulic conductivity( Darcy's law)
 
Introduction to aquifers
Introduction to aquifersIntroduction to aquifers
Introduction to aquifers
 
Lateritic Soils and Constraints in crop production
Lateritic Soils and Constraints in crop productionLateritic Soils and Constraints in crop production
Lateritic Soils and Constraints in crop production
 

Destaque

Destaque (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
 

Semelhante a 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
 

Semelhante a 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
 

Mais de 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
 

Mais de 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
 

Último

Plano de aula ensino fundamental escola pública
Plano de aula ensino fundamental escola públicaPlano de aula ensino fundamental escola pública
Plano de aula ensino fundamental escola pública
anapsuls
 
clubinho-bio-2.pdf vacinas saúde importância
clubinho-bio-2.pdf vacinas saúde importânciaclubinho-bio-2.pdf vacinas saúde importância
clubinho-bio-2.pdf vacinas saúde importância
LuanaAlves940822
 

Último (20)

Meu corpo - Ruth Rocha e Anna Flora livro
Meu corpo - Ruth Rocha e Anna Flora livroMeu corpo - Ruth Rocha e Anna Flora livro
Meu corpo - Ruth Rocha e Anna Flora livro
 
O que é uma Revolução Solar. tecnica preditiva
O que é uma Revolução Solar. tecnica preditivaO que é uma Revolução Solar. tecnica preditiva
O que é uma Revolução Solar. tecnica preditiva
 
Nós Propomos! Infraestruturas em Proença-a-Nova
Nós Propomos! Infraestruturas em Proença-a-NovaNós Propomos! Infraestruturas em Proença-a-Nova
Nós Propomos! Infraestruturas em Proença-a-Nova
 
Enunciado_da_Avaliacao_1__Sociedade_Cultura_e_Contemporaneidade_(ED70200).pdf
Enunciado_da_Avaliacao_1__Sociedade_Cultura_e_Contemporaneidade_(ED70200).pdfEnunciado_da_Avaliacao_1__Sociedade_Cultura_e_Contemporaneidade_(ED70200).pdf
Enunciado_da_Avaliacao_1__Sociedade_Cultura_e_Contemporaneidade_(ED70200).pdf
 
As Mil Palavras Mais Usadas No Inglês (Robert de Aquino) (Z-Library).pdf
As Mil Palavras Mais Usadas No Inglês (Robert de Aquino) (Z-Library).pdfAs Mil Palavras Mais Usadas No Inglês (Robert de Aquino) (Z-Library).pdf
As Mil Palavras Mais Usadas No Inglês (Robert de Aquino) (Z-Library).pdf
 
UFCD_9184_Saúde, nutrição, higiene, segurança, repouso e conforto da criança ...
UFCD_9184_Saúde, nutrição, higiene, segurança, repouso e conforto da criança ...UFCD_9184_Saúde, nutrição, higiene, segurança, repouso e conforto da criança ...
UFCD_9184_Saúde, nutrição, higiene, segurança, repouso e conforto da criança ...
 
PLANO DE ESTUDO TUTORADO COMPLEMENTAR 1 ANO 1 BIMESTRE.pdf
PLANO DE ESTUDO TUTORADO COMPLEMENTAR 1 ANO 1 BIMESTRE.pdfPLANO DE ESTUDO TUTORADO COMPLEMENTAR 1 ANO 1 BIMESTRE.pdf
PLANO DE ESTUDO TUTORADO COMPLEMENTAR 1 ANO 1 BIMESTRE.pdf
 
Diálogo Crátilo de Platão sócrates daspdf
Diálogo Crátilo de Platão sócrates daspdfDiálogo Crátilo de Platão sócrates daspdf
Diálogo Crátilo de Platão sócrates daspdf
 
Nós Propomos! Canil/Gatil na Sertã - Amigos dos Animais
Nós Propomos! Canil/Gatil na Sertã - Amigos dos AnimaisNós Propomos! Canil/Gatil na Sertã - Amigos dos Animais
Nós Propomos! Canil/Gatil na Sertã - Amigos dos Animais
 
Trabalho sobre as diferenças demograficas entre EUA e Senegal
Trabalho sobre as diferenças demograficas entre EUA e SenegalTrabalho sobre as diferenças demograficas entre EUA e Senegal
Trabalho sobre as diferenças demograficas entre EUA e Senegal
 
livro para educação infantil conceitos sensorial
livro para educação infantil conceitos sensoriallivro para educação infantil conceitos sensorial
livro para educação infantil conceitos sensorial
 
Apresentação sobre Robots e processos educativos
Apresentação sobre Robots e processos educativosApresentação sobre Robots e processos educativos
Apresentação sobre Robots e processos educativos
 
04_GuiaDoCurso_Neurociência, Psicologia Positiva e Mindfulness.pdf
04_GuiaDoCurso_Neurociência, Psicologia Positiva e Mindfulness.pdf04_GuiaDoCurso_Neurociência, Psicologia Positiva e Mindfulness.pdf
04_GuiaDoCurso_Neurociência, Psicologia Positiva e Mindfulness.pdf
 
Aula 5 - Fluxo de matéria e energia nos ecossistemas.ppt
Aula 5 - Fluxo de matéria e energia nos ecossistemas.pptAula 5 - Fluxo de matéria e energia nos ecossistemas.ppt
Aula 5 - Fluxo de matéria e energia nos ecossistemas.ppt
 
Slide - HIV (1) edit.pptx hiv em crianças
Slide - HIV (1) edit.pptx hiv em criançasSlide - HIV (1) edit.pptx hiv em crianças
Slide - HIV (1) edit.pptx hiv em crianças
 
Plano de aula ensino fundamental escola pública
Plano de aula ensino fundamental escola públicaPlano de aula ensino fundamental escola pública
Plano de aula ensino fundamental escola pública
 
clubinho-bio-2.pdf vacinas saúde importância
clubinho-bio-2.pdf vacinas saúde importânciaclubinho-bio-2.pdf vacinas saúde importância
clubinho-bio-2.pdf vacinas saúde importância
 
análise obra Nós matamos o cão Tinhoso.pdf
análise obra Nós matamos o cão Tinhoso.pdfanálise obra Nós matamos o cão Tinhoso.pdf
análise obra Nós matamos o cão Tinhoso.pdf
 
Enunciado_da_Avaliacao_1__Sistemas_de_Informacoes_Gerenciais_(IL60106).pdf
Enunciado_da_Avaliacao_1__Sistemas_de_Informacoes_Gerenciais_(IL60106).pdfEnunciado_da_Avaliacao_1__Sistemas_de_Informacoes_Gerenciais_(IL60106).pdf
Enunciado_da_Avaliacao_1__Sistemas_de_Informacoes_Gerenciais_(IL60106).pdf
 
Slides Lição 9, CPAD, Resistindo à Tentação no Caminho, 2Tr24.pptx
Slides Lição 9, CPAD, Resistindo à Tentação no Caminho, 2Tr24.pptxSlides Lição 9, CPAD, Resistindo à Tentação no Caminho, 2Tr24.pptx
Slides Lição 9, CPAD, Resistindo à Tentação no Caminho, 2Tr24.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)