A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Geração de DSLs Vamos criar agora um projeto exemplo que trabalhe não mais com a linguagem DRL, mas sim com DSL (Domain Specific Languages – Linguagens.

Apresentações semelhantes


Apresentação em tema: "Geração de DSLs Vamos criar agora um projeto exemplo que trabalhe não mais com a linguagem DRL, mas sim com DSL (Domain Specific Languages – Linguagens."— Transcrição da apresentação:

1 Geração de DSLs Vamos criar agora um projeto exemplo que trabalhe não mais com a linguagem DRL, mas sim com DSL (Domain Specific Languages – Linguagens Específicas de Domínio; No Drools, você pode misturar regras escritas em DRL com regras na DSL.

2 Criação de uma nova DSL para o Projeto Crédito
1) Criar uma nova base de regras, com o nome creditodsl;

3 Criação de uma nova DSL para o Projeto Crédito
2) Selecione a opção de utilizar uma DSL, desta vez, a extensão do arquivo será DSLR; rule "Permite Crédito" when $p : Pessoa(idade >= 18) then System.out.println("Crédito Permitido para: " + $p.getNome() ); end rule "Crédito Negado" Pessoa( $nome : nome, idade < 18) System.out.println("Crédito Negado para: " + $nome);

4 Criação de uma nova DSL para o Projeto Crédito
3) Selecionar a pasta de regras e crie um outro recurso;

5 Criação de uma nova DSL para o Projeto Crédito
4) No item Drools, selecionar Domain Specific Language;

6 Criação de uma nova DSL para o Projeto Crédito
5) Criar um arquivo chamado credito.dsl; 6) Este arquivo será responsável por fazer a conversão do formato DSL para o formato da DRL.

7 Criação de uma nova DSL para o Projeto Crédito
7) Observar que o arquivo criado contém uma série de entradas padrão que exemplificam o sistema de templates;

8

9 Criação de uma nova DSL para o Projeto Crédito
8) Criar as seguintes associações: Decisão: {message} corresponde a System.out.println({message}) e está no escopo de conseqüência; O cliente tem pelo menos {idade} anos corresponde a $p : Pessoa(idade >= {idade}) e está no escopo da condição; O cliente é mais novo que {idade} anos corresponde a Pessoa( $nome : nome, idade < {idade})

10 Criação de uma nova DSL para o Projeto Crédito

11 Criação de uma nova DSL para o Projeto Crédito

12 Criação de uma nova DSL para o Projeto Crédito

13 Criação de uma nova DSL para o Projeto Crédito
9) Colocar a palavra chave expander dentro do arquivo DRL. Ela fará a associação entre a DRL e a DSL;

14 Criação de uma nova DSL para o Projeto Crédito
10) Se preferir, pode continuar usando a DRL, marcando as linhas com >; rule "Permite Crédito" when O cliente tem pelo menos 18 anos then Decisão: "Crédito Permitido para: " + $p.getNome() end rule "Crédito Negado" O cliente é mais novo que 18 anos >System.out.println("Crédito Negado para: " + $nome);

15 Criação de uma nova DSL para o Projeto Crédito
11) Colocar no arquivo que contém o método main, o código abaixo: builder.addPackageFromDrl(new InputStreamReader(CreditoExemplo.class.getResourceAsStream("/creditodsl.dslr")), new InputStreamReader(CreditoExemplo.class.getResourceAsStream("/credito.dsl")));

16 Criação de uma nova DSL para o Projeto Crédito
12) Você pode alterar, também, as palavras chave: Se => when; Então => then


Carregar ppt "Geração de DSLs Vamos criar agora um projeto exemplo que trabalhe não mais com a linguagem DRL, mas sim com DSL (Domain Specific Languages – Linguagens."

Apresentações semelhantes


Anúncios Google