O
que é um pattern?
O conceito de "pattern" (padrão) é bastante usado
na programação orientada aos objetos e, consiste na descrição de um problema
recorrente e a melhor solução para o mesmo, que foi utilizada anteriormente para
resolver este mesmo problema. Isto facilita a resolução destes problemas, já que
não é necessário "reinventar a roda" outra vez.
A ferramenta Patterns da
ARTech é um marco que permite gerar código GeneXus a partir destes padrões. Esta
ferramenta conta com alguns padrões já implementados e tem a possibilidade de
implementar novos ou adaptar os que já existem. Por exemplo, o padrão Work With
permite, dada uma transação, gerar todos os objetos necessários para implementar
um "trabalhar com..." web para essa transação.
No caso de Conceito, esta
idéia de geração de código GeneXus de forma automática vem sendo usada há muito
tempo.
Como vínhamos utilizando o Conceito da idéia que propõem
os Patterns?
O primeiro gerador de código que desenvolvemos já tem
dois anos e utiliza GXPublic para acessar -> estrutura da base de conhecimentos e
gera o código que logo em seguida é incorporado -> mesma base de
conhecimentos.
Alguns exemplos das coisas que estamos usando são:
Dada
uma transação, gerar o código de um procedimento GeneXus que carregue (e outro
que leia) um XML com a estrutura da transação .
Dada a estrutura de uma Data
Warehouse, gerar automaticamente o código necessário para realizar a carga da
informação nas tabelas. Geração de scripts SQL a partir das tabelas e das
colunas na base de dados (este ponto é independente de GeneXus ).
Data uma
transação (que representa uma mensagem), gerar o XML Schema com a sua mesma
estrutura, para poder validá-lo.
Dada uma tabela (que representa uma
mensagem), gerar o procedimento GeneXus que carregue (e outro que leia) arquivos
ASCII delimitado por vírgulas com os campos da mensagem e faça validações de
tipos de dados.
Quais as vantagens oferecidas pelo uso de
Patterns?
As
vantagens de usar estes padrões (ou geradores de código) são muito evidentes.
Por exemplo, o caso de salvar o conteúdo de uma transação em um XML, só depende
da estrutura da transação (sempre que tenhamos a possibilidade de definir , nós
mesmos, a estrutura do XML). Neste caso, todos os programas que realizem esta
tarefa serão similares, somente mudando os atributos que são utilizados.
Este
exemplo apresenta um caso claro onde convém usar os padrões. Isto é porque só
temos que programar uma vez o gerador de código e depois "instanciá-lo" para
cada vez que queiramos fazer o programa para salvar o conteúdo da transação a
XML.
As vantagens mais importantes são:
Com pouquíssimo esforço (uns
poucos cliques) podemos gerar programas com a funcionalidade desejada.
Os
erros no código são evitados. Pode haver erros no gerador de código, mas com o
uso, estes erros vão sendo corrigidos. Por outro lado, se o programa é feito ->
mão, com cada programa novo podemos estar introduzindo erros.
Lo mismo ocurre
con el patrón Work With, que ya viene con la herramienta Patterns. Este padrão
permite gerar vários objetos, que formam um "trabalhar com..." a partir da
transação selecionada. A ferramenta permite configurar as propriedades para cada
transação, como por exemplo os filtros que serão usados no web panel de seleção,
os atributos e a ordem das grades, o folder onde serão criados os objetos,
etc.
Qual tem sido a experiência de Concepto no uso de
Patterns?
Em
Concepto estivemos fazendo provas para criar novos padrões ou adaptar os já
existentes. Por exemplo, estendemos o padrão Work With, para que tivesse a
possibilidade de gerar uma planilha Excel com os dados da grade de seleção.
Nossa experiência foi boa, já que nos permitiu avaliar a dificuldade que
apresenta o desenvolvimento destes padrões, que nos permitam gerar código de
forma automática. A principal dificuldade é que para poder desenvolver estes
padrões é necessário programa em C#.
Acho que é muito bom que tenha um
marco estândar para desenvolver estes padrões, assim como a ferramenta Patterns.
Isto vai permitir -> comunidade desenvolver novos padrões que vão facilitar ainda
mais o desenvolvimento de aplicações com GeneXus.
No nosso caso, estamos
avaliando realizar a migração dos geradores de código a Patterns, já que neste
momento, os geradores de código que temos não estão estandarizados, senão que
foram desenvolvidos cada um de forma independente. Tê-los definido como padrões,
vai facilitar o uso dos mesmos e o intercâmbio com outros membros da comunidade,
que por sua vez, poderiam realizar aportes.
Petroglifo:
http://www.concepto.com.uy/petrocsharp
Mais
informações de Patterns no Wiki:
http://wiki.gxtechnical.com/wiki/tiki-index.php?page=Patterns