SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
www.3layer.com.br
                                                     www.3layer.com.br
             Merlin
Um Novo Horizonte na Criação das Telas de Cadastro
www.3layer.com.br
Sumário
                                                                          >> panorama geral


 Cenário
 A proposta
 Comparações
 Características e Funcionalidades
 O presente e o futuro
 EOF




            Merlin - Um Novo Horizonte na Criação das Telas de Cadastro      slide 2 de 44
www.3layer.com.br
Sobre o autor
 Marcelo Mrack, mmrack@gmail.com
   29 anos, 8 em TI, 6 em Java
   Bacharel em C. Computação, UNISC – 2001
   Mestrando em C. Computação, UFRGS – 2006
   Atuação em projetos web e desktop n camadas
   Arquiteto na 3Layer Tecnologia
   Projetista na CWI Software
   Consultor e instrutor Hibernate, Java EE
   Especialidades: IHC, Patterns, geradores, PU Ágil e UML




             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 3 de 44
www.3layer.com.br
  Panorama geral
                                                                                           >> a construção da IU hoje

      Quanto custa construir um sistema

                 Custo de construção

                     Sistema completo                               100%
                                                                                              1
                  Interface do usuário                  50%
                                                                        1
                                        TC         30%
                                                              2
                       TC elementares           18%
                                                       2




Referências
1 Meyers, Brad – User Interface Software Tools (1994,2002)
2 Pesquisas próprias (2005,2006)


                             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro              slide 4 de 44
www.3layer.com.br
A construção da IU hoje
                                                                                        >> a ferramenta proposta


   O cenário atual
As diversas formas de construir interface de usuário e os problemas em comum
 Abordagens                                             Problemas recorrentes
      Escrita de código-fonte                                 Tempo elevado de construção
      Uso de ferramentas WYSIWYG1                                   Quanto custa criar um template?

      Uso de assistentes de criação                           Demora nas alterações
                                                                    Como refatorar classes já geradas?
      Geração baseada em modelos                                    E se o código já foi alterado?
           Templates                                          Falta de reuso
           MDA                                                      Posso reusar o label “Nome do cliente”
                                                                    em projetos diferentes?
                                                              Gerência de código
                                                                    Código template ou não? E a versão?

1. ( WYSIWYG: /wǺziwǺg/ ) What You See Is What You Get, ou seja o que você vê (ou o que você desenha no
editor) é o que você tem quando o sistema estiver em execução.


                         Merlin - Um Novo Horizonte na Criação das Telas de Cadastro               slide 5 de 44
www.3layer.com.br
  A ferramenta proposta
                                                                                      >> motivação


      Abdicar totalmente da geração do código-fonte
           Em outras palavras, gerar a TC durante a execução do
           sistema, através de um processo de interpretação de
           meta-informações oriundas do próprio modelo de dados

A idéia-chave

 class Cliente {
                                                         new JFrame.add(
   String codigo;
                             CAFE                  Merlin.createIhc(Pessoa.class)
   String nome;                                          ).setVisible(true);
 }

          Tempo de projeto                                     Tempo de execução




                       Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 6 de 44
www.3layer.com.br
Motivação
                                                                              >> motivação

 TC são funções do modelo de dados

       A dependência da TC em relação ao modelo de dados
        Modelo de classes                     Tela de Cadastro




                               consistência,
                                aparência,
                                validação,
                               organização,
                              customizações,
                                    etc.



               Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 7 de 44
www.3layer.com.br
Motivação
                                                                                 >> motivação

 Regras clássicas
         Classe           Tela

       Atributo           Controle
 Relacionamento           Link




                  Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 8 de 44
www.3layer.com.br
Motivação
                                                                                            >> motivação

 Regras clássicas                           Implementando as regras clássicas
         Classe           Tela
                                             A classe de dados
       Atributo           Controle            public class Cliente { 1
                                                String nome;
 Relacionamento           Link                  Cidade naturalidade;
                                                boolean ativo;
                                              }
                                             O cadastro gerado
                                                     Cadastro de Clientes
                                                 1
                                                             Nome

                                                      Naturalidade

                                                              Ativo


                                                                                Cancelar     Salvar




                  Merlin - Um Novo Horizonte na Criação das Telas de Cadastro              slide 9 de 44
www.3layer.com.br
Motivação
                                                                                             >> motivação

 Regras clássicas                           Implementando as regras clássicas
         Classe           Tela
                                             A classe de dados
       Atributo           Controle            public class Cliente {
                                               2 String nome;
 Relacionamento           Link                   Cidade naturalidade;
                                                 boolean ativo;
                                              }
                                             O cadastro gerado
                                                    Cadastro de Clientes


                                                            Nome                                  2

                                                     Naturalidade

                                                             Ativo


                                                                                Cancelar     Salvar




                  Merlin - Um Novo Horizonte na Criação das Telas de Cadastro              slide 10 de 44
www.3layer.com.br
Motivação
                                                                                >> o objetivo da ferramenta

 Regras clássicas                           Implementando as regras clássicas
         Classe           Tela
                                             A classe de dados
       Atributo           Controle            public class Cliente {
                                                String nome;
 Relacionamento           Link                  Cidade naturalidade; 3
                                                boolean ativo;
                                              }
                                             O cadastro gerado
                                                    Cadastro de Clientes


                                                            Nome

                                                     Naturalidade

                                                             Ativo
                                                                                                       3

                                                                                     Cancelar     Salvar




                  Merlin - Um Novo Horizonte na Criação das Telas de Cadastro                   slide 11 de 44
www.3layer.com.br
O objetivo da ferramenta
                                                                                   >> algumas definições

  Gerar TCs elementares com o menor esforço possível
Um exemplo de interface elementar a ser gerada




                                                                     O código essencial
                                                                         new JFrame().add(
                                                                    Merlin.createIhc(Usuario.class)
                                                                           ).setVisible(true);




                   Merlin - Um Novo Horizonte na Criação das Telas de Cadastro            slide 12 de 44
www.3layer.com.br
Algunas definições importantes
                                                                                   >> o processo

 Contexto
    É a relação entre o elemento e o ambiente em que ele ocorre
       Algo é importante dependendo do local onde ele está
 Empirismo
    É o conhecimento baseado na experiência
       Eu sei porque eu já fiz isso
    É reativo
 Heurística
    É o conhecimento baseado em aproximações
       Eu acho que sei porque eu já fiz algo parecido
    É pró-ativa
 Inferência
    Obtém-se novos conhecimentos a partir de informações existentes
       Quanto mais contexto, melhor

                  Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 13 de 44
www.3layer.com.br
O processo
                                                                           >> comparação


1. Cria-se as classes de dados
2. Opcionalmente, decora-se elas com anotações
3. Dentro da aplicação, invoca-se Merlin.createIhc
   sobre a classe ou objeto




             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 14 de 44
www.3layer.com.br
Uma pequena comparação
                                                                                   >> comparação


  A mesma entrada e as diferentes saídas...

Uma classe de dados para teste ...                    ... ou em notação UML
public class Usuario {
  long codigo;
  String nome;
  String observacoes;
  String logradouro;
  int numero;
  Cidade cidade;
  String complemento;
}



                     Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 15 de 44
www.3layer.com.br
Uma pequena comparação
                                                                                                                    >> comparação


 A mesma entrada e as diferentes saídas...
Interfaces geradas por ferramentas tradicionais (a) e pelo Merlin (b)
Um gerador tradicional (a)                                  Merlin (b)
usuario                                                     Cadastro de Usuário
                                                            Dicas
                                                            Dicas
          codigo
                                                               O campo nome é obrigatório.
                                                               O campo logradouro é obrigatório
           nome                                                O campo número é obrigatório


          cidade
                                                                      Nome
   logradouro Rua São Sepé
                                                               Endereço
      numero 256
                                                                    Cidade
 complemento
                                                               Logradouro Rua São Sepé
  observacoes
                                                                    Número 256                    Complemento
                                     Cancelar   Salvar
                                                               Observações




                                                                                                         Cancelar   Salvar




                             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro                            slide 16 de 44
www.3layer.com.br
Uma pequena comparação
                                                                                                                    >> comparação


 A mesma entrada e as diferentes saídas...
Interfaces geradas por ferramentas tradicionais (a) e pelo Merlin (b)
Um gerador tradicional (a)                                  Merlin (b)
usuario                                                     Cadastro de Usuário
                                                            Dicas
                                                            Dicas
          codigo
                                                               O campo nome é obrigatório.
                                                               O campo logradouro é obrigatório
           nome                                                O campo número é obrigatório


          cidade
                                                                      Nome
   logradouro Rua São Sepé
                                                               Endereço
      numero 256
                                                                    Cidade
 complemento
                                                               Logradouro Rua São Sepé
  observacoes
                                                                    Número 256                    Complemento
                                     Cancelar   Salvar
                                                               Observações

Porque Observações é uma caixa
  de texto de múltiplas linhas?
                                                                                                         Cancelar   Salvar




                             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro                            slide 17 de 44
www.3layer.com.br
Uma pequena comparação
                                                                                                                    >> comparação


 A mesma entrada e as diferentes saídas...
Interfaces geradas por ferramentas tradicionais (a) e pelo Merlin (b)
Um gerador tradicional (a)                                  Merlin (b)
usuario                                                     Cadastro de Usuário
                                                            Dicas
                                                            Dicas
          codigo
                                                               O campo nome é obrigatório.
                                                               O campo logradouro é obrigatório
           nome                                                O campo número é obrigatório


          cidade
                                                                      Nome
   logradouro Rua São Sepé
                                                               Endereço
      numero 256
                                                                    Cidade
 complemento
                                                               Logradouro Rua São Sepé
  observacoes
                                                                    Número 256                    Complemento
                                     Cancelar   Salvar
                                                               Observações

   Porque é Observações e não
         Observacoes?
                                                                                                         Cancelar   Salvar




                             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro                            slide 18 de 44
www.3layer.com.br
Uma pequena comparação
                                                                                                           >> características gerais


 A mesma entrada e as diferentes saídas...
Interfaces geradas por ferramentas tradicionais (a) e pelo Merlin (b)
Um gerador tradicional (a)                                  Merlin (b)
usuario                                                     Cadastro de Usuário
                                                            Dicas
                                                            Dicas
          codigo
                                                               O campo nome é obrigatório.
                                                               O campo logradouro é obrigatório
           nome                                                O campo número é obrigatório


          cidade
                                                                      Nome
   logradouro Rua São Sepé
                                                               Endereço
      numero 256
                                                                    Cidade
 complemento
                                                               Logradouro Rua São Sepé
  observacoes
                                                                    Número 256                    Complemento
                                     Cancelar   Salvar
                                                               Observações

    Qual é o campo da cidade
   exibido na caixa de seleção?
                                                                                                         Cancelar   Salvar




                             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro                            slide 19 de 44
www.3layer.com.br
Características gerais
                                                                              >> características gerais

 Essência
       Não produzir código-fonte, mas sim renderizar a interface do sistema em
       tempo de execução
 Ser independente de framework gráfico
       Protótipo em Swing
       Previsão para JSF
       Outras aplicações podem ser SWT, XUL e GWT
 Baseada no modelo de objetos do sistema
 Ter uma API minimalista
       Anotações
       Merlin.createIhc()
 Reusar (e apostar em novos) padrões
       EJB3 Persistence – JSR220
       Hibernate Validator – JSR299 (JBoss Seam)
       Java Beans Binding – JSR295


                Merlin - Um Novo Horizonte na Criação das Telas de Cadastro          slide 20 de 44
www.3layer.com.br
Características gerais
                                                                           >> características gerais


 Não utilizar metamodelo externo
   Tudo reside nas classes compiladas do sistema
 Utilizar ao máximo conceitos como heurísiticas,
 empirismo, inferência baseada em contexto, etc.
 Configuração por exceção
 Reuso de histórico




             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro           slide 21 de 44
www.3layer.com.br
Características gerais
                                                                                  >> características gerais


 Não utilizar metamodelo externo
    Tudo reside nas classes compiladas do sistema
 Utilizar ao máximo conceitos como heurísiticas,
 empirismo, inferência baseada em contexto, etc.
 Configuração por exceção
                            O custo dos geradores tradicionais
 Reuso de histórico
                                                    Custo
                                                                    S1       S2    S3      Sn




                                                                                            Tempo

               Merlin - Um Novo Horizonte na Criação das Telas de Cadastro               slide 22 de 44
www.3layer.com.br
Características gerais
                                                                                           >> histórico


 Não utilizar metamodelo externo
   Tudo reside nas classes compiladas do sistema
 Utilizar ao máximo conceitos como heurísiticas,
 empirismo, inferência baseada em contexto, etc.
 Configuração por exceção
                            O custo do Merlin
 Reuso de histórico
                                                  Custo
                                                                  S1
                                                                           S2
                                                                                S3
                                                                                      Sn

                                                                                       Tempo

             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro             slide 23 de 44
www.3layer.com.br
O histórico
                                                                                 >> histórico


 A busca por informações históricas pode ser feita no
 próprio classpath do sistema
   Em servidores de aplicação, tudo pode ser compartilhado
   Em aplicações simples (standalone), as classes com
   anotações podem ser exportadas junto
          Classes nos servidores de aplicação

           Root                  LIBs             classes


                  C1              S1              classes

                  C2              S2              classes

                  Cn              Sn              classes


             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 24 de 44
www.3layer.com.br
O histórico
                                                                                     >> slistaks


 A busca por informações históricas pode ser feita no
 próprio classpath do sistema
   Em servidores de aplicação, tudo pode ser compartilhado
   Em aplicações simples (standalone), as classes com
   anotações podem ser exportadas junto
          Classes nos servidores de aplicação

           Root                  LIBs             classes


                  C1              S1              classes

                  C2              S2              classes         Histórico

                  Cn              Sn              classes


             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro      slide 25 de 44
www.3layer.com.br
Slistaks
                                                                                >> slistaks de graça


 Informações de contexto, heurísticas, empirismo e
 inferência são utilizados para:
    Gerar corretamente nomes para labels
    Mapear os tipos de controles em função do tipo de dado
    Adicionar validadores, tamanho, etc.
    Agrupamentos
  Utilizando a ocorrência de termos para produzir o conteúdo em comboboxes

    nome                                            110
    status   12
   codigo                                           110


                  Merlin - Um Novo Horizonte na Criação das Telas de Cadastro      slide 26 de 44
www.3layer.com.br
Slistaks de graça
                                                                                        >> mais slistaks de graça


 Google como fonte de informações
    Relevância de campos pode ser obtida de forma online
 O maior contexto gratuito do mundo: A internet
 nome : 212 milhões
                                                                                    O termo nome é mais
                                                                                significativo, logo ele é usado
                                                                                      na caixa de seleção




 codigo : 148 milhões




                  Merlin - Um Novo Horizonte na Criação das Telas de Cadastro                    slide 27 de 44
www.3layer.com.br
Mais slistaks de graça
                                                                                   >> ainda slistaks de graça


 Dicionários de sinônimos
    Para inferir mapeamentos de controles
        observacao = informacaoComplementar = outrasInformacoes
    Todos geram textAreas
 Utilizando um dicionário de sinônimos gratuito para inferir mapeamentos
                                                                                observacao

                                                              Se observacao é (ou já foi) um
                                                                 textArea, é provável que
                                                             outrasInformacoes também o seja




                  Merlin - Um Novo Horizonte na Criação das Telas de Cadastro               slide 28 de 44
www.3layer.com.br
Ainda slistaks de graça
                                                                              >> eu adoro slistaks


 Algoritmos de similaridade
   Para detectar aproximações e inferir correspondências
       observacao = observacoes
   Muitos frameworks na web
    Utilizando um framework externo para identificar similaridades

    System.out.print(
      StringMetrics.compare(“observacao”,”observacoes”)
    );
    //imprime 0.8 (entre 0 e 1)


                            Por exemplo, se o valor for maior que 0.5
                            os termos são conceitualmente iguais. Se
                             observacao é (ou já foi) um textArea, é
                             provável que observacoes também seja

                Merlin - Um Novo Horizonte na Criação das Telas de Cadastro      slide 29 de 44
www.3layer.com.br
Eu adoro slistaks
                                                                              >> agrupamentos


 Corretores ortográficos
   Para gerar labels
      observacao = observação
     Utilizando corretores ortográficos disponíveis no próprio ambiente




                Merlin - Um Novo Horizonte na Criação das Telas de Cadastro    slide 30 de 44
www.3layer.com.br
Agrupamentos
                                                                                          >> dependências


 Agrupando controles nas telas
     Requisito
             Os campos Cidade, Rua e Número devem ser exibidos em conjunto
 Criando um agrupamento simples
 A tela                                                  A classe de dados
 Cadastro de Clientede Cliente
          Cadastro                                   1    @Group(caption=“Endereço”,fiel
 Dicas
                                                     2       ds=“cidade,rua,numero”)
              Nome                                   3    class Cliente {
  Endereço                                           4     String nome;
             Cidade                                  5     Cidade cidade;
               Rua                                   6     String rua;
          Número                                     7     String numero;
                                                     8    }
                                 Cancelar   Salvar




                            Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 31 de 44
www.3layer.com.br
Dependências
                                                                                                >> agentes


 Vinculando controles nas telas
     Requisito
            Se o cliente possuir cheque especial, habilitar limite de crédito


 Criando dependências simples
 A tela                                                  A classe de dados
 Cadastro de Clientede Cliente
          Cadastro                                   1    class Cliente {
 Dicas
                                                     2     String nome;
             Nome
                                                     3     @Dependence(“limite”)
     Possui cheque
                                                     4     boolean possuiCheque;
             Limite
                                                     5     double limite;
                                 Cancelar   Salvar   6    }
                                                     7
                                                     8

                            Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 32 de 44
www.3layer.com.br
Agentes
                                                                                            >> agentes


 Derivados da linguagem Eiffel, agentes são
 elementos que podem ser plugados na IU e
 executar funções diversas, como:
   Tratamento de eventos
   Invocação de regras de negócio
   Definição de propriedades O conceito de agentes
   Execução de Scripts
                                                                               Eventos

                                                  Controle                      Scripts
                                                     de
                                                    tela           ?       Regras de negócio

                                                                             Propriedades


             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro             slide 33 de 44
www.3layer.com.br
Agentes
                                                                                            >> agentes


 Derivados da linguagem Eiffel, agentes são
 elementos que podem ser plugados na IU e
 executar funções diversas, como:
   Tratamento de eventos
   Invocação de regras de negócio
   Definição de propriedades O conceito de agentes
   Execução de Scripts
                                                                               Eventos

                                                  Controle                      Scripts
                                                     de         Agentes
                                                    tela                   Regras de negócio

                                                                             Propriedades


             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro             slide 34 de 44
www.3layer.com.br
Agentes
                                                                                                >> agentes


 Agentes na execução de regras de negócio
     Requisito
            Ao preencher o salário do cliente, se ele não tiver débitos deve ser
            habilitado um cartão de crédito para ele.
 Conectando eventos e regras de negócio
 A tela                                                  A classe de dados
 Cadastro de Clientede Cliente
          Cadastro                                   1    class Cliente {
 Dicas
                                                     2     String nome;
             Nome
                                                     3     @Agent(
            Salário
                                                     4       event={“focusLost”},
  Cartão de crédito
                                                     5       action={“habilitarCartao”})
                                 Cancelar   Salvar   6     float salario;
                                                     7     boolean cartaoCredito;
                                                     8    }
                            Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 35 de 44
www.3layer.com.br
Agentes
                                                                                    >> agentes


 Agentes na execução de regras de negócio
   Requisito
       Ao preencher o salário do cliente, se ele não tiver débitos deve ser
       habilitado um cartão de crédito para ele.
 Implementando a regra de negócio
  1 public class AlgumasRegras {
  2 public void habilitarCartao() {
  3   JTextField salario = (JTextField)
  4     Merlin.getControle(“cliente.salario”);
  5   //processa a regra de negócio...
  6   JCheckBox cartao = (JCheckBox)
  7     Merlin.getControle(“cliente.cartaoCredito”);
  8   cartao.setEnabled(!debitos);
  9 }
 10 }


                Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 36 de 44
www.3layer.com.br
Agentes
                                                                                                >> agentes


 Agentes na execução de regras de negócio
     Requisito (agora de forma assíncrona)
            Ao preencher o salário do cliente, se ele não tiver débitos deve ser
            habilitado um cartão de crédito para ele.
 Conectando eventos e regras de negócio de forma assíncrona
 A tela                                                  A classe de dados
 Cadastro de Clientede Cliente
          Cadastro                                   1    class Cliente {
 Dicas
                                                     2     String nome;
             Nome
                                                     3     @Async @Agent(
            Salário
                                                     4       event={“focusLost”},
  Cartão de crédito
                                                     5       action={“habilitarCartao”})
                                 Cancelar   Salvar   6     float salario;
                                                     7     boolean cartaoCredito;
                                                     8    }
                            Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 37 de 44
www.3layer.com.br
Agentes
                                                                                                >> agentes


 Agentes na definição de propriedades de controles
     Requisito
            Aplicar uma borda verde saliente sobre o nome do cliente.
 Uma interface com controle customizado
 A tela                                                  A classe de dados
 Cadastro de Clientede Cliente
          Cadastro                                   1    class Cliente {
 Dicas
                                                     2     @Agent(
             Nome
                                                     3       property={“border=BorderFac
            Salário                                          tory.createLineBorder(Color
                                                     4       .green,2)”})
  Cartão de crédito
                                                     5     String nome;
                                 Cancelar   Salvar
                                                     6     float salario;
                                                     7     boolean cartaoCredito;
                                                     8    }

                            Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 38 de 44
www.3layer.com.br
Agentes
                                                                                                >> agentes


 Agentes na execução de scripts (BeanShell, Groovy, etc.)
      Requisito
            Criar uma regra externa configurável para calcular o limite de
            crédito do cliente em função do valor do salário.

 Utilizando agentes para externalizar comportamentos através de scripts
 A tela                                                  A classe de dados
 Cadastro de Clientede Cliente
          Cadastro                                   1    class Cliente {
  Dicas
                                                     2     String nome;
             Nome
                                                     3
                                                           @Agent(
            Salário                                          script={“/scripts/calc.js”})
                                                     4     float salario;
  Limite de crédito

                                                     5     float limiteCredito;
                                 Cancelar   Salvar

                                                     6    }

                            Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 39 de 44
www.3layer.com.br
Agentes
                                                                                            >> layout


 Agentes na execução de scripts (BeanShell, Groovy, etc.)
   Requisito
        Criar uma regra externa configurável para calcular o limite de
        crédito do cliente.

   O script externo escrito em BeanShell
   /scripts/calc.js
    1   var salario = new Float(this.caller.getText());
    2
    3 var limite =
    4   Merlin.getControle(“cliente.limiteCredito”);
    5
    6   limite.setText(salario * 0.3);



                      Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 40 de 44
www.3layer.com.br
Layout
                                                                                     >> layout

 O posicionamento de controles é totalmente executado por
 algoritmos, os quais utilizam
    Gerenciadores de layout (TableLayout, JGoodies Forms)
    Heurísiticas, UI patterns, regras de usabilidade
    Configurações via anotações


 Customizações
    Simples
       Uso de anotações
    Complexas
       Implementação de novos algoritmos
    Malucas
       Design manual
                Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 41 de 44
www.3layer.com.br
Layout
                                                                                                        >> layout


   Alterando o layout via anotações
             Modificando algumas coisas

Redefinindo a ordem de controles e a posição de labels na tela
A tela                                                 A classe de dados
Cadastro de Clientede Cliente
         Cadastro
                                                   1    class Cliente {
          Salário                                  2     @Order(after=“observacoes”)
                    Observações
                                                   3     String nome;
 Observações
  5                                                4     float salario;
                                                   5     @Caption(pos=Caption.TOP_LEFT)
      2    Nome
                                                   6     String observacoes;
                                                   7    }



                                  Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 42 de 44
www.3layer.com.br
Layout
                                                                                                      >> layout


   Alterando o layout via anotações
          Modificando tudo de uma vez

Redefinindo a ordem de controles e a posição de todos os labels na tela
A tela                                               A classe de dados
Cadastro de Clientede Cliente
         Cadastro
                                                 1    @Caption(pos=Caption.TOP_LEFT)
Salário
                                                 2    class Cliente {
Observações
                                                 3     @Order(after=“observacoes”)
                                                 4     String nome;
                                                 5     float salario;
Nome                                             6     String observacoes;
                                                 7    }



                                Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 43 de 44
www.3layer.com.br
Layout
                                                                                    >> layout


  Criando um layout maluco
 1.   Cria-se uma classe IU com o layout desejado



               Um exemplo de layout manual
                O template
                   TemplateMaluco extends JPanel
                            Cadastro de Cliente




              Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 44 de 44
www.3layer.com.br
Layout
                                                                                   >> layout


 Criando um layout maluco
 2. Define-se nomes de controles idênticos aos que serão
    gerados

              Um exemplo de layout manual
               O template
                  TemplateMaluco extends JPanel
                           Cadastro de Cliente
                                                  salario
                                                 lblSalario
                   lblObservacoes
                             observacoes

                                                  lblNome

                                    nome




             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 45 de 44
www.3layer.com.br
Layout
                                                                               >> extensões


 Criando um layout maluco
 3. Executa-se a geração passando o template como
    parâmetro
      Merlin.createIhc(Cliente.class, TemplateMaluco.class);

              Um exemplo de layout manual
               O template
                            Cadastro de Cliente
                  Cadastro de Clientede Cliente
                           Cadastro



                                                  Salário
                 Observações


                                                   Nome




             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 46 de 44
www.3layer.com.br
Extensões
                                                                                                   >> extensões

    Modificando os controles de tela gerados
Uma interface padrão
A classe de dados                            A tela gerada
1   class Cliente {                          Cadastro de Cliente Cliente
                                                    Cadastro de
                                             Dicas
2    String nome;
                                                     Nome
3    Cidade naturalidade
                                             Naturalidade
4   }
                                                                           Cancelar   Salvar




                    Merlin - Um Novo Horizonte na Criação das Telas de Cadastro                slide 47 de 44
www.3layer.com.br
Extensões
                                                                                                         >> extensões

    Modificando os controles de tela gerados
Uma interface com controle customizado
    A classe de dados                            A tela gerada
1   class Cliente {                              Cadastro de Clientede Cliente
                                                          Cadastro
                                                 Dicas
2    String nome;
                                                         Nome
3    @RenderAs(Lookup.class)
                                                 Naturalidade
4    Cidade naturalidade
5   }                                                                            Cancelar   Salvar




                        Merlin - Um Novo Horizonte na Criação das Telas de Cadastro                  slide 48 de 44
www.3layer.com.br
Extensões
                                                                                            >> estágio atual e perspectivas

    Modificando os controles de tela gerados
Uma interface com controle customizado
    A classe de dados                            A tela gerada
1   class Cliente {                              Cadastro de Clientede Cliente
                                                          Cadastro
                                                 Dicas
2    String nome;
                                                         Nome
3    @RenderAs(Lookup.class)
                                                 Naturalidade
4    Cidade naturalidade
5   }                                                                            Cancelar    Salvar




Criando o controle customizado
1 class Lookup extends JPanel
2                     implements IRenderer {
3   //metodos para binding do controle
4 }


                        Merlin - Um Novo Horizonte na Criação das Telas de Cadastro                       slide 49 de 44
www.3layer.com.br
Estágio atual e perspectivas
                                                                                        >> EOF

 Divulgação
 Alfa release disponível
    Controles básicos, agentes, layout e anotações essenciais
    Telas de cadastro simples
 Parte teórica em desenvolvimento
    Binding
    Telas mestre-detalhte
    Integração com outros frameworks
 Captação de recursos financeiros
 Para 2008
    Início: Beta release em Swing
    Final: Beta release em JSF
 2009 em diante
    Gerência de realimentação

                Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 50 de 44
www.3layer.com.br
Fim




                                                                                        www.3layer.com.br
 Conteúdo
   http://merlin.dev.java.net
   http://merlin.3layer.com.br
   http://treelayer.dev.java.net
 Contato
   http://groups.google.com/group/treelayer-merlin
 Histórias
   http://telasdecadastro.blogspot.com




             Merlin - Um Novo Horizonte na Criação das Telas de Cadastro   slide 51 de 44

Weitere ähnliche Inhalte

Ähnlich wie Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Curso programação web em PHP
Curso programação web em PHPCurso programação web em PHP
Curso programação web em PHPRaphael Cangucu
 
Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010Elias Nogueira
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
ALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerAlan Carlos
 
Testes de Performance na Nuvem | TDC2014
Testes de Performance na Nuvem | TDC2014Testes de Performance na Nuvem | TDC2014
Testes de Performance na Nuvem | TDC2014Júlio de Lima
 
Teste de performance na nuvem com JMeter e BlazeMeter TDC2014
Teste de performance na nuvem com JMeter e BlazeMeter TDC2014Teste de performance na nuvem com JMeter e BlazeMeter TDC2014
Teste de performance na nuvem com JMeter e BlazeMeter TDC2014Qualister
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasBreno Vitorino
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoComunidade NetPonto
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patternsAndre Baltieri
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Douglas Roeder
 
ProgramaçãO Em Camadas E O Foco Em Desenvolvimento
ProgramaçãO Em Camadas E O Foco Em DesenvolvimentoProgramaçãO Em Camadas E O Foco Em Desenvolvimento
ProgramaçãO Em Camadas E O Foco Em DesenvolvimentoRafael Pinheiro
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosComunidade NetPonto
 

Ähnlich wie Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro (20)

Asp.Net Mvc Dev Days09 V3 Pt
Asp.Net Mvc Dev Days09 V3 PtAsp.Net Mvc Dev Days09 V3 Pt
Asp.Net Mvc Dev Days09 V3 Pt
 
Curso programação web em PHP
Curso programação web em PHPCurso programação web em PHP
Curso programação web em PHP
 
Artigo c#
Artigo c#Artigo c#
Artigo c#
 
Aula1
Aula1Aula1
Aula1
 
Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010
 
Conhecendo o Ruby on Rails
Conhecendo o Ruby on RailsConhecendo o Ruby on Rails
Conhecendo o Ruby on Rails
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
ALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test Manager
 
Testes de Performance na Nuvem | TDC2014
Testes de Performance na Nuvem | TDC2014Testes de Performance na Nuvem | TDC2014
Testes de Performance na Nuvem | TDC2014
 
Teste de performance na nuvem com JMeter e BlazeMeter TDC2014
Teste de performance na nuvem com JMeter e BlazeMeter TDC2014Teste de performance na nuvem com JMeter e BlazeMeter TDC2014
Teste de performance na nuvem com JMeter e BlazeMeter TDC2014
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e Técnicas
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
Aula04 3
Aula04 3Aula04 3
Aula04 3
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patterns
 
Padrões de Projeto Web e o MVC
Padrões de Projeto Web e o MVCPadrões de Projeto Web e o MVC
Padrões de Projeto Web e o MVC
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01
 
ProgramaçãO Em Camadas E O Foco Em Desenvolvimento
ProgramaçãO Em Camadas E O Foco Em DesenvolvimentoProgramaçãO Em Camadas E O Foco Em Desenvolvimento
ProgramaçãO Em Camadas E O Foco Em Desenvolvimento
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes Unitários
 

Mehr von Marcelo Mrack

Atlassian Confluence and Google Search Appliance Integration
Atlassian Confluence and Google Search Appliance IntegrationAtlassian Confluence and Google Search Appliance Integration
Atlassian Confluence and Google Search Appliance IntegrationMarcelo Mrack
 
Atlassian Crucible pela 3layer Tecnologia
Atlassian Crucible pela 3layer TecnologiaAtlassian Crucible pela 3layer Tecnologia
Atlassian Crucible pela 3layer TecnologiaMarcelo Mrack
 
Atlassian Crowd pela 3layer Tecnologia
Atlassian Crowd pela 3layer TecnologiaAtlassian Crowd pela 3layer Tecnologia
Atlassian Crowd pela 3layer TecnologiaMarcelo Mrack
 
Atlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer TecnologiaAtlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer TecnologiaMarcelo Mrack
 
Atlassian Bamboo pela 3layer Tecnologia
Atlassian Bamboo pela 3layer TecnologiaAtlassian Bamboo pela 3layer Tecnologia
Atlassian Bamboo pela 3layer TecnologiaMarcelo Mrack
 
Folders dos produtos Atlassian em portugues
Folders dos produtos Atlassian em portuguesFolders dos produtos Atlassian em portugues
Folders dos produtos Atlassian em portuguesMarcelo Mrack
 
Plataforma Atlassian Na Gestao De Horas E Timesheet De Atividades
Plataforma Atlassian Na Gestao De Horas E Timesheet De AtividadesPlataforma Atlassian Na Gestao De Horas E Timesheet De Atividades
Plataforma Atlassian Na Gestao De Horas E Timesheet De AtividadesMarcelo Mrack
 
Geracao Automatica Assistida Iu Marcelo Mrack
Geracao Automatica Assistida Iu Marcelo MrackGeracao Automatica Assistida Iu Marcelo Mrack
Geracao Automatica Assistida Iu Marcelo MrackMarcelo Mrack
 
Workshop Hibernate Com Comentarios
Workshop Hibernate Com ComentariosWorkshop Hibernate Com Comentarios
Workshop Hibernate Com ComentariosMarcelo Mrack
 

Mehr von Marcelo Mrack (9)

Atlassian Confluence and Google Search Appliance Integration
Atlassian Confluence and Google Search Appliance IntegrationAtlassian Confluence and Google Search Appliance Integration
Atlassian Confluence and Google Search Appliance Integration
 
Atlassian Crucible pela 3layer Tecnologia
Atlassian Crucible pela 3layer TecnologiaAtlassian Crucible pela 3layer Tecnologia
Atlassian Crucible pela 3layer Tecnologia
 
Atlassian Crowd pela 3layer Tecnologia
Atlassian Crowd pela 3layer TecnologiaAtlassian Crowd pela 3layer Tecnologia
Atlassian Crowd pela 3layer Tecnologia
 
Atlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer TecnologiaAtlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer Tecnologia
 
Atlassian Bamboo pela 3layer Tecnologia
Atlassian Bamboo pela 3layer TecnologiaAtlassian Bamboo pela 3layer Tecnologia
Atlassian Bamboo pela 3layer Tecnologia
 
Folders dos produtos Atlassian em portugues
Folders dos produtos Atlassian em portuguesFolders dos produtos Atlassian em portugues
Folders dos produtos Atlassian em portugues
 
Plataforma Atlassian Na Gestao De Horas E Timesheet De Atividades
Plataforma Atlassian Na Gestao De Horas E Timesheet De AtividadesPlataforma Atlassian Na Gestao De Horas E Timesheet De Atividades
Plataforma Atlassian Na Gestao De Horas E Timesheet De Atividades
 
Geracao Automatica Assistida Iu Marcelo Mrack
Geracao Automatica Assistida Iu Marcelo MrackGeracao Automatica Assistida Iu Marcelo Mrack
Geracao Automatica Assistida Iu Marcelo Mrack
 
Workshop Hibernate Com Comentarios
Workshop Hibernate Com ComentariosWorkshop Hibernate Com Comentarios
Workshop Hibernate Com Comentarios
 

Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

  • 1. www.3layer.com.br www.3layer.com.br Merlin Um Novo Horizonte na Criação das Telas de Cadastro
  • 2. www.3layer.com.br Sumário >> panorama geral Cenário A proposta Comparações Características e Funcionalidades O presente e o futuro EOF Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 2 de 44
  • 3. www.3layer.com.br Sobre o autor Marcelo Mrack, mmrack@gmail.com 29 anos, 8 em TI, 6 em Java Bacharel em C. Computação, UNISC – 2001 Mestrando em C. Computação, UFRGS – 2006 Atuação em projetos web e desktop n camadas Arquiteto na 3Layer Tecnologia Projetista na CWI Software Consultor e instrutor Hibernate, Java EE Especialidades: IHC, Patterns, geradores, PU Ágil e UML Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 3 de 44
  • 4. www.3layer.com.br Panorama geral >> a construção da IU hoje Quanto custa construir um sistema Custo de construção Sistema completo 100% 1 Interface do usuário 50% 1 TC 30% 2 TC elementares 18% 2 Referências 1 Meyers, Brad – User Interface Software Tools (1994,2002) 2 Pesquisas próprias (2005,2006) Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 4 de 44
  • 5. www.3layer.com.br A construção da IU hoje >> a ferramenta proposta O cenário atual As diversas formas de construir interface de usuário e os problemas em comum Abordagens Problemas recorrentes Escrita de código-fonte Tempo elevado de construção Uso de ferramentas WYSIWYG1 Quanto custa criar um template? Uso de assistentes de criação Demora nas alterações Como refatorar classes já geradas? Geração baseada em modelos E se o código já foi alterado? Templates Falta de reuso MDA Posso reusar o label “Nome do cliente” em projetos diferentes? Gerência de código Código template ou não? E a versão? 1. ( WYSIWYG: /wǺziwǺg/ ) What You See Is What You Get, ou seja o que você vê (ou o que você desenha no editor) é o que você tem quando o sistema estiver em execução. Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 5 de 44
  • 6. www.3layer.com.br A ferramenta proposta >> motivação Abdicar totalmente da geração do código-fonte Em outras palavras, gerar a TC durante a execução do sistema, através de um processo de interpretação de meta-informações oriundas do próprio modelo de dados A idéia-chave class Cliente { new JFrame.add( String codigo; CAFE Merlin.createIhc(Pessoa.class) String nome; ).setVisible(true); } Tempo de projeto Tempo de execução Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 6 de 44
  • 7. www.3layer.com.br Motivação >> motivação TC são funções do modelo de dados A dependência da TC em relação ao modelo de dados Modelo de classes Tela de Cadastro consistência, aparência, validação, organização, customizações, etc. Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 7 de 44
  • 8. www.3layer.com.br Motivação >> motivação Regras clássicas Classe Tela Atributo Controle Relacionamento Link Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 8 de 44
  • 9. www.3layer.com.br Motivação >> motivação Regras clássicas Implementando as regras clássicas Classe Tela A classe de dados Atributo Controle public class Cliente { 1 String nome; Relacionamento Link Cidade naturalidade; boolean ativo; } O cadastro gerado Cadastro de Clientes 1 Nome Naturalidade Ativo Cancelar Salvar Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 9 de 44
  • 10. www.3layer.com.br Motivação >> motivação Regras clássicas Implementando as regras clássicas Classe Tela A classe de dados Atributo Controle public class Cliente { 2 String nome; Relacionamento Link Cidade naturalidade; boolean ativo; } O cadastro gerado Cadastro de Clientes Nome 2 Naturalidade Ativo Cancelar Salvar Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 10 de 44
  • 11. www.3layer.com.br Motivação >> o objetivo da ferramenta Regras clássicas Implementando as regras clássicas Classe Tela A classe de dados Atributo Controle public class Cliente { String nome; Relacionamento Link Cidade naturalidade; 3 boolean ativo; } O cadastro gerado Cadastro de Clientes Nome Naturalidade Ativo 3 Cancelar Salvar Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 11 de 44
  • 12. www.3layer.com.br O objetivo da ferramenta >> algumas definições Gerar TCs elementares com o menor esforço possível Um exemplo de interface elementar a ser gerada O código essencial new JFrame().add( Merlin.createIhc(Usuario.class) ).setVisible(true); Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 12 de 44
  • 13. www.3layer.com.br Algunas definições importantes >> o processo Contexto É a relação entre o elemento e o ambiente em que ele ocorre Algo é importante dependendo do local onde ele está Empirismo É o conhecimento baseado na experiência Eu sei porque eu já fiz isso É reativo Heurística É o conhecimento baseado em aproximações Eu acho que sei porque eu já fiz algo parecido É pró-ativa Inferência Obtém-se novos conhecimentos a partir de informações existentes Quanto mais contexto, melhor Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 13 de 44
  • 14. www.3layer.com.br O processo >> comparação 1. Cria-se as classes de dados 2. Opcionalmente, decora-se elas com anotações 3. Dentro da aplicação, invoca-se Merlin.createIhc sobre a classe ou objeto Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 14 de 44
  • 15. www.3layer.com.br Uma pequena comparação >> comparação A mesma entrada e as diferentes saídas... Uma classe de dados para teste ... ... ou em notação UML public class Usuario { long codigo; String nome; String observacoes; String logradouro; int numero; Cidade cidade; String complemento; } Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 15 de 44
  • 16. www.3layer.com.br Uma pequena comparação >> comparação A mesma entrada e as diferentes saídas... Interfaces geradas por ferramentas tradicionais (a) e pelo Merlin (b) Um gerador tradicional (a) Merlin (b) usuario Cadastro de Usuário Dicas Dicas codigo O campo nome é obrigatório. O campo logradouro é obrigatório nome O campo número é obrigatório cidade Nome logradouro Rua São Sepé Endereço numero 256 Cidade complemento Logradouro Rua São Sepé observacoes Número 256 Complemento Cancelar Salvar Observações Cancelar Salvar Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 16 de 44
  • 17. www.3layer.com.br Uma pequena comparação >> comparação A mesma entrada e as diferentes saídas... Interfaces geradas por ferramentas tradicionais (a) e pelo Merlin (b) Um gerador tradicional (a) Merlin (b) usuario Cadastro de Usuário Dicas Dicas codigo O campo nome é obrigatório. O campo logradouro é obrigatório nome O campo número é obrigatório cidade Nome logradouro Rua São Sepé Endereço numero 256 Cidade complemento Logradouro Rua São Sepé observacoes Número 256 Complemento Cancelar Salvar Observações Porque Observações é uma caixa de texto de múltiplas linhas? Cancelar Salvar Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 17 de 44
  • 18. www.3layer.com.br Uma pequena comparação >> comparação A mesma entrada e as diferentes saídas... Interfaces geradas por ferramentas tradicionais (a) e pelo Merlin (b) Um gerador tradicional (a) Merlin (b) usuario Cadastro de Usuário Dicas Dicas codigo O campo nome é obrigatório. O campo logradouro é obrigatório nome O campo número é obrigatório cidade Nome logradouro Rua São Sepé Endereço numero 256 Cidade complemento Logradouro Rua São Sepé observacoes Número 256 Complemento Cancelar Salvar Observações Porque é Observações e não Observacoes? Cancelar Salvar Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 18 de 44
  • 19. www.3layer.com.br Uma pequena comparação >> características gerais A mesma entrada e as diferentes saídas... Interfaces geradas por ferramentas tradicionais (a) e pelo Merlin (b) Um gerador tradicional (a) Merlin (b) usuario Cadastro de Usuário Dicas Dicas codigo O campo nome é obrigatório. O campo logradouro é obrigatório nome O campo número é obrigatório cidade Nome logradouro Rua São Sepé Endereço numero 256 Cidade complemento Logradouro Rua São Sepé observacoes Número 256 Complemento Cancelar Salvar Observações Qual é o campo da cidade exibido na caixa de seleção? Cancelar Salvar Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 19 de 44
  • 20. www.3layer.com.br Características gerais >> características gerais Essência Não produzir código-fonte, mas sim renderizar a interface do sistema em tempo de execução Ser independente de framework gráfico Protótipo em Swing Previsão para JSF Outras aplicações podem ser SWT, XUL e GWT Baseada no modelo de objetos do sistema Ter uma API minimalista Anotações Merlin.createIhc() Reusar (e apostar em novos) padrões EJB3 Persistence – JSR220 Hibernate Validator – JSR299 (JBoss Seam) Java Beans Binding – JSR295 Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 20 de 44
  • 21. www.3layer.com.br Características gerais >> características gerais Não utilizar metamodelo externo Tudo reside nas classes compiladas do sistema Utilizar ao máximo conceitos como heurísiticas, empirismo, inferência baseada em contexto, etc. Configuração por exceção Reuso de histórico Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 21 de 44
  • 22. www.3layer.com.br Características gerais >> características gerais Não utilizar metamodelo externo Tudo reside nas classes compiladas do sistema Utilizar ao máximo conceitos como heurísiticas, empirismo, inferência baseada em contexto, etc. Configuração por exceção O custo dos geradores tradicionais Reuso de histórico Custo S1 S2 S3 Sn Tempo Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 22 de 44
  • 23. www.3layer.com.br Características gerais >> histórico Não utilizar metamodelo externo Tudo reside nas classes compiladas do sistema Utilizar ao máximo conceitos como heurísiticas, empirismo, inferência baseada em contexto, etc. Configuração por exceção O custo do Merlin Reuso de histórico Custo S1 S2 S3 Sn Tempo Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 23 de 44
  • 24. www.3layer.com.br O histórico >> histórico A busca por informações históricas pode ser feita no próprio classpath do sistema Em servidores de aplicação, tudo pode ser compartilhado Em aplicações simples (standalone), as classes com anotações podem ser exportadas junto Classes nos servidores de aplicação Root LIBs classes C1 S1 classes C2 S2 classes Cn Sn classes Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 24 de 44
  • 25. www.3layer.com.br O histórico >> slistaks A busca por informações históricas pode ser feita no próprio classpath do sistema Em servidores de aplicação, tudo pode ser compartilhado Em aplicações simples (standalone), as classes com anotações podem ser exportadas junto Classes nos servidores de aplicação Root LIBs classes C1 S1 classes C2 S2 classes Histórico Cn Sn classes Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 25 de 44
  • 26. www.3layer.com.br Slistaks >> slistaks de graça Informações de contexto, heurísticas, empirismo e inferência são utilizados para: Gerar corretamente nomes para labels Mapear os tipos de controles em função do tipo de dado Adicionar validadores, tamanho, etc. Agrupamentos Utilizando a ocorrência de termos para produzir o conteúdo em comboboxes nome 110 status 12 codigo 110 Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 26 de 44
  • 27. www.3layer.com.br Slistaks de graça >> mais slistaks de graça Google como fonte de informações Relevância de campos pode ser obtida de forma online O maior contexto gratuito do mundo: A internet nome : 212 milhões O termo nome é mais significativo, logo ele é usado na caixa de seleção codigo : 148 milhões Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 27 de 44
  • 28. www.3layer.com.br Mais slistaks de graça >> ainda slistaks de graça Dicionários de sinônimos Para inferir mapeamentos de controles observacao = informacaoComplementar = outrasInformacoes Todos geram textAreas Utilizando um dicionário de sinônimos gratuito para inferir mapeamentos observacao Se observacao é (ou já foi) um textArea, é provável que outrasInformacoes também o seja Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 28 de 44
  • 29. www.3layer.com.br Ainda slistaks de graça >> eu adoro slistaks Algoritmos de similaridade Para detectar aproximações e inferir correspondências observacao = observacoes Muitos frameworks na web Utilizando um framework externo para identificar similaridades System.out.print( StringMetrics.compare(“observacao”,”observacoes”) ); //imprime 0.8 (entre 0 e 1) Por exemplo, se o valor for maior que 0.5 os termos são conceitualmente iguais. Se observacao é (ou já foi) um textArea, é provável que observacoes também seja Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 29 de 44
  • 30. www.3layer.com.br Eu adoro slistaks >> agrupamentos Corretores ortográficos Para gerar labels observacao = observação Utilizando corretores ortográficos disponíveis no próprio ambiente Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 30 de 44
  • 31. www.3layer.com.br Agrupamentos >> dependências Agrupando controles nas telas Requisito Os campos Cidade, Rua e Número devem ser exibidos em conjunto Criando um agrupamento simples A tela A classe de dados Cadastro de Clientede Cliente Cadastro 1 @Group(caption=“Endereço”,fiel Dicas 2 ds=“cidade,rua,numero”) Nome 3 class Cliente { Endereço 4 String nome; Cidade 5 Cidade cidade; Rua 6 String rua; Número 7 String numero; 8 } Cancelar Salvar Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 31 de 44
  • 32. www.3layer.com.br Dependências >> agentes Vinculando controles nas telas Requisito Se o cliente possuir cheque especial, habilitar limite de crédito Criando dependências simples A tela A classe de dados Cadastro de Clientede Cliente Cadastro 1 class Cliente { Dicas 2 String nome; Nome 3 @Dependence(“limite”) Possui cheque 4 boolean possuiCheque; Limite 5 double limite; Cancelar Salvar 6 } 7 8 Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 32 de 44
  • 33. www.3layer.com.br Agentes >> agentes Derivados da linguagem Eiffel, agentes são elementos que podem ser plugados na IU e executar funções diversas, como: Tratamento de eventos Invocação de regras de negócio Definição de propriedades O conceito de agentes Execução de Scripts Eventos Controle Scripts de tela ? Regras de negócio Propriedades Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 33 de 44
  • 34. www.3layer.com.br Agentes >> agentes Derivados da linguagem Eiffel, agentes são elementos que podem ser plugados na IU e executar funções diversas, como: Tratamento de eventos Invocação de regras de negócio Definição de propriedades O conceito de agentes Execução de Scripts Eventos Controle Scripts de Agentes tela Regras de negócio Propriedades Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 34 de 44
  • 35. www.3layer.com.br Agentes >> agentes Agentes na execução de regras de negócio Requisito Ao preencher o salário do cliente, se ele não tiver débitos deve ser habilitado um cartão de crédito para ele. Conectando eventos e regras de negócio A tela A classe de dados Cadastro de Clientede Cliente Cadastro 1 class Cliente { Dicas 2 String nome; Nome 3 @Agent( Salário 4 event={“focusLost”}, Cartão de crédito 5 action={“habilitarCartao”}) Cancelar Salvar 6 float salario; 7 boolean cartaoCredito; 8 } Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 35 de 44
  • 36. www.3layer.com.br Agentes >> agentes Agentes na execução de regras de negócio Requisito Ao preencher o salário do cliente, se ele não tiver débitos deve ser habilitado um cartão de crédito para ele. Implementando a regra de negócio 1 public class AlgumasRegras { 2 public void habilitarCartao() { 3 JTextField salario = (JTextField) 4 Merlin.getControle(“cliente.salario”); 5 //processa a regra de negócio... 6 JCheckBox cartao = (JCheckBox) 7 Merlin.getControle(“cliente.cartaoCredito”); 8 cartao.setEnabled(!debitos); 9 } 10 } Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 36 de 44
  • 37. www.3layer.com.br Agentes >> agentes Agentes na execução de regras de negócio Requisito (agora de forma assíncrona) Ao preencher o salário do cliente, se ele não tiver débitos deve ser habilitado um cartão de crédito para ele. Conectando eventos e regras de negócio de forma assíncrona A tela A classe de dados Cadastro de Clientede Cliente Cadastro 1 class Cliente { Dicas 2 String nome; Nome 3 @Async @Agent( Salário 4 event={“focusLost”}, Cartão de crédito 5 action={“habilitarCartao”}) Cancelar Salvar 6 float salario; 7 boolean cartaoCredito; 8 } Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 37 de 44
  • 38. www.3layer.com.br Agentes >> agentes Agentes na definição de propriedades de controles Requisito Aplicar uma borda verde saliente sobre o nome do cliente. Uma interface com controle customizado A tela A classe de dados Cadastro de Clientede Cliente Cadastro 1 class Cliente { Dicas 2 @Agent( Nome 3 property={“border=BorderFac Salário tory.createLineBorder(Color 4 .green,2)”}) Cartão de crédito 5 String nome; Cancelar Salvar 6 float salario; 7 boolean cartaoCredito; 8 } Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 38 de 44
  • 39. www.3layer.com.br Agentes >> agentes Agentes na execução de scripts (BeanShell, Groovy, etc.) Requisito Criar uma regra externa configurável para calcular o limite de crédito do cliente em função do valor do salário. Utilizando agentes para externalizar comportamentos através de scripts A tela A classe de dados Cadastro de Clientede Cliente Cadastro 1 class Cliente { Dicas 2 String nome; Nome 3 @Agent( Salário script={“/scripts/calc.js”}) 4 float salario; Limite de crédito 5 float limiteCredito; Cancelar Salvar 6 } Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 39 de 44
  • 40. www.3layer.com.br Agentes >> layout Agentes na execução de scripts (BeanShell, Groovy, etc.) Requisito Criar uma regra externa configurável para calcular o limite de crédito do cliente. O script externo escrito em BeanShell /scripts/calc.js 1 var salario = new Float(this.caller.getText()); 2 3 var limite = 4 Merlin.getControle(“cliente.limiteCredito”); 5 6 limite.setText(salario * 0.3); Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 40 de 44
  • 41. www.3layer.com.br Layout >> layout O posicionamento de controles é totalmente executado por algoritmos, os quais utilizam Gerenciadores de layout (TableLayout, JGoodies Forms) Heurísiticas, UI patterns, regras de usabilidade Configurações via anotações Customizações Simples Uso de anotações Complexas Implementação de novos algoritmos Malucas Design manual Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 41 de 44
  • 42. www.3layer.com.br Layout >> layout Alterando o layout via anotações Modificando algumas coisas Redefinindo a ordem de controles e a posição de labels na tela A tela A classe de dados Cadastro de Clientede Cliente Cadastro 1 class Cliente { Salário 2 @Order(after=“observacoes”) Observações 3 String nome; Observações 5 4 float salario; 5 @Caption(pos=Caption.TOP_LEFT) 2 Nome 6 String observacoes; 7 } Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 42 de 44
  • 43. www.3layer.com.br Layout >> layout Alterando o layout via anotações Modificando tudo de uma vez Redefinindo a ordem de controles e a posição de todos os labels na tela A tela A classe de dados Cadastro de Clientede Cliente Cadastro 1 @Caption(pos=Caption.TOP_LEFT) Salário 2 class Cliente { Observações 3 @Order(after=“observacoes”) 4 String nome; 5 float salario; Nome 6 String observacoes; 7 } Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 43 de 44
  • 44. www.3layer.com.br Layout >> layout Criando um layout maluco 1. Cria-se uma classe IU com o layout desejado Um exemplo de layout manual O template TemplateMaluco extends JPanel Cadastro de Cliente Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 44 de 44
  • 45. www.3layer.com.br Layout >> layout Criando um layout maluco 2. Define-se nomes de controles idênticos aos que serão gerados Um exemplo de layout manual O template TemplateMaluco extends JPanel Cadastro de Cliente salario lblSalario lblObservacoes observacoes lblNome nome Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 45 de 44
  • 46. www.3layer.com.br Layout >> extensões Criando um layout maluco 3. Executa-se a geração passando o template como parâmetro Merlin.createIhc(Cliente.class, TemplateMaluco.class); Um exemplo de layout manual O template Cadastro de Cliente Cadastro de Clientede Cliente Cadastro Salário Observações Nome Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 46 de 44
  • 47. www.3layer.com.br Extensões >> extensões Modificando os controles de tela gerados Uma interface padrão A classe de dados A tela gerada 1 class Cliente { Cadastro de Cliente Cliente Cadastro de Dicas 2 String nome; Nome 3 Cidade naturalidade Naturalidade 4 } Cancelar Salvar Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 47 de 44
  • 48. www.3layer.com.br Extensões >> extensões Modificando os controles de tela gerados Uma interface com controle customizado A classe de dados A tela gerada 1 class Cliente { Cadastro de Clientede Cliente Cadastro Dicas 2 String nome; Nome 3 @RenderAs(Lookup.class) Naturalidade 4 Cidade naturalidade 5 } Cancelar Salvar Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 48 de 44
  • 49. www.3layer.com.br Extensões >> estágio atual e perspectivas Modificando os controles de tela gerados Uma interface com controle customizado A classe de dados A tela gerada 1 class Cliente { Cadastro de Clientede Cliente Cadastro Dicas 2 String nome; Nome 3 @RenderAs(Lookup.class) Naturalidade 4 Cidade naturalidade 5 } Cancelar Salvar Criando o controle customizado 1 class Lookup extends JPanel 2 implements IRenderer { 3 //metodos para binding do controle 4 } Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 49 de 44
  • 50. www.3layer.com.br Estágio atual e perspectivas >> EOF Divulgação Alfa release disponível Controles básicos, agentes, layout e anotações essenciais Telas de cadastro simples Parte teórica em desenvolvimento Binding Telas mestre-detalhte Integração com outros frameworks Captação de recursos financeiros Para 2008 Início: Beta release em Swing Final: Beta release em JSF 2009 em diante Gerência de realimentação Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 50 de 44
  • 51. www.3layer.com.br Fim www.3layer.com.br Conteúdo http://merlin.dev.java.net http://merlin.3layer.com.br http://treelayer.dev.java.net Contato http://groups.google.com/group/treelayer-merlin Histórias http://telasdecadastro.blogspot.com Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 51 de 44