Se você é desenvolvedor Advpl e gostaria de simplificar o código de manipulação dos dados Protheus usando os princípios Orientados a Objeto, então o que segue é para você.
Antes de trabalhar com Protheus, eu era desenvolvedor e usava linguagens orientados a objeto como Delphi, Java e C#.
Quando cheguei no mundo do Protheus, me deparei com um framework ERP potente porem, com uma linguagem, o Advpl, usada principalmente na sua forma de programação funcional.
Mais tarde descobri que o Advpl suporta a orientação a objeto então decidi criar um framework que me ajudasse principalmente a manipular os dados do Protheus de uma forma mais simples e limpa (ORM).
Para ver um exemplo desta manipulação:
- Faça o download do projeto (a forma mais fácil é usar o botão "Download Zip" encima)
- Modifique o fonte SIGEXMOD.prw que esta em Exemplo/Modelo para se adequar a sua base de dados (codExis e codNovo)
- Compile o projeto
- Execute a função de usuario SIGEXMOD em passo a passo par ver o que esta acontecendo
As classes definidas em Exemplo/Modelo/ModeloBase são uma boa base para começar um projeto com o ORM
Alem disto eu adicionei outras funções no framework, entre elas:
- Business Logic: Classe de base para implementar as regras de negocio. Aconselho a programar totalmente orientado a objeto ou seja, todo novo projeto sera composto de classes que derivam desta classe.
- Importação CSV: Classe que faz todo o trabalho de leitura de arquivo e escritura na base. Para usar só precisa definir o mapping do arquivo de entrada para tabela
- Coleção e Iterator: Classe que define uma coleção como pode existir em java.
- Test Unitário: Classe que permite definir testes unitários para seus fontes. Muito útil para fazer testes que possam ser repetidos e que não precisem de interface de usuário.
- Update de dicionario: Classe que faz o update do dicionario (tabela, campo, indice, gatilho). Só precisa definir os elementos que podem ser gerados através da rotina padrão do Protheus HSPGERAT(). Esta rotina vai procurar dentro do dicionario os elementos indicados e criar um array. (Vai em formula, inserir, HSPGERAT(), tabulação)
Este Framework esta sendo usado em produção em projetos complexos por entanto, ele chegou a um bom nível de maturidade mesmo que, claro, tenha espaço para aprimoramentos.
A documentação esta disponível aqui.
Ainda falta trabalho encima de documentação e exemplos.
Feedback e críticas construtivas bem-vindas!!!
Abraços Gilles Koffmann