260 likes | 384 Vues
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.
E N D
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édito • 4) 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édito • 6) 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; • publicclass Pessoa { • private String nome; • privateint idade; • privatechar 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; • publicclass Comida { • private String nome; • privateint calorias; • public Comida(String nome, int calorias) { • super(); • this.nome = nome; • this.calorias = calorias; • } • public String getNome() { • return nome; • } • publicint 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