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



Documentos relacionados
INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO

Exercícios de Revisão Java Básico

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Criando sua primeira aplicação JAVA com o Eclipse

Implementando uma Classe e Criando Objetos a partir dela

Um pouco do Java. Prof. Eduardo

Para iniciar estes procedimento deixo o servidor parado até terminar todas alterações.

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

Guião de Introdução ao Eclipse IDE Índice

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Introdução a Java. Hélder Nunes

LINGUAGEM ORIENTADA A OBJETOS

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Persistência de Classes em Tabelas de Banco de Dados

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

Padrão Arquitetura em Camadas

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

Procedimentos de Implantação ireport x Protheus

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Parte I. Demoiselle Mail

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

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

Programação online em Java

Criar uma aplicação JPA2 com EclipseLink e H2

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

INSTALANDO E CONFIGURANDO O MY SQL

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

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

CURSO DE PROGRAMAÇÃO EM JAVA

Desenvolvimento OO com Java Orientação a objetos básica

Programação para Dispositivos Móveis

Aula 04 Operadores e Entrada de Dados. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Instruções para Instalação dos Utilitários Intel

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

GUIA DE ORIENTAÇÕES ROTEIRO DE CONFIGURAÇÃO DO SOFTWARE CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO - CRM PROFESSIONAL

IMPLEMENTAÇÃO DE UM AGENTE TAC SCM EM LINGUAGEM AGENTSPEAK(L)

Índice: Nitgen do Brasil

Tutorial Eclipse (IDE)

Resumo da Matéria de Linguagem de Programação. Linguagem C

Rede de Laboratórios de Produtividade de Software

Documentação Symom. Agente de Monitoração na Plataforma Windows

Prototype, um Design Patterns de Criação

2 Orientação a objetos na prática

PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ MANUAL DE UTILIZAÇÃO DO CVS NO ECLIPSE

Programação Orientada a Objetos em Java

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Instalação e Configuração RPM Remote Print Manager para Windows 2000

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Configurar o Furbot no Eclipse

Acesso a banco de dados

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

MANUAL DO ANIMAIL Terti Software

CONEXÃ O NFS-E SISTEMÃ ISS-INTEL UTILIZÃNDO JÃVÃ E SSL

Criando & Consumindo um WebService com ASP.NET 2.0 Publicado em: 25 de Agosto de 2007 Por Herman Ferdinando Arais

Sistemas Distribuídos

LINGUAGEM DE PROGRAMAÇÃO ESTRUTURADA CAPÍTULO 1 APRESENTANDO O C#

COMO INSTALAR O CATÁLOGO

Aula 1: Noção Básica e Criação de Tabelas.

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

O Primeiro Programa em Visual Studio.net

NetBeans. Conhecendo um pouco da IDE

Desenvolvimento de Sistemas BPMS. Jhonatas Vicente de Jesus

Passo a Passo. WebSphere Message Broker. Fluxo como WebService

Web Services. Autor: Rômulo Rosa Furtado

Introdução ao Android

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

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

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

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

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


ITIL v3 - Operação de Serviço - Parte 1

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Eclipse com c++11 e boost Etapa 1- Download da IDE Eclipse c++ e configuração do MinGW

Java na WEB Banco de Dados

MANUAL DO USUÁRIO. AssetView FDT. AssetView FDT

THREADS EM JAVA. George Gomes Cabral

Tutorial 1.0. Instalação

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

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

Drive MySql de conexão para Eclipse

Manual de criação de envios no BTG360

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Manual de Envio de Torpedos SMS Comtele. Introdução Cadastrar um Grupo Inserir ou Importar Contatos Ordem de envio...

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC TurmaBC TurmaBC TurmaBC

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Validando dados de páginas WEB

insfcanceof new public switch transient while byte continue extends for int null

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI FORMULÁRIO COM ABAS E BUSCAS DE REGISTROS

PL/pgSQL por Diversão e Lucro

Universidade Federal de Juiz de Fora Ciência da Computação Sistemas Distribuídos Professor Ciro Barbosa

Configuração e Instalação do Atendimento Online

JSP - ORIENTADO A OBJETOS

LOGO! Soft Confort V8.0. Índice. 1. Introdução - Conceitos. Instalação de pacote para idioma português. Rodrigo Correia

Transcrição:

jboss drool_ Regras de Negócio Drools Utilizando a plataforma da JBOSS DROOLS como ambiente para gerenciamento de regras de negócio. ção, manutenção e execução. Este artigo mostra como utilizar o JBoss Drools como um Sistema para Gerenciamen- Toda empresa possui uma série de processos de negócio. Estes podem ser considerados como sendo o conjunto de todas as atividades desempenhadas pela empresa. Cada processo de negócio visa keting visa aumentar o interesse dos consumidores pelo produto da empresa. Para chegar a este resul- - de negócio são os requisitos fundamentais para que - destas características, desenvolver regras de negócio usando uma linguagem de programação tradicio- - - / 56

mais de 10 anos de experiência, já trabalhou em empresas de diversos setores como: Telecom, Bancos e Indústria utilizando Java, cimento destas regras, muitas vezes conhecida como - delar completa e corretamente as entidades do do- vez que uma regra de negócio for mudada, o departa- vamente o código da aplicação, passar pelos testes, deploys nos servidores etc., ou seja, todo o trabalho - uso de um Sistema de Gerenciamento de Regras de monitorados e mantidos separadamente. Esses sis- Language). Desta forma os especialistas de negócio comportamento dos sistemas, reduzindo o tempo e realizadas. Como as regras são mantidas separada- ças efetuadas podem ser aplicadas rapidamente em produção sem a necessidade de recompilar e rede- conjunto de regras pode ser aproveitado sendo em- Diferenças entre Linguagens Imperativas x Linguagens Declarativas radigma de programação imperativa ou procedural) na CPU são gravados na memória. Seus conceitos de memória; atribuição, que representa a escrita de da memória para a CPU, e o resultado da avaliação - - Pascal, Java, C e Python. - - - deduzidos a partir de outros. Fatos conhecidos a respeito de um determinado problema devem ser reunidos; regras devem ser criadas para que seja possível - Uma linguagem declarativa utiliza uma ou mais - - Uma instrução em uma linguagem imperativa - Uma instrução em uma linguagem declarativa seria algo como: se estiver chovendo, então você precisa de um guarda-chuva. Neste caso eu tenho a guarda-chuva. Drools - qual provê uma plataforma integrada para o geren- Eventos. Esta plataforma possui cinco componentes - 57 \

- sing) e o Drools Planner é utilizado para a resolução componentes não serão abordados neste artigo, para dos componentes relacionados ao gerenciamento de Engine em inglês) enquanto o Drools Guvnor é um pouco mais cada um destes componentes. Production (rules) Interference Engine Rete00 / Leaps Pattern Matcher Agenda Figura 1. Drools Expert ponente suporta regras, fatos, prioridade entre as - zada pela aplicação que usa as regras para a tomada uma regra para determinados valores e esta regra re- regra. Uma regra é formada por uma ou mais condi- - - condição é avaliada antes das outras regras, ou seja, caso ela retorne falso as outras regras nem serão avaliadas pelo Motor. - objetos/containers que contêm os dados avaliados pelas regras são armazenados em uma Memória de - - versão otimizada e orientada a objetos do algoritmo - Quando muitas regras retornam verdadeiro para uma - tema que implementa os dois métodos é considerado - e, portanto, reativo. Uma ou mais regras podem ser - - mais submetas. Working (facts) negócio possam ser criadas, editadas, processadas, testadas e implantadas em um repositório de regras. Para fazer a instalação do Drools Guvnor no - - ta webapps to Tomcat. Espere um pou- - / 58

Rule Base Determine possible Workign Memory Fire Rule Rule Found Select Rule to Fire Resolution Strategy No Rule Found exit Rule Base Examine worling memory and goals to see if goals are known true in knowledge base Workign Memory Goal Return True yes Do goals match? Recursively back-chain Return false no (return false to recursive procedure) For each rule condition, recursively backchain with condition goal. Determine next possible conclusions and goals Fire Rule Rule Found Select Rule to Fire Resolution Strategy No Rule Found All recursion are true? exit One more goals failed. Check next matching rule. yes Figura 3. Goals found to be true, exist, returning true true» Browse: permite que seja feita uma busca de regras por status e categoria.» Knowledge Bases: possui todas as regras organizadas por pacotes.» QA (Quality Assurance): permite que sejam - namento das regras.» Package snapshots: - - histórico.» Administration: apresenta as seguintes fun- 59 \

vamento de regras, log de eventos, permis- repositório de regras. usadas para a criação da regra:» Business Rule Guided Editor: permite que uma regra seja criada usando um editor de re-» DSL Business Rule (Text Editor): permite que escrito em uma linguagem DSL.» DRL Rule (Techinical Rule Text Editor): permite que uma regra seja criada em um ar- ols Rule Language).» Decision Table: permite que uma regra seja» Decision Table Web Guided Editor: permite que uma regra seja criada usando uma Tabela de Decisão através de um editor visual do Figura 4. Tela inicial do Drools Guvnor. - - no botão Choose File e selecione o arquivo mortga- - com o Drools a criação das regras possa ser feita dentro do Eclipse e depois integradas a um repositório de regras. manager do Eclipse e crie um novo site apontando para a seguinte url: http://downloads.jboss.com/dro- - Figura 6. Instalando o plugin do Drools no Eclipse. rio de regras de exemplo. Criando um projeto de exemplo usando o wizard do Eclipse (projeto mundojdrools-sample) - de todos eles):» quivo Sample.drl.» - - Test.java).» DroolsTest.» vés da chamada do método newstatefulsession.» / 60

objeto da classe Message.» - DroolsTest.java. Figura 7. Erro ao executar a classe DroolsTest. - - vamente a classe DroolsTest.java e veja o resultado. Tente agora alterar o valor do campo status do Crie novos objetos do tipo Message, não se esqueça de adicionar eles na Memória de Trabalho Criando outro projeto de regras a partir cria um novo projeto de regras sem nenhuma opção selecionada. package mundoj; import mundoj.conta; rule inicial when Conta( saldo < 100 ) // condição then System.out.println( Saldo da conta do banco é menor do que 100 ); // consequência End Esta regra possui apenas uma condição, se o Saldo da Conta for menor do que a mensagem Saldo da no Console do Eclipse. package mundoj; public class Conta { private long saldo; Figura 8. Rodando novamente a classe DroolsTest. Entendendo o que você acaba de fazer: dois atributos, uma String message e um int status. - tada quando o status do objeto Message informado Quando esta classe é criada pelo nosso Eclipse - public long getsaldo() { return saldo; public void setsaldo(long balance) { this.saldo = balance; package mundoj; import java.io.inputstreamreader; import java.io.reader; import org.drools.rulebase; import org.drools.rulebasefactory; 61 \

import org.drools.workingmemory; import org.drools.compiler.packagebuilder; import org.drools.rule.package; public class TestaRegras { public static void main(string[] args) throws Exception { /* uma Rule Base (ou base de conhecimento) é * reponsável por criar a * memória de trabalho onde irá ser feito o match das regras */ RuleBase rulebase = null; /* aqui eu estou lendo o arquivo onde estão declaradas as minhas regras */ Reader source = new InputStreamReader( TestaRegras.class.getResourceAsStream( /regra.drl )); PackageBuilder builder = new (); /*aqui eu estou adicionando no Buider de pacotes as regras lidas no passo anterior */ builder.addpackagefromdrl(source); Package pkg = builder.getpackage(); rulebase = RuleBaseFactory. (); /* aqui eu estou adicionando na Rule Base o de regras */ rulebase.addpackage(pkg); /* aqui eu crio a minha Working Memory ou memória de trabalho que é o Runtime onde eu irei disparar as minhas regras */ WorkingMemory workingmemory = rulebase.newstatefulsession(); /* aqui eu crio o meu objeto Conta, que é o fato sobre o qual eu irei aplicar as minhas regras */ Conta account = new Conta(); account.setsaldo(-1); /* aqui eu insiro na minha memória de trabalho os dados/fatos criados */ workingmemory.insert(account); /* aqui eu disparo todas as regras existentes na minha memória de trabalho */ workingmemory. (); - Crie uma nova regra usando a opção DRL Rule rule inicial no-loop true dialect mvel when c: Conta( saldo < 0 ) then c.setstatus( Saldo da Conta é negativo! ); update(c); end novo projeto de regras deve ser criado no Guvnor. Figura 9. Criando o projeto no Guvnor e executando as regras no Eclipse (projeto mundoj-client-guvnor) teriormente no Eclipse direto no Guvnor e depois - Selecione o pacote criado e crie um novo De- Figura 10. / 62

Figura 11 Figura 15 Figura 12 Figura 16 novo projeto de regras no eclipse e coloque o código package mundoj; import org.drools.knowledgebase; import org.drools.agent.knowledgeagent; import org.drools.agent.knowledgeagentfactory; import import org.drools.io.resource; import org.drools.io.resourcefactory; import org.drools.runtime.statelessknowledgesession; public class ClientGuvnor { Figura 13 Figura 14. public static void main(string[] args) { Resource xml = null; KnowledgeAgent kagent = null; KnowledgeBase kbase = null; StatelessKnowledgeSession workingmemory = null; { xml = ResourceFactory.newClassPathResource( mundoj.xml ); kagent = KnowledgeAgentFactory. newknowledgeagent( myagent ); kagent. (xml); kbase = kagent. (); FactType ftype = kbase. ( mundoj, Conta ); Object conta = ftype.newinstance(); ftype.set(conta, saldo, -1); workingmemory = kbase. 63 \

newstatelessknowledgesession(); workingmemory.execute(conta); System.out.println(fType.get(conta, status )); catch (Exception e) { e.printstacktrace(); { kagent.dispose(); - gras. <change-set xmlns= http://drools.org/drools-5.0/ change-set xmlns:xs= http://www.w3.org/2001/xmlschema-instance xs:schemalocation= http://drools.org/drools-5.0/ change-set http://anonsvn.jboss.org/repos/labs/labs/jbossrules /trunk/drools-api/src/main/resources/change-set- 1.0.0.xsd > <add> <resource source= http://localhost:8090/droolsguvnor/org.drools.guvnor.guvnor/package/mundoj/ LATEST type= PKG /> </add> </change-set> Muitas vezes, ao iniciar o desenvolvimento de um software perdemos bastante tempo escolhen- não dando a devida importância que as regras de ne- profundamente estas regras quanto à pessoa que lida disso, como sabemos, o processo de negócio é que produz valor para os clientes e não o software. - gras de negócio sem a necessidade da ajuda do espe- importância, proporcionando com que estas regras criadas separadamente possam ser aproveitadas por todos os softwares que dependam delas na empresa. Durante a leitura do artigo, realizamos uma in- Engine). Em seguida, mostramos como utilizar o Drools Guvnor como uma interface web para o Gerencia- - do Eclipe para o desenvolvimento de projetos para o artigo foi o de chamar a atenção do leitor para a utilidade da tecnologia. http://www.jboss.org/drools/downloads > Update Site para instalar o plugin do Drools no Eclipse http://downloads.jboss.com/drools/updatesite3.3/ > Documentação Drools Guvnor > Documentação Drools Expert I> ntrodução ao Drools Guvnor http://en.wikipedia.org/wiki/declarative_programming http://en.wikipedia.org/wiki/imperative_programming system > Implementando a Lógica de Negócio com o Drools (Artigo http://blog.athico.com/ guide/html_single/index.html /referências / 64