Modificando el WorkWith en la XEv1 *
Antes de mais nada, para que não perder o costume e embora pareça tarde, um Feliz e Próspero 2009 aos genuxianos do Chile.
Pareceria que durante 2008 todos estivemos bastante ocupados, o que se traduziu em que não organizamos atividade alguma e nem sequer escrevemos no blog.
A falta de participação e de entusiasmo certamente tenha a ver também com a utilidade que o GUGXChile ofereça aos genuxianos em seu trabalho diário e que até agora não foi tal. Ou seja, falta que isto seja uma instância de colaboração mais efetiva.
Pode haver outras coisas, mas agora quero ir ao motivo do post.
Desde o GeneXus 9 contamos com a possibilidade de trabalhar com Patterns, que para dizer de uma maneira simples se trata de "moldes" ou "modelos" inteligentes com as quais fazemos automaticamente um monte de trabalho que normalmente faríamos "à mão".
Provavelmente o pattern mais utilizado é o WorkWith que vem com o GeneXus, pelo qual assumo que muitos terão experimentado um pouco criando algumas transactions e vendo como, em segundos, obtém-se uma aplicação completa com as telas de "trabalhar com" e os tabs com vistas segundo as relações dadas pelos atributos nas transactions.
Apesar de toda a maravilha, é provável que muitos (foi meu caso) tenham sentido falta de alguma forma de controle de acesso e permissões e possivelmente outras coisas mais.
Por que a Artech não o fez mais completo? Será que depois vem outra versão melhorada?
Não. A idéia é que cada um faça seu próprios patterns e o WorkWith é só um bom exemplo da potência desta ferramenta.
ww2Quis me embarcar neste tema, não criando um pattern desde zero, mas modificando o WorkWith da Artech (GXXEv1 Beta1). A partir desse trabalho preparei uma versão que denominei ww2 e que está disponível em
GXOpen.
Esta versão considera:
- Criação de transações de Usuários, Módulos e Permissões.
- Procedimento de inicialização do usuário admin.
- Procedimentos de validação de acessos e permissões.
- Login no webpanel Home.
- Adição de rotinas de segurança nos webpanels gerados.
Vista do Login em webpanel Home
A funcionalidade esperada é algo assim:
- o usuário só terá disponíveis, no menu, aqueles módulos para os que está registrado
- na tela de "trabalhar com" só terá disponíveis as opções segundo permissões (Insert, Update, etc.)
- o usuário poderá ter acessos e permissões individualmente ou por fazer parte de um grupo de usuários
Vista do Menu em webpanel Home
Modificar o WorkWith
Não pretendo detalhar em extenso as mudanças, pois seria muito longo e a idéia é que descubram coisas por si mesmos, com um pouco de guia, olhando os arquivos XML e DKT do ww2.
Modificar o projeto CSharpNo caso do WorkWith, os fontes vêm com o Platform SDK.
Isto é um pouco avançado e orientado a programadores CSharp, mais que a usuários GeneXus.
No caso do pattern ww2, foi necessário tocar o código csharp para mudar o nome do WorkWith para ww2.
Modificar o arquivo de recursosO arquivo de recursos é um xml com a definição dos objetos que se consolidam na KB na primeira vez que se aplica o pattern.
Para adicionar objetos ao arquivo de recursos basta fazer uma exportação, abrir o xpz e copiar o elemento Object que nos interessa.
Desta forma adicionei as transactions e procedures ao arquivo de resources do ww2.
Modificar os templates DKTOs templates DKT são arquivos de texto com uma programação CSharp embebida que GeneXus interpreta ao momento de aplicar o pattern. A execução de cada template retorna as partes (Events, Variables, etc.) dos novos objetos.
Poderíamos dizer que se trata de uma consolidação (importação) especial, não de um xpz, mas da interpretação dos templates.
Nestes templates é possível apreciar com facilidade, por exemplo, as partes do código GeneXus que são fixas e aquelas que se constroem dinamicamente com a interpretação do csharp.
Um bom exemplo é o código da rotina Permissions no arquivo GridEvents.dkt do pattern ww2.
Isso por enquanto.
*Publicado por Miguel Figueroa no blog GUGX - Chile.