[Dicas-L] e-Gen Developer
Colaboração: João Paulo Viragine
Data de Publicação: 29 de Agosto de 2003
e-Gen(c) Developer é um ambiente RAD (Rapid Application Development), licenciado sob a licença GPL, que proporciona o desenvolvimento extremamente rápido de aplicações transacionais para web, totalmente escrito em Java e baseado no framework Jakarta Struts.
O e-Gen foi criado para superar três desafios fundamentais enfrentados por gerentes de TI: aumentar a produtividade, reduzir os custos de manutenção, e reduzir o tempo de treinamento e adaptação dos colaboradores.
A produtividade em uma equipe de desenvolvimento é fundamental para garantir o cumprimento de prazos e a manutenção de baixos custos dos projetos. O e-Gen(c) disponibilizada para o desenvolvedor um conjunto de recursos visuais e facilidades que tornam a criação de uma aplicação uma tarefa extremamente rápida. Tudo sendo executado a partir de um navegador.
A manutenção das aplicações geradas também compõe um elemento extremamente importante dado o dinamismo das empresas e dos mercados. No e-Gen, o código gerado é padronizado e todas as alterações necessárias podem ser realizadas dentro do ambiente, com fácil acesso ás aplicações geradas anteriormente. Assim, a manutenção de uma aplicação se torna fácil e rápida e pode ser realizada por qualquer membro da equipe.
Nas aplicações baseadas na web, é utilizado um conjunto de tecnologias (HTML, Java Script, XML, DHTML, APIs Java, JSP, Servlets, SQL, etc) que requerem um alto custo de treinamento de cada membro da equipe para finalizar com qualidade suas tarefas. O e-Gen gera as aplicações utilizando as melhores práticas e padrões definidos para as diversas tecnologias, mesmo quando o desenvolvedor não as domina completamente. Desta forma, a inclusão ou substituição de um membro da equipe pode ser realizada de forma rápida e com baixo custo.
Utilizando o e-Gen, experimentamos um aumento significativo da produtividade da equipe de desenvolvimento, conseguimos reduzir os custos e o tempo para manutenção dos sistemas e facilitamos para o gerente de TI, o gerenciamento dos projetos, através da redução dos requisitos de qualificação individual de sua equipe.
O resultado final é a criação de aplicações com qualidade, robustez, escalabilidade, baixo custo, e com uma agilidade extraordinária.
UMA PEQUENA HISTÓRIA DO E-GEN?
Alguns anos atrás, nossa equipe desenvolveu um ERP (Enterprise Resource Planning) para a companhia em ambiente cliente/servidor. O sistema era bastante interessante e completo, porém não conseguia acompanhar o dinamismo da empresa e a necessidade crescente de integração entre as diversas filiais. Ademais, todas as ferramentas e recursos utilizados foram gradativamente sendo migrados pelos fornecedores para o ambiente baseado na web.
Em 2001, decidimos fazer a migração do sistema. Treinamos nossa equipe, configuramos nosso ambiente de desenvolvimento e planejamos toda a migração. No entanto, na execução do projeto, deparamo-nos com graves problemas de produtividade e com uma enorme dificuldade de aumento ou substituição de membros na equipe. Para alguns profissionais, que trabalhavam anteriormente com o ambiente de desenvolvimento Oracle Developer(c) (Forms/Reports), a diferença na produtividade entre os dois ambientes era dramática.
Observando a equipe e as soluções disponíveis no mercado, iniciamos em 2002 um estudo para definir um novo ambiente de desenvolvimento, capaz de reproduzir a mesma produtividade e qualidade observadas com o uso das ferramentas do ambiente cliente/servidor, tais como Oracle Developer(c), Delphi(c) e Visual Basic(c).
Em maio de 2002, disponibilizamos para a equipe da empresa a primeira versão do e-Gen. Nesta primeira versão, já foi possível retomar o projeto de migração do sistema com um ritmo completamente diferente da primeira tentativa. A partir das necessidades observadas diariamente, o e-Gen foi ganhando aos poucos novos recursos e facilidades para atender às requisições de própria equipe de desenvolvimento.
Em novembro de 2002, nossa equipe já havia superado a produtividade que era observada com as ferramentas para o ambiente cliente/servidor. Cada programador já era capaz de gerar em cinco minutos uma aplicação completa, com possibilidade de acessar um banco de dados, executando consultas, inserções, alterações e deleções, e com visualização dos registros em forma de relatórios.
Neste momento, decidimos publicar o e-Gen para a comunidade como um projeto de código livre, baseando-se na licença GPL (General Public License). Criamos para fazer a divulgação e evolução do e-Gen a partir desse momento o Grupo e-Gen, que é composto por todos aqueles que contribuem com o desenvolvimento do ambiente.
Novas versões foram lançadas após a primeira publicação, sempre trazendo novas funcionalidades e maior compatibilidade com os mais diversos tipos de sistemas operacionais, banco de dados e containers.
Atualmente, o Grupo e-Gen mantém um grupo de discussão no Yahoo, onde são discutidas todas as dúvidas e sugestões relacionadas ao ambiente. Além do grupo de discussão, está disponível o website "www.egen.com.br", onde se pode encontrar diversas informações, tutorias, arquivos para baixar (download) e notícias sobre o projeto.
CARACTERÍSTICAS GERAIS DO E-GEN
O e-Gen é um ambiente escrito completamente em Java, baseado no framework Struts e nos padrões de design J2EE (Java 2 Enterprise Edition). O ambiente é disponibilizado através de uma aplicação web que pode ser instalada facilmente em qualquer container Servlet/JSP utilizando um arquivo do tipo "war".
Os objetos que compõem o e-Gen estão distribuídos basicamente em três componentes.
O pacote de classes comuns é o primeiro componente e está empacotado no arquivo "egen- util.jar". Nesse componente, encontramos todas as classes que servem tanto ao gerador de aplicações quanto às aplicações geradas. Entre as mais importantes está o pacote "jdbc" que forma a camada de persistência do e-Gen. Esta camada é um "session facade" que controla todo o acesso aos recursos externos de persistência de dados (banco de dados).
Segundo, o gerador de código é composto por classes e páginas que criam todo o ambiente de desenvolvimento. Esse componente permite, a partir de recursos visuais, a criação de aplicações complexas de maneira rápida e integrada.
Terceiro, é o framework de impressão que cria a estrutura para a construção e execução de relatórios de alta qualidade, mesmo quando executados a partir de um navegador.
Além dos módulos desenvolvidos pelo grupo, o e-Gen integra outras soluções para realizar tarefas específicas. Por exemplo, foram integradas ao e-Gen as bibliotecas "JFreeChart" e "Cewolf" para a geração de gráficos dinamicamente em tempo de execução (runtime). A biblioteca "Jakarta POI" também foi integrada para permitir a geração de relatório para arquivos no formato "xls".
RECURSOS DO E-GEN
No desenvolvimento de aplicações, o e-Gen disponibiliza um conjunto de recursos e facilidades que auxiliam a equipe de desenvolvimento e enriquecem a aplicação gerada. Abaixo, listamos esses itens de forma resumida:
Completo apoio para desenvolvimento de aplicações - O e-Gen disponibiliza um IDE (Integrated Development Environment) que proporciona rapidez no desenvolvimento e garante a robustez das aplicações.
Manutenção rápida das aplicações desenvolvidas - Todas as aplicações desenvolvidas são gravadas em arquivos XML e podem ser recuperadas posteriormente para serem editadas no IDE. A manutenção se torna desta forma extremamente rápida, pois não é necessário acessar diretamente as classes ou as páginas JSP.
Aplicação divida em Módulos - Os formulários da aplicação podem ser divididos em módulos para facilitar o gerenciamento do projeto de desenvolvimento e da aplicação gerada.
Internacionalização (i18n) - A aplicação que disponibiliza o ambiente e-Gen é completamente internacionalizada. Todos os recursos estão disponíveis nos arquivos de propriedades e permitam a mudança de idioma com um simples clique de botão, em tempo de execução. As aplicações geradas também podem ser internacionalizadas.
Segurança - O e-Gen utiliza o sistema de autenticação do container para controlar o acesso ao ambiente de desenvolvimento e à aplicação gerada. Podem ser utilizados com base de dados de usuários: LDAP, banco de dados e arquivos texto. Restrição de objetos da tela por roles - A partir da autenticação, o usuário recebe as roles definidas no cadastro de usuário. O desenvolvedor pode definir restrições de acesso para qualquer objeto da aplicação, como por exemplo uma página completa, um botão, um campo, uma coluna de relatório, ou um bloco.
Templates para automatizar tarefas comuns - O e-Gen utiliza templates para gerar automaticamente códigos em Java Script, Java e JSP. Todos os templates são ajustáveis e expansíveis de acordo com a necessidade do desenvolvedor.
Tecnologia EFS (e-Gen Free Source) - Apesar da utilização de templates e da geração automática de códigos, o desenvolvedor pode alterar qualquer código a ser gerado, customizando a aplicação de acordo com suas necessidades. O e-Gen grava as alterações, permitindo que as mesmas sejam carregadas na aplicação em caso de manutenção. Essa tecnologia foi denominada EFS.
Camada de persistência - Toda a comunicação entre a aplicação gerada e o banco de dados é feita através de um "session facade", possibilitando a mudança do fornecedor de banco de dados sem alteração na aplicação. A camada de persistência possibilita chamadas a bancos de dados para fazer consultas, inserções, alterações, deleções e para executar funções (procedures). Os códigos para essas transações são gerados automaticamente. Controle de transação - É possível fazer todo o controle da transação na camada de persistência utilizando métodos para gravação (commit) e desfazimento (rollback).
Ferramenta de mapeamento dos objetos do banco de dados - O ambiente disponibiliza uma ferramenta para mapear no e-Gen os objetos do banco de dados que serão utilizados na aplicação. Após o mapeamento, o desenvolvedor pode se desconectar do banco, pois terá todas as informações necessárias de cada tabela e de todos os campos da mesma. O mapeamento pode ser feito de forma customizada a fim de guardar informações adicionais para cada campo, tais como tipo HTML, título, formato, mensagem de ajuda e validação.
3 Tipos de Conexões com o banco de dados - Os blocos no e-Gen podem se comunicar com a camada de persistência através de três tipos de conexões. Pool para utilizar as conexões disponíveis no pool de conexões. Individual para criar uma nova conexão, quando é necessário identificar o usuário que está acessando a tabela. Session, utilizada quando os dados já estão disponíveis na seção do usuário.
Assistente para configuração de conexões com banco de dados - O gerenciador de conexão (Connection Manager) auxilia o desenvolvedor na configuração do acesso ao banco de dados. A partir dessa ferramenta, pode-se testar a conexão para todos os tipos de banco de dados a fim de definir os parâmetros corretos para a conexão.
Blocos - As páginas geradas no e-Gen são compostas por blocos independentes. Com esta estrutura é possível ter em uma mesma tela, formulários, relatórios, menus e gráficos.
Relacionamento entre blocos - Os blocos podem ser relacionados para possibilitar a criação de formulários master-detail.
"Portlets" - O e-Gen também pode criar automaticamente a estrutura de "Portlets".
Formulários dinâmicos e integrados com a camada de persistência - Um dos tipos de blocos possíveis no e-Gen é o formulário, cuja característica fundamental é possuir campos e botões, suportados por um (Struts) ActionForm e uma (Struts) Action.
Filtragem por qualquer campo de tela - O padrão no e-Gen é que todos os campos dos formulários sirvam como filtros para consultas ao banco de dados e sejam submetidos em ações de inserção, alteração e deleção.
Preenchimento automático de listas - Para os campos do tipo (HTML) "select", o e-Gen disponibiliza um recurso para fazer o preenchimento da lista automaticamente, a partir de uma tabela no banco de dados.
Post Query - Outra facilidade relacionada aos campos é a criação de campos com preenchimento automático em um "trigger post-query". Para listas de valores muito grandes, o e-Gen utiliza o conceito de LOV (List of Values) que é um formulário de pesquisa acessado através do formulário base e que devolve para o primeiro o valor pesquisado. Existem várias facilidades para a criação de listas de valores. A inclusão de Applets nas páginas também pode ser feita de maneira rápida e fácil.
Estrutura de Abas Para formulários com muitos campos - é possível fazer a organização da página com a utilização de abas sobrepostas, chamadas de "tabs".
Validação do lado do servidor - O e-Gen tem um completo framework para a realização de validações do lado do servidor. Com um clique apenas, é possível fazer validações de campos nulos, de tipo de dados (data ou número), de range (para datas e números), de e-mail, e de tamanho mínimo. O ambiente também disponibiliza validação por expressões regulares (Regex). Para auxiliar o desenvolvedor, há uma ferramenta para armazenamento e recuperação das expressões mais utilizadas. Uma grande vantagem do framework de validação utilizado no e-Gen é a possibilidade de determinar quais as ações que serão validadas. Por exemplo, pode-se em um mesmo formulário fazer validação para inserções e não fazer para consultas.
Validação no lado do cliente - O e-Gen possui templates que escrevem códigos para validação de formulários em Java Script.
Relatórios dinâmicos e flexíveis Relatórios são tipos de aplicações utilizadas para listas registros em forma tabular. No e- Gen, são disponibilizados vários recursos para tornar o relatório desenvolvido completo. Quebras - Pode-se quebrar o relatório por um conjunto de variáveis do modelo, criando relatórios com formato master-detail de forma fácil e rápida.
Paginação - No e-Gen são disponibilizados vários esquemas de paginação, com possibilidade para determinação do número de registros em cada páginas e número de páginas na barra de navegação, além de vários estilos de barras de navegação. Somatórios - Com apenas um clique é possível inserir somatórios nas colunas do relatório, com função de somar, contar e calcular a média.
Formatação - Pode-se fazer a formatação de cada campo numérico ou data. Existem diversos tipos de formatos pré-formatados, mas é possível ainda construir qualquer outro padrão de formatação, editando o código com EFS.
Fórmulas - Pode-se criar colunas fórmulas, calculadas em runtime a partir de expressões ou blocos definidos pelo desenvolvedor. Geração de planilhas (arquivo xls) - Pode-se gerar qualquer relatório para arquivo em formato "xls" (reconhecido por planilhas eletrônicas tais como Excel, OpenOffice, etc).
Menus com segurança e estilo O e-Gen tem uma ferramenta para criação e edição de menus, com possibilidade de criação de níveis (sem limite) e proteção do menu por roles.
Gráficos em dois cliques Utilizando internamente as bibliotecas JfreeChart e Cewolf, foi disponibilizada a construção rápida e fácil de gráficos em vários tipos, tais como Área, XY, Pie,Pie3D, Vertical Bar e Horizontal Bar. Os gráficos podem compor a página, juntamente com formulários e relatórios.
Ferramentas de armazenamento e recuperação de Java Script e códigos Java São disponibilizadas ferramentas para armazenamento e recuperação dos scripts e dos códigos Java mais comuns. Dentro do IDE existem atalhos que facilitam o acesso aos códigos armazenados que facilitam a reutilização dos mesmos
Gerenciamento do Struts framework Há um módulo no e-Gen que permite a edição do arquivo de configuração do Struts (struts- config.xml) de forma visual. Atualização automática da configuração - Na geração de formulários, é atualizado automaticamente o arquivo de configuração do Struts, não sendo necessário à atualização posterior para disponibilizar a aplicação desenvolvida.
Controle de re-submissão de formulários Existe no e-Gen um framework para controlar a re-submissão de formulários. Quando ativada a propriedade de verificação de re-submissão, a aplicação apresentará mensagem para o usuário quando este tentar fazer a re-submissão de uma requisição antes de receber o retorno da requisição anterior.
Ferramenta para criação e edição de CSS (Cascade Style Sheet) Está disponível no e-Gen uma ferramenta para criação de arquivos de CSS. É possível no módulo visualizar as alterações mesmo antes de fazer a geração do arquivo. Apesar de não configurar um padrão, cada página pode ter uma folha de estilo diferenciada no e-Gen.
Possibilidade de uso de todas as diretivas "page" disponíveis em JSP - Existem propriedades no gerador de aplicações do e-Gen que permite a completa utilização da "diretiva page" em JSP.
Facilidades para inclusão de DHTML - nas páginas Em vários pontos do gerador de códigos, estão disponíveis recursos para inclusão de DHTL nas páginas.
Geração automática da documentação para usuário final - Durante o desenvolvimento das aplicações, existem propriedades que podem guardar mensagens de ajuda. Existe no e-Gen um gerador de documentação que cria todas as páginas de ajuda e os respectivos índices, baseando-se nas mensagens de ajuda. Hints on-line - pode-se também disponibilizar na própria página gerada "hints" com as mensagens cadastradas para páginas, campos e botões.
Framework de impressão, quando a qualidade importa O e-Gen disponibiliza um completo framework de impressão para possibilitar a impressão de documentos de alta qualidade em ambiente baseado na web. Impressão precisa - os documentos têm formatação precisa, com posicionamento dos elementos, além do uso de margens, tamanho e orientação de página, cabeçalho e rodapé. Numeração automática de páginas - é possível numerar as páginas da impressão, com a possibilidade de determinar o número da primeira. Quebra automática de página - o framework gerencia a quebra de páginas, fazendo o corte a partir do tamanho de página e margens. Utilização de cores e fontes variadas - pode-se utilizar cores e diferentes tipos de fontes nos campos texto. As cores também podem ser definidas para linhas e frames. Inserção de imagens - pode-se inserir imagens na impressão. Criação integrada de código de barras - é possível gerar código de barras de diversos tipos a partir de um número definido em runtime.
Disponibilização automática das aplicações geradas - A partir dos projetos criados no e-Gen, é possível gerar arquivos para disponibilização da aplicação em ambiente de produção.
Geração compactada - O e-Gen possui recurso que retira do código gerado todos os caracteres desnecessários, reduzindo o tamanho do código e o tempo para carregar os relatórios. Para empresas de software, pode ser também uma forma de proteger a aplicação gerada, tornando mais difícil à compreensão do código gerado.
O e-Gen é um ambiente RAD que aumenta significativamente a produtividade, reduz os custos de manutenção de sistemas e facilita o gerenciamento de projetos para criação de aplicação no ambiente web. Além de ser código livre, ou seja "de graça", possibilita a criação de aplicações robustas, com alta escalabilidade, eficientes, confiáveis e seguras com baixo custo, fácil manutenção e rapidez. É certamente a garantia de sucesso para gerentes de TI e suas equipes.