Sistemas Baseados em Regras. Profa. Patrícia Dockhorn Costa pdcosta@inf.ufes.br www.inf.ufes.br/~pdcosta/ensino



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

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

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

Bases de Dados 2007/2008. Aula 9

Comandos de Manipulação


Programação de Computadores - I. Profª Beatriz Profº Israel

Transações Seguras em Bancos de Dados (MySQL)

NOME SEXO CPF NASCIMENTO SALARIO

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

UFG - Instituto de Informática

An Open Source Java Rules Engine

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

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

Resolvendo objeto-relacional impedance mismatch com hibernate

O EMF Eclipse Modeling Framework. Pasteur Ottoni de Miranda Junior

Prof.: Clayton Maciel Costa

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

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Tarefa Orientada 19 Triggers

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

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

Programação SQL. Introdução

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

Aula 1 Acesso a Banco de Dados

Programação com Acesso a Banco de Dados

Integridade dos Dados

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

Entity Beans CMP. O que é CMP? Criação de Entity Beans CMP Deployment no JBoss EJB-QL Exemplo Prático

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

PROGRAMAÇÃO ORIENTADA A OBJETOS

Criando uma agenda simples com NetBeans 6.5

JDBC. Prof. Márcio Bueno

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

Padrão Arquitetura em Camadas

Java na WEB Banco de Dados

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

FBV - Linguagem de Programação II. Um pouco sobre Java

Linguagem SQL (Parte I)

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Android e Bancos de Dados

Banco de Dados I Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli

Treinamento em Apache Spark com Scala - Fundamental

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Desenvolvimento Web com Framework Demoiselle versão 1.0

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

MANUAL INSTALAÇÃO WEB SERVICE

Classes Abstratas e Interfaces

Logado no OracleXE vamos acessar a opção:

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)

Sistemas de Informação

Introdução à Lógica de Programação (cont.)

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

3 Classes e instanciação de objectos (em Java)

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Faculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação

Pragmática das Linguagens de Programação 2004/2005

Projeto de Banco de Dados: Empresa X

Javascript 101. Parte 2

Programação Orientada a Objetos. Encapsulamento

Modulo IIa Extra: Object

PROGRAMAÇÃO II 4. ÁRVORE

CIÊNCIA E TECNOLOGIA DO RIO

MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL

Trabalho de Grupo Gestão de Projecto e Gestão de Processos de Negócio

INTRODUÇÃO À LINGUAGEM C++

COMANDO DA AERONÁUTICA ESCOLA DE ESPECIALISTAS DE AERONÁUTICA SUBDIVISÃO DE ADMISSÃO E DE SELEÇÃO

Primeiro Curso de Programação em C 3 a Edição

Geração Automática de Código Android Eficiente a partir de Modelos UML

Noções de. Microsoft SQL Server. Microsoft SQL Server

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

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

Processamento da Informação Teoria. Algoritmos e Tipos de dados

Bases de Dados 2007/2008. Aula 8

PHP. Hypertext Pre-Processor

Prova de Fundamentos de Bancos de Dados 2 a Prova

Sistemas especialistas

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

OPERADORES E ESTRUTURAS DE CONTROLE

Unidade 9: Middleware JDBC para Criação de Beans

Introdução ao SQL. Aécio Costa

UNIVERSIDADE FEDERAL DO MARANHÃO - UFMA. Banco de Dados II. Integridade. Carlos Eduardo Portela Serra de Castro

Web site. Objetivos gerais. Introdução. Profa. Patrícia Dockhorn Costa

Programação Paralela e Distribuída (DCC/UFRJ)

Persistência de Dados

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Tópicos em Engenharia de Computação

Centro Universitário Franciscano

Gerenciamento de software como ativo de automação industrial

Transcrição:

Sistemas Baseados em Regras Aula3: Drools Profa. Patrícia Dockhorn Costa pdcosta@inf.ufes.br www.inf.ufes.br/~pdcosta/ensino

Drools Business Logic integration Platform Plataforma integrada para gerenciamento de: Regras Workflow Eventos

Plataforma Drools Drools Guvnor (business rules manager) Drools Expert (rule engine) jbpm 5 (process/workflow) Drools Fusion (event processing/temporal reasoning) Drools Planner (automated planning)

Drools Expert Rule Type Execution Method Pattern Matching Conflict Resolution Production Forward Chaining Rete Algorithm Salience and LIFO

Arquitetura do Drools Expert

Fatosem Drools Fatos são objetos java que podem ser acessados por uma regra A máquina de regras mantém apenas referencias para os objetos Para que objetos tenham referência na máquina, devemos definir getters e setters nas respectivas classes (ou definir diretamente na working memory usando declare)

Um exemplo de tipo de fato (em Java) public class Applicant { private String name; private int age; private boolean valid; //getter and setter methods here }

Ou diretamente no arquivo de regras... Declare Applicant name: String age: int valid: boolean end

Um exemplo de regra... rule "Is of valid age" when $a : Applicant( age < 18 ) then $a.setvalid( false ); end

Um pouco mais sobre a regra... Define duas constraints : Tipo (Applicant) Valor de campo (age < 18) Constraint de tipo (com ou sem constraints de campo) é chamado de Padrão(Pattern) Quando uma instância inserida satisfaz as constraints (de tipos e campos), há um Casamento (data is Matched)

Working Memory Armazena os fatos Fatos podem ser inseridos, modificados ou removidos Permite: Executar queries Acesso a Entry Points

Working Memory Entry Point Insertion (assertion) Insere um fato na working memory Momento da avaliação das regras (pode ativar regras) Retraction Remove um fato da working memory Pode cancelar ativação de regras Pode ativar regras (regras que dependem da não existencia de um fato)

Working Memory Entry Point (cont.) Update Notifica a working memory de alguma mudança no objeto Internamente é tratado como um retraction seguido de um insertion

Insertion Modes Determina como os fatos são gerenciados pela working memory: Identity insertion Novos fatos são comparados a fatos existentes por referência Novo FactHandle é retornado se não houver referência do objeto na working memory Equality insertion Novos fatos são comparados a fatos existentes por valor Se o conteúdo do objeto for diferente, retorna um novo FactHandle

Production Memory A Production Memory armazena as regras O processamento das regras é definido pelo algoritmo Rete, no processo de Pattern Matching (casamento de padrões). Drools usa o ReteOO, que é uma extensão do Rete

Agenda Controla a ordem de execução das regras ativadas (já casadas) usando a estratégia de resolução de conflitos (Salience or LIFO)

Engine Cycles

Truth Mantainance Responsável por manter e restaurar a consistência da working memory Fatos inseridos logicamente são automaticamente retirados quando as condições que o inseriram não forem mais verdadeiras Uma insertion de fato pode ser: Stated: inserção normal. Justified: inserção lógica(somente na RHS de uma regra).

Stated Insertions Baseado no modo de inserção identity. Ou seja, podem existir instâncias iguais Quandoumanova instânciaé inserida, the stating counter é incrementando

Justified Insertions Baseado no modo de inserção equality. Ou seja, apenas uma instância por objeto Inserçõessubsequentesincrementamo justification counter Quandouma justification é removida(o LHS fica falso), o contator é decrementado.

A Linguagem de Regras Regras são escritas em lógica de primeira ordem (ou lógica de predicados) Proposições são expressões avaliadas como falsas ou verdadeiras Podem ser open statements ou closed statements Em Java, proposições são do tipo variable operator value Value geralmente sendo literal Neste contexto, proposições são field constraints

A Linguagem de Regras (cont.) Duas proposições do tipo open statements conectadas por um conectivo disjuntivo Proposições podem ser combinadas com conectivos conjuntivos e disjuntivos person.geteyecolor().equals("blue") person.geteyecolor().equals("green")

A Linguagem de Regras (cont.) Em regras... Person( eyecolour == "blue" ) Person( eyecolor == "green" ) Usando um Conditional Element conectivo disjuntivo na verdade resulta na generação de duas regras, querepresentamos2 possíveis resultados lógicos

A Linguagem de Regras (cont.) Em regras... Person( eyecolour == "blue" "green" ) Usando o conectivo disjuntivo para restriçãode campos. Não resulta na geração de múltiplas regras

Expressividade... Lógica de primeira ordem é Turing complete Permite a utilização de quantificadores universais e existencias Quantificador Universal Permiteverificara veracidadede algoparaum conjunto Geralmente forall conditional element Quantificador Existencial Permite verificar existencia de algo not e exists conditional elements

Exemplo em Java... Java é Turing complete Pode-se escrever código para iterar em estruturas de dados para verificar existencia List failedstudents = new ArrayList(); for ( Iterator studentiter = students.iterator(); studentiter.hasnext() { Student student = ( Student ) studentiter.next(); } } } for (Iterator it=student.getmodules.iterator(); it.hasnext(); ) { Module module = ( Module ) it.next(); if ( module.getscore() < 40 ) { failedstudents.add( student ) ; break;

Exemplo em SQL... select * from Students s where exists ( select * from Modules m where m.student_name = s.name and m.score < 40

Em Regras... rule "Failed_Students" when exists( $student : Student() && Module( student == $student, score < 40 ) )