Exemplo de Projeto Vamos criar agora um projeto exemplo para verificar as condições de crédito de...

Post on 16-Apr-2015

106 views 0 download

Transcript of Exemplo de Projeto Vamos criar agora um projeto exemplo para verificar as condições de crédito de...

Exemplo de Projeto

Vamos criar agora um projeto exemplo para verificar as condições de crédito de um conjunto de indivíduos;

Nosso primeiro conjunto de regras será bastante simples: Pessoas acima de 18 anos tem crédito e

pessoas abaixo de 18 anos não tem crédito.

Projeto: Avaliação de Crédito

1) Criar um novo Rule Project;

2) Clicar no botão Next;

Projeto: Avaliação de Crédito

3) Selecionar as 4 primeiras opções, para que um código esqueleto seja gerado automaticamente;

Se você quiser testar se o Drools está funcionando, executar os arquivos: DroolsTest: teste do Drools; DecisionTableTest: teste da

geração de regras a partir de tabelas de decisão (arquivo Sample.xls).

Projeto: Avaliação de Crédito4) Vamos criar do

zero um novo arquivo de regrar;

5) Criar um novo pacote com o nome com.credito para armazenar seu código;

Projeto: Avaliação de Crédito6) Criar a classe Pessoa que representa a

pessoa que pode ou não receber crédito;

Projeto: Avaliação de Crédito

7) Criar os campos da pessoa: nome, idade, sexo, comidaPredileta, dataCarteira:

package com.credito; import java.util.Date;

public class Pessoa { private String nome; private int idade; private char sexo; private String comidaPredileta; private Date dataCarteira;

}

Projeto: Avaliação de Crédito

8) Gerar o construtor usando o menu Source > Generate Constructor Using Fields.

Projeto: Avaliação de Crédito

9) Você vai ter um construtor semelhante a este: public Pessoa(String nome, int idade, char sexo,

String comidaPredileta, Date dataCarteira) { super(); this.nome = nome; this.idade = idade; this.sexo = sexo; this.comidaPredileta = comidaPredileta; this.dataCarteira = dataCarteira; }

Projeto: Avaliação de Crédito

10) Gerar os getters para cada campo. Não é necessária a geração dos setters, por enquanto.

Projeto: Avaliação de Crédito

11) Criar uma classe agora para armazenar tipos de comidas: package com.credito;

public class Comida { private String nome; private int calorias; public Comida(String nome, int calorias) {

super(); this.nome = nome; this.calorias = calorias;

} public String getNome() {

return nome; } public int getCalorias() {

return calorias; }

}

Projeto: Avaliação de Crédito

12) Vamos criar agora as regras. Criar um novo pacote de regras dentro do pacote com.credito dentro da pasta credito/src/rules;

Projeto: Avaliação de Crédito

13) Criar duas regras simples: package com.credito

import com.credito.Pessoa; import com.credito.Comida;

rule "Permite Crédito"

when $p : Pessoa(idade >= 18)

then System.out.println("Crédito Permitido para: " + $p.getNome() );

end # continua...

Projeto: Avaliação de Crédito

rule "Crédito Negado"when

Pessoa( $nome : nome, idade < 18) then

System.out.println("Crédito Negado para: " + $nome);

end

Projeto: Avaliação de Crédito

14) Observar que: Tem autocompletar

via CTRL + <espaço>;

Os problemas são indicados na aba Problems;

SALVE SEMPRE!

Projeto: Avaliação de Crédito

15) Crie uma nova classe CreditoExemplo dentro do pacote com.credito. Coloque método main nesta classe.

Projeto: Avaliação de Crédito

16) Colocar os Imports necessários: import java.io.IOException; import java.io.InputStreamReader;

import org.drools.RuleBase; import org.drools.RuleBaseFactory; import org.drools.WorkingMemory; import org.drools.compiler.DroolsParserException; import org.drools.compiler.PackageBuilder;

import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; ...

Projeto: Avaliação de Crédito

17) Carregar um pacotes de regras:

PackageBuilder builder = new PackageBuilder();

builder.addPackageFromDrl(new InputStreamReader(CreditoExemplo.class.getResourceAsStream("/credito.drl")));

Projeto: Avaliação de Crédito

18) Criar uma nova base de regras a partir do pacote e carregar as regras dentro da memória de trabalho:

RuleBase ruleBase = RuleBaseFactory.newRuleBase();

ruleBase.addPackage(builder.getPackage()); WorkingMemory workingMemory =

ruleBase.newStatefulSession();

Projeto: Avaliação de Crédito

19) Colocar os fatos na memória de trabalho e disparar as regras:

Pessoa alberto = new Pessoa("Alberto", 23, 'M', "Banana", formataData("12/03/2001"));

Pessoa bernardo = new Pessoa("Bernardo", 17, 'M', "Maça", formataData("15/12/2000"));

//...

workingMemory.insert(alberto); workingMemory.insert(bernardo);

workingMemory.fireAllRules();

Projeto: Avaliação de Crédito

20) Observar a resposta obtida: Crédito Negado para: Bernardo Crédito Permitido para: Alberto

Projeto: Avaliação de CréditoMais exemplos de regras

rule "Comida muito calórica"when

$p: Pessoa ($gostaDe: comidaPredileta) $c: Comida ( nome == $gostaDe, calorias >= 500)

then System.out.println("Pense Bem! " + $p.getNome() + "

come comidas muito gordurosas!"); retract($p);

end

Projeto: Avaliação de CréditoMais exemplos de regras

rule "Idade suspeita"when

$p: Pessoa( idade > 99) then

System.out.println(“Ei, “+$p.getNome()+” está mentindo a idade!");

$p.setIdade(0); update($p);

end