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.

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

Embed Size (px)

Citation preview

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