Exemplo de Projeto l Vamos criar agora um

  • Slides: 26
Download presentation
Exemplo de Projeto l Vamos criar agora um projeto exemplo para verificar as condições

Exemplo de Projeto l Vamos criar agora um projeto exemplo para verificar as condições de crédito de um conjunto de indivíduos; l 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 l 1) Criar um novo Rule Project; l 2) Clicar

Projeto: Avaliação de Crédito l 1) Criar um novo Rule Project; l 2) Clicar no botão Next;

Projeto: Avaliação de Crédito l 3) Selecionar as 4 primeiras opções, para que um

Projeto: Avaliação de Crédito l 3) Selecionar as 4 primeiras opções, para que um código esqueleto seja gerado automaticamente;

l Se você quiser testar se o Drools está funcionando, executar os arquivos: ¡

l Se você quiser testar se o Drools está funcionando, executar os arquivos: ¡ Drools. Test: teste do Drools; ¡ Decision. Table. Test: teste da geração de regras a partir de tabelas de decisão (arquivo Sample. xls).

Projeto: Avaliação de Crédito l 4) Vamos criar do zero um novo arquivo de

Projeto: Avaliação de Crédito l 4) Vamos criar do zero um novo arquivo de regrar; l 5) Criar um novo pacote com o nome com. credito para armazenar seu código;

Projeto: Avaliação de Crédito l 6) Criar a classe Pessoa que representa a pessoa

Projeto: Avaliação de Crédito l 6) Criar a classe Pessoa que representa a pessoa que pode ou não receber crédito;

Projeto: Avaliação de Crédito l 7) Criar os campos da pessoa: nome, idade, sexo,

Projeto: Avaliação de Crédito l 7) Criar os campos da pessoa: nome, idade, sexo, comida. Predileta, data. Carteira: l l package com. credito; import java. util. Date; l l l public class Pessoa { private String nome; private int idade; private char sexo; private String comida. Predileta; private Date data. Carteira; l }

Projeto: Avaliação de Crédito l 8) Gerar o construtor usando o menu Source >

Projeto: Avaliação de Crédito l 8) Gerar o construtor usando o menu Source > Generate Constructor Using Fields.

Projeto: Avaliação de Crédito l 9) Você vai ter um construtor semelhante a este:

Projeto: Avaliação de Crédito l 9) Você vai ter um construtor semelhante a este: ¡ ¡ ¡ ¡ ¡ public Pessoa(String nome, int idade, char sexo, String comida. Predileta, Date data. Carteira) { super(); this. nome = nome; this. idade = idade; this. sexo = sexo; this. comida. Predileta = comida. Predileta; this. data. Carteira = data. Carteira; }

Projeto: Avaliação de Crédito l 10) Gerar os getters para cada campo. Não é

Projeto: Avaliação de Crédito l 10) Gerar os getters para cada campo. Não é necessária a geração dos setters, por enquanto.

Projeto: Avaliação de Crédito l l 11) Criar uma classe agora para armazenar tipos

Projeto: Avaliação de Crédito l l 11) Criar uma classe agora para armazenar tipos de comidas: package com. credito; l public class Comida { ¡ ¡ ¡ private String nome; private int calorias; public Comida(String nome, int calorias) { l l l ¡ ¡ } public String get. Nome() { l ¡ ¡ l } return nome; } public int get. Calorias() { l ¡ super(); this. nome = nome; this. calorias = calorias; } return calorias;

Projeto: Avaliação de Crédito l 12) Vamos criar agora as regras. Criar um novo

Projeto: Avaliação de Crédito l 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 l 13) Criar duas regras simples: l package com. credito

Projeto: Avaliação de Crédito l 13) Criar duas regras simples: l package com. credito l l import com. credito. Pessoa; import com. credito. Comida; l rule "Permite Crédito" ¡ when l ¡ then l l l $p : Pessoa(idade >= 18) System. out. println("Crédito Permitido para: " + $p. get. Nome() ); end # continua. . .

Projeto: Avaliação de Crédito l rule "Crédito Negado" ¡ when l Pessoa( $nome :

Projeto: Avaliação de Crédito l rule "Crédito Negado" ¡ when l Pessoa( $nome : nome, idade < 18) ¡ then l l end System. out. println("Crédito Negado para: " + $nome);

Projeto: Avaliação de Crédito l 14) Observar que: ¡ ¡ ¡ Tem autocompletar via

Projeto: Avaliação de Crédito l 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 l 15) Crie uma nova classe Credito. Exemplo dentro do

Projeto: Avaliação de Crédito l 15) Crie uma nova classe Credito. Exemplo dentro do pacote com. credito. Coloque método main nesta classe.

Projeto: Avaliação de Crédito l l l 16) Colocar os Imports necessários: import java.

Projeto: Avaliação de Crédito l l l 16) Colocar os Imports necessários: import java. io. IOException; import java. io. Input. Stream. Reader; l l l import org. drools. Rule. Base; import org. drools. Rule. Base. Factory; import org. drools. Working. Memory; import org. drools. compiler. Drools. Parser. Exception; import org. drools. compiler. Package. Builder; l l l import java. text. Date. Format; import java. text. Parse. Exception; import java. text. Simple. Date. Format; import java. util. Date; . . .

Projeto: Avaliação de Crédito l 17) Carregar um pacotes de regras: l Package. Builder

Projeto: Avaliação de Crédito l 17) Carregar um pacotes de regras: l Package. Builder builder = new Package. Builder(); l builder. add. Package. From. Drl(new Input. Stream. Reader(Credito. Exemplo. class. get. Resource. As. Stream("/credito. drl")));

Projeto: Avaliação de Crédito l 18) Criar uma nova base de regras a partir

Projeto: Avaliação de Crédito l 18) Criar uma nova base de regras a partir do pacote e carregar as regras dentro da memória de trabalho: Rule. Base rule. Base = Rule. Base. Factory. new. Rule. Base(); l rule. Base. add. Package(builder. get. Package()); l Working. Memory working. Memory = rule. Base. new. Stateful. Session(); l

Projeto: Avaliação de Crédito l 19) Colocar os fatos na memória de trabalho e

Projeto: Avaliação de Crédito l 19) Colocar os fatos na memória de trabalho e disparar as regras: Pessoa alberto = new Pessoa("Alberto", 23, 'M', "Banana", formata. Data("12/03/2001")); l Pessoa bernardo = new Pessoa("Bernardo", 17, 'M', "Maça", formata. Data("15/12/2000")); l //. . . l l l working. Memory. insert(alberto); working. Memory. insert(bernardo); l working. Memory. fire. All. Rules();

Projeto: Avaliação de Crédito l 20) Observar a resposta obtida: ¡ Crédito Negado para:

Projeto: Avaliação de Crédito l 20) Observar a resposta obtida: ¡ Crédito Negado para: Bernardo ¡ Crédito Permitido para: Alberto

Projeto: Avaliação de Crédito Mais exemplos de regras rule "Comida muito calórica" l when

Projeto: Avaliação de Crédito Mais exemplos de regras rule "Comida muito calórica" l when l ¡ ¡ l then ¡ ¡ l $p: Pessoa ($gosta. De: comida. Predileta) $c: Comida ( nome == $gosta. De, calorias >= 500) System. out. println("Pense Bem! " + $p. get. Nome() + " come comidas muito gordurosas!"); retract($p); end

Projeto: Avaliação de Crédito Mais exemplos de regras l rule "Idade suspeita" l when

Projeto: Avaliação de Crédito Mais exemplos de regras l rule "Idade suspeita" l when ¡ $p: Pessoa( idade > 99) l then ¡ System. out. println(“Ei, “+$p. get. Nome()+” está mentindo a idade!"); ¡ $p. set. Idade(0); ¡ update($p); l end