Páginas

Mostrando postagens com marcador OOP. Mostrar todas as postagens
Mostrando postagens com marcador OOP. Mostrar todas as postagens

quarta-feira, 4 de maio de 2011

Aplicações Satélite com .Net e Progress

Olá Amigos,

Estamos participando de um projeto em um de nossos clientes e com isto estamos reformulando um dos processos de venda: A Cotação de Vendas

Atualmente este cliente necessita disponibilizar uma licença do ERP para que os representantes acessem apenas um módulo (poucas telas), disputando assim o número de licenças com os demais usuários.

O processo da cotação na WEB, utiliza as licenças do ERP apenas nas requisições (poucos segundos) e assim que a requisição encerra a licença é liberada. Olhando por este aspecto, uma simples licença pode ser compartilhada por 10 ou 20 usuários, talvez até mais dependendo da requisição.

Os projetos WEB são desenvolvidos todos sobre a plataforma ASP.NET e acessando o ERP através do Framework. Toda a regra de negócio, API e DBO, podem ser reutilizadas no lado Progress.

Abaixo algumas imagens do processo de cotação pela WEB.



Este processo diminui o número de licenças e permite que o usuário acesse o sistema de qualquer lugar, inclusive com uma conexão não tão boa.

Quer criar um sistema satélite e economizar licenças?

quinta-feira, 3 de março de 2011

Utilizando Eventos de Classes .Net no Progress (ABL)

Diante das novas versões do Progress (10.2A ou superior) a linguagem permite acessar qualquer classe criada com o .Net Framework.

Classes para envio de e-mail, integração com Office, validações (RegEx), etc. Tudo isso agora é possível fazendo uso de forma nativa sem utilizar recursos OCX. No .Net as DLLs não são registradas bastando apenas serem empacotadas junto com o projeto.

Uma classe .Net, assim como em qualquer linguagem OO, pode possuir seus atributos, métodos e eventos.

Particularmente falando de eventos, o .Net permite que ao disparar um evento para o consumidor desta classe, sejam enviados parâmetros através do evento. O consumidor da classe deverá criar um método para evento (SUBSCRIBER) para poder manipular os parâmetros.

Porém no Progress temos um problema. Um evento disparado pelo .Net deve seguir o padrão adotado pela ponte (bridge) entre o Progress e .Net, ou seja, os parâmetros que este evento deve enviar ao chamador não podem ser diferentes de:
  • Primeiro parâmetro: System.Object (sender)
  • Segundo parâmetro: System.EventArgs (e)

O Progress suporta apenas estes dois parâmetros em cada evento disparado pelo .Net. Caso tenha um evento que passe como parâmetros valores diferentes desta assinatura, então este evento não será suportado no Progress disparando assim uma exceção e encerrando o programa. Os eventos nativos dos componentes do Framework .Net já seguem este padrão.

Então lembre-se, para disponibilizar seus eventos de classes .Net no Progress, use sempre System.Object e System.EventsArgs como parâmetros.