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 topic 13 html validation tools
Web topic 13  html validation toolsWeb topic 13  html validation tools
Web topic 13 html validation toolsCK Yang
 
Xml and xml processor
Xml and xml processorXml and xml processor
Xml and xml processorHimanshu Soni
 
XML-Extensible Markup Language
XML-Extensible Markup Language XML-Extensible Markup Language
XML-Extensible Markup Language Ann Joseph
 
JBoss Drools - Pure Java Rule Engine
JBoss Drools - Pure Java Rule EngineJBoss Drools - Pure Java Rule Engine
JBoss Drools - Pure Java Rule EngineAnil Allewar
 
Recomendaciones para la implementación de Software
Recomendaciones para la implementación de SoftwareRecomendaciones para la implementación de Software
Recomendaciones para la implementación de SoftwarePSL Software
 
Windows Server 2008 Active Directory
Windows Server 2008 Active DirectoryWindows Server 2008 Active Directory
Windows Server 2008 Active Directoryanilinvns
 
Document Object Model
Document Object ModelDocument Object Model
Document Object ModelMayur Mudgal
 
Html notes with Examples
Html notes with ExamplesHtml notes with Examples
Html notes with Examplesisha
 
Trabajo analisis y diseño de sistemas
Trabajo analisis y diseño de sistemasTrabajo analisis y diseño de sistemas
Trabajo analisis y diseño de sistemasCanachejuan
 
Frappé Framework - A Full Stack Web Framework
Frappé Framework - A Full Stack Web FrameworkFrappé Framework - A Full Stack Web Framework
Frappé Framework - A Full Stack Web Frameworkrushabh_mehta
 

What's hot (20)

REST vs SOAP
REST vs SOAPREST vs SOAP
REST vs SOAP
 
Web topic 13 html validation tools
Web topic 13  html validation toolsWeb topic 13  html validation tools
Web topic 13 html validation tools
 
Xml and xml processor
Xml and xml processorXml and xml processor
Xml and xml processor
 
XML
XMLXML
XML
 
Jdbc ppt
Jdbc pptJdbc ppt
Jdbc ppt
 
XML
XMLXML
XML
 
XML-Extensible Markup Language
XML-Extensible Markup Language XML-Extensible Markup Language
XML-Extensible Markup Language
 
Html hyperlinks
Html hyperlinksHtml hyperlinks
Html hyperlinks
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Model
 
JBoss Drools - Pure Java Rule Engine
JBoss Drools - Pure Java Rule EngineJBoss Drools - Pure Java Rule Engine
JBoss Drools - Pure Java Rule Engine
 
Recomendaciones para la implementación de Software
Recomendaciones para la implementación de SoftwareRecomendaciones para la implementación de Software
Recomendaciones para la implementación de Software
 
Windows Server 2008 Active Directory
Windows Server 2008 Active DirectoryWindows Server 2008 Active Directory
Windows Server 2008 Active Directory
 
Servlets api overview
Servlets api overviewServlets api overview
Servlets api overview
 
Simple object access protocol(soap )
Simple object access protocol(soap )Simple object access protocol(soap )
Simple object access protocol(soap )
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Model
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Html notes with Examples
Html notes with ExamplesHtml notes with Examples
Html notes with Examples
 
Trabajo analisis y diseño de sistemas
Trabajo analisis y diseño de sistemasTrabajo analisis y diseño de sistemas
Trabajo analisis y diseño de sistemas
 
Web services
Web servicesWeb services
Web services
 
Frappé Framework - A Full Stack Web Framework
Frappé Framework - A Full Stack Web FrameworkFrappé Framework - A Full Stack Web Framework
Frappé Framework - A Full Stack Web Framework
 

Viewers also liked

BRMS - Business Rules Management System
BRMS - Business Rules Management SystemBRMS - Business Rules Management System
BRMS - Business Rules Management SystemSamuel Tauil
 
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)Edgar Silva
 
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 RegrasDextra
 
Red Hat Roadshow 2009 - Drools
Red Hat Roadshow 2009 - DroolsRed Hat Roadshow 2009 - Drools
Red Hat Roadshow 2009 - DroolsRafael Benevides
 
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 ScrumGuilherme Tossulino
 
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 VenancioAndré Venâncio
 
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...Rafael Barbosa Camargo
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 OverviewMark Proctor
 
Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Mark Proctor
 
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 toolsKatarzyna Młynarczyk
 
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 Rildo (@rildosan) Santos
 
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ênciaUTFPR
 
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 InovadoresJoão Paulo Nogueira
 

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 V2Breno Barros
 
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...Bruno Rossetto Machado
 
Business Rules com Drools
Business Rules com DroolsBusiness Rules com Drools
Business Rules com Droolsrafaelliu
 
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 poderosoBruno Lopes
 
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).Italo Argolo
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
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 RADCesar Romero
 
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 SAPIssac Nolis Ohasi
 
Aula 100823071954-phpapp01
Aula 100823071954-phpapp01Aula 100823071954-phpapp01
Aula 100823071954-phpapp01cleytom
 
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 à arquiteturaGraziella Bonizi
 
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 FrameworkFlávio Lisboa
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxDell Technologies
 
Documentação CakePHP - Português Br
Documentação CakePHP -  Português BrDocumentação CakePHP -  Português Br
Documentação CakePHP - Português BrLuiz Ladeira
 
Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Alexandre 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
 
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 minutosRafael Chaves
 

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

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 planningEduardo Oliveira
 
Physical Computing and IoT
Physical Computing and IoTPhysical Computing and IoT
Physical Computing and IoTEduardo Oliveira
 
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 CityEduardo Oliveira
 
Cidades Inteligentes - Civic Hacking - Open Data
Cidades Inteligentes - Civic Hacking - Open DataCidades Inteligentes - Civic Hacking - Open Data
Cidades Inteligentes - Civic Hacking - Open DataEduardo Oliveira
 
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çãoEduardo Oliveira
 
Ponteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaPonteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaEduardo Oliveira
 
IHC 2011 - Widgets Internship
IHC 2011 - Widgets InternshipIHC 2011 - Widgets Internship
IHC 2011 - Widgets InternshipEduardo 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

Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFtimaMoreira35
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇJaineCarolaineLima
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
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.Mary Alvarenga
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
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!Ilda Bicacro
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...licinioBorges
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxTainTorres4
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
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 APRENDIZAGEMHELENO FAVACHO
 
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.pdfLeloIurk1
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 

Recently uploaded (20)

Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdf
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
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.
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
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!
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
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
 
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
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 

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)