An Open Source Java Rules Engine



Documentos relacionados
Sistemas Baseados em Regras. Profa. Patrícia Dockhorn Costa

Drools Desacoplando as regras de negócio do código da aplicação. Raphael Duarte Paiva

Desenvolvimento de Sistemas BPMS. Jhonatas Vicente de Jesus

Prática em Laboratório N.04 (Parte 01) Criando uma aplicação composta a partir de um serviço Web

Implementação de uma Alçada Decisória usando a Suíte SOA IBM BPM

Programação de Computadores III

Orientação a Objetos

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Sistemas especialistas

Regras de Negócio. Toda empresa possui uma série de processos de

Introdução a Computação

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Gerenciador de Log. Documento Visão. Projeto Integrador 2015/2. Engenharia de Software. Versão 2.0. Engenharia de Software

Sistemas de Informação

Construindo portais com Plone

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Interpretação e Compilação de Linguagens de Programação Sintaxe e Semântica

SOP aplicado em um jogo tipo de corrida usando a arquitetura cliente e servidor

Ataques Polimorficos

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

CURSO DE PROGRAMAÇÃO EM JAVA

Wesley Vaz, MSc., CISA

4 O Workflow e a Máquina de Regras

Pratica JFlex. Prática criando o primeiro analisador léxico

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Sistemas Colaborativos & Workflow / DAS 5316

LINGUAGEM ORIENTADA A OBJETOS

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Tecnologias para apresentação de dados - Java Script. Aécio Costa

Gerenciamento do Escopo do Projeto Produto do Projeto

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

Java. Marcio de Carvalho Victorino

Adotando OpenEdge Architect. Luciano Oliveira Sr. Instructor, Consultant Global Field Services

Uma visão geral da versão 2.0 do BABOK

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

Introdução a Java. Hélder Nunes

Slides_Java_1 !"$ % & $ ' ' Output: Run java. Compile javac. Name of program. Must be the same as name of file. Java source code.

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Parte II Introdução a Linguagens de Programação

Segurança de Redes. Firewall. Filipe Raulino

A Linguagem Pascal e o Ambiente de Programação Dev-Pascal. Introdução à Ciência da Computação I

Módulo de Ampliação de Expressividade para a Ferramenta jbpm. Aluno: Diorbert Corrêa Pereira Orientador: João Paulo A. Almeida

Padrões de Aplicações Empresariais

Treinamento BPM e BPMN Apresentação Executiva

Programação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve

Orientação a Objetos

Sistemas Baseados em Regras. Profa. Patrícia Dockhorn Costa

As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes:

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

Parte I. Demoiselle Mail

Linguagem de Programação Introdução a Linguagem Java

Engenharia de Requisitos Estudo de Caso

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

IV PLANO DE GERENCIAMENTO DE TEMPO

Logado no OracleXE vamos acessar a opção:

Laboratório 3. Configurando o Serviço DNS

2 Orientação a objetos na prática

Linguagem de Programação Procedural (VB) Prof. MSc Eng Marcelo Bianchi AULA 01 - INTRODUÇÃO AO VB

Fundamentos de Programação II. Introdução à linguagem de programação C++

Plugins TerraView. Última revisão: 12/12/32006 Versão TerraLib: 3.1.4

Os Desafios da Segurança no Desenvolvimento com Métodos Ágeis. OWASP Education Project. The OWASP Foundation

Universidade da Beira Interior. Sistemas Distribuídos /2015 Curso: Engª Informática. Folha 11. JAX-RS: Java API for RESTful Web Services

O nome ANT é uma sigla para another neat tool (mais uma ferramenta organizada), segundo seu autor James Duncan Davidson.

CONVENÇÃO DE CÓDIGO JAVA

Serviços: API REST. URL - Recurso

INTRODUÇÃO OBJECT PASCAL/DELPHI

JSP - ORIENTADO A OBJETOS

Triggers no PostgreSQL

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Capítulo 25. Gerenciamento de Configuração. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D.

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Algoritmos e Programação Estruturada

Curso Técnico em Redes

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

As 100 melhores piadas de todos os tempos (Portuguese Edition)

Documentação EPL - Clientes

UML Aspectos de projetos em Diagramas de classes

1.6. Tratamento de Exceções

3 Modelo de Controle de Acesso no Projeto de Aplicações na Web Semântica

Desenvolvimento de aplicações Web. Java Server Pages

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Professor: Rômulo César BPMN

Introdução ao OpenUP (Open Unified Process)

Universidade Federal de Goiás Ciências da Computação Sistemas Operacionais 2

Relatorio do trabalho pratico 2

Lista 3 Exercícios de Gestão de Redes

Linguagens de Programação Bloco de Função, SFC e Texto Estruturado Automação Semestre 01/2015

Fundament n os s da platafo f rm r a. NE N T André Menegassi

Desenvolvimento Web TCC Turma A-1

Principais Comandos SQL Usados no MySql

2 Diagrama de Caso de Uso

2 Categorias Categories Todas as categorias de actividade são apresentadas neste espaço All activity categories are presented in this space

MODELAGEM DE PROCESSOS USANDO BPMN (BUSINESS PROCESS MODEL AND NOTATION) E IOT (INTERNET DAS COISAS)

Transcrição:

An Open Source Java Rules Engine Eduardo Araújo Oliveira slide 1 2 1

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 - Semântica em 2011 - Jboss e Red Hat - Open Source - Plugin para Eclipse - http://www.jboss.org/drools 4 2

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 Processos de negócio Eventos 6 3

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 4

Drools Vantagens Fácil entendimento Maior facilidade de manutenção Desempenho razoável Requisitos traduzidos em regras Reutilização 9 Drools java public void checamaiordeidade(aluno aluno) { Date datanascimento = aluno.getpessoafisica().getpessoa().getdatanascimento(); } if (subtrairdata(new Date(), datanascimento) < IDADE_MINIMA) { aluno.getmatricula().invalidar(); } else { aluno.getmatricula().validaridade(); } drools regra "Aluno deve ser maior de idade" quando O aluno em questão possui - idade menor que idade mínima então invalidar matrícula fim 10 5

Drools Vantagens das regras Regras rodam em uma camada acima do código nativo da aplicação Podem ser expressas em uma linguagem diferente, mais natural São compiladas para uma linguagem cujo o motor de regras as interpreta Linguagem mais próxima a linguagem natural 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 6

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). 13 Drools Módulos 14 7

Drools Módulos Engine de regras Linguagem para regras (DRL) Tabelas de decisão (xls e cvs) Linguagem específica do domínio (DSL) Integrado ao Java É o módulo principal, que compreende o motor de regras, linguagem de regras e a implementação do algoritmo de pattern matching. http://www.jboss.org/drools/drools-expert.html 15 Drools Módulos Workflows BPMN Editor gráfico do fluxograma Extensível Para criar, executar e monitorar processos de negócio Adiciona as capacidades para lidar com BPM http://www.jboss.org/drools/drools-flow.html 16 8

Drools Módulos Processamento de Eventos Complexos (CEP) - Eventos no tempo - Para sistemas de: Detecção de fraudes Aprovação de crédito Adiciona capacidades para realizar o CEP (Complex Event Processing). http://www.jboss.org/drools/drools-fusion.html 17 Drools Módulos BRMS (não só regras) Repositório centralizado do conhecimento Aplicação Web Versionamento Foco nas regras de negócio Inclui a ferramenta para Gerência de Regras de negócio (BRMS). http://www.jboss.org/drools/drools-guvnor.html 18 9

Drools Módulos Planejamento automático Problemas com restrições Problemas como: Escalas de empregados Horário escolar Caixeiro viajante http://www.jboss.org/drools/drools-fusion.html 19 Drools 20 10

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çãoaçã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 BC. Esses novos fatos passam a fazer parte da BC 11

Conceitos Básicos Exemplo de regra: package bank.model; rule "basic rule" when // condition Account( balance < 100 ) then // consequence System.out.println("Account balance is less than 100"); end 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 12

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( isapproved == 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*/ 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 ) 13

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 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/ 14

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/ Como funciona? 30 15

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 31 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/ 32 16

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. 17

Basic RETE Network 35 Funcionamento de um sistema de regras de produção As regras seriam a memória duradoura Os fatos seriam a memória de trabalho Ao usarmos as regras sobre os fatos, são derivados novos fatos O ciclo se repete até que não haja mais fatos a derivar Conflito: várias regras podem ser disparadas ao mesmo tempo 18

Performance Characteristic Sacrifices memory for speed 37 Exemplo Working Memory... Message message = new Message(); message.setmessage("hello World"); message.setstatus(message.hello); ksession.insert(message); 38 19

Exemplo Production Memory... rule "Hello World" when m : Message( status == Message.HELLO ) then m.setmessage( "Goodbye cruel world" ); m.setstatus( Message.GOODBYE ); update( m ); end 39 Jboss Rules A business rule is any bit of knowledge that can be expressed in the following format: When 'something' is true, Then do 'this'. Nothing more complicated than that. JSR-94. 40 20

Jboss Rules rule "One" #include attributes such as "salience" here... when #conditions then #actions end 41 Jboss Rules Examples of these rules are: When a football team wins a game, jump up and down and shout loudly When a staff member gets promoted, give them a pay rise of 10% When a person's salary is less than 30,000 dollars, apply a tax rate of 20% When somebody leaves the office before 4 pm, make sarcastic comment about 'taking a half-day vacation 42 21

Rule Engine When not to use a rule engine Don't use a rule engine if your application doesn't have much complexity. Don't use a rule engine for the first time on a project that has strict deadlines or is high-profile 43 Rule Engine When to use a rule engine The business logic changes often There are people who understand the business problem in great detail, but may not have the technical IT skills The problem may be too complex for other solutions You need an agile solution rule engines allow you to easily change the business logic in an iterative manner 44 22

Exemplos 45 46 23

24

49 package benevides rule "Ligar ar-condicionado do Rafael quando temperatura maior que 26 graus" when Casa( dono == "Rafael", arcondicionado: ArCondicionado ) Natureza( temperatura > 26 ) then arcondicionado.ligar(); end rule "Desligar ar-condicionado do Rafael quando temperatura menor que 20 graus" when Casa( dono == "Rafael", arcondicionado: ArCondicionado ) Natureza( temperatura < 20 ) then arcondicionado.desligar(); end rule "Ligar ar-condicionado do Frederico quando temperatura maior que 21 graus" when Casa( dono == "Frederico", arcondicionado: ArCondicionado ) Natureza( temperatura > 21 ) then arcondicionado.ligar(); end rule "Desligar ar-condicionado do Frederico quando temperatura menor que 18 graus" when Casa( dono == "Frederico", arcondicionado: ArCondicionado ) Natureza( temperatura < 18 ) then arcondicionado.desligar(); end 50 25

Para verificar o comportamento, vamos inserir na WorkingMemory do Drools as instâncias do objeto Casa (uma instância de cada cliente) e a cada alteração de temperatura, vamos atualizar a temperatura da instância da classe Natureza e também atualizar esta instância na WorkingMemory. 51 52 26

53 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 54 27

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(); 55 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 56 28

Drools + Protégé Drools + Protégé http://oogis.ru/component/option,com_remository/itemid,34/ func,fileinfo/id,15/lang,en/ DROOLS BASED SPATIAL SCENARIO SIMULATION PLUG-IN TO PROTEGE DroolsTab is a tab plug-in to the open source ontology editor Protege (http://protege.stanford.edu). It uses the open source geo-information system Java library OpenMap (http://openmap.bbn.com) and the open source Java RETE rule engine Drools (http://labs.jboss.com/drools/). 57 Drools An Open Source Java Rules Engine Eduardo Araújo Oliveira slide 58 29