Upload
internet
View
106
Download
0
Embed Size (px)
Citation preview
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