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

26
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.

Upload: internet

Post on 16-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

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.

Page 2: 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

Projeto: Avaliação de Crédito

1) Criar um novo Rule Project;

2) Clicar no botão Next;

Page 3: 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

Projeto: Avaliação de Crédito

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

Page 4: 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

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).

Page 5: 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
Page 6: 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

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;

Page 7: 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
Page 8: 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

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

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

Page 9: 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

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;

}

Page 10: 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

Projeto: Avaliação de Crédito

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

Page 11: 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

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; }

Page 12: 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

Projeto: Avaliação de Crédito

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

Page 13: 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
Page 14: 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

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; }

}

Page 15: 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

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;

Page 16: 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

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...

Page 17: 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

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

Page 18: 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

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!

Page 19: 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

Projeto: Avaliação de Crédito

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

Page 20: 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

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; ...

Page 21: 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

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")));

Page 22: 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

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();

Page 23: 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

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();

Page 24: 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

Projeto: Avaliação de Crédito

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

Page 25: 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

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

Page 26: 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

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