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?
Mostrando postagens com marcador Framework. Mostrar todas as postagens
Mostrando postagens com marcador Framework. Mostrar todas as postagens
quarta-feira, 4 de maio de 2011
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:
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.
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.
quarta-feira, 26 de janeiro de 2011
Como fazer uma janela de atualização em poucos segundos
Uma breve apresentação de criação de uma janela de atualização através do Visual Studio.
terça-feira, 25 de janeiro de 2011
Framework WebSpeed Orientado a Objetos?
Exemplo de aplicação WebSpeed orientada a objetos.
Já imaginou interceptar o click de um botão no seu programa ".w" ou ".p" como se fosse um evento similar ao AppBuilder e ainda manipular os objetos do HTML como se fossem controles Windows?
Veja um exemplo:
Página HTML
Evento Progress
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE $BotaoAdicionarMais_Click Procedure
PROCEDURE $BotaoAdicionarMais_Click :
/*------------------------------------------------------------------------------
Purpose:
Parameters:
Notes:
------------------------------------------------------------------------------*/
DEF INPUT PARAMETER pArgumentos AS CHAR NO-UNDO.
CAST($Get("$Marcado"), com.Framework.WebControls.WebCheckBox):Marcado = YES.
CAST($Get("$Descricao"), com.Framework.WebControls.WebTextBox):Texto = "12345".
CAST($Get("$lblDescricao"), com.Framework.WebControls.WebLabel):Texto = "Novo Label".
CAST($Get("$lblDescricao"), com.Framework.WebControls.WebLabel):Atributos = "color:blue;".
CAST($Get("$Categoria"), com.Framework.WebControls.WebComboBox):AddItem("4", "Novo Item", YES).
CAST($Get("$Categoria"), com.Framework.WebControls.WebComboBox):Selecionado = "4".
CAST($Get("$BotaoAdicionarMais"), com.Framework.WebControls.WebButton):Texto = "Texto Alterado no BOTÃO".
CAST($Get("$BotaoAdicionarMais"), com.Framework.WebControls.WebButton):Desabilitado = YES.
DEF VAR lit2 AS com.Framework.WebControls.WebLiteral.
lit2 = NEW com.Framework.WebControls.WebLiteral("litAux", "Teste Literal").
RETURN "OK".
END PROCEDURE.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
Resultado HTML após o evento Click
Este framework é um protótipo que demonstra a capacidade do WebSpeed. Enquanto muitos costumam dizer que o WebSpeed não tem potencial nós dizemos o contrário.
Consulte também nosso Framework para a plataforma .Net. Integração nativa com a tecnologia Progress.
Carlos R. Nobrega
Arquiteto de Soluções .Net
Já imaginou interceptar o click de um botão no seu programa ".w" ou ".p" como se fosse um evento similar ao AppBuilder e ainda manipular os objetos do HTML como se fossem controles Windows?
Veja um exemplo:
Página HTML
Evento Progress
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE $BotaoAdicionarMais_Click Procedure
PROCEDURE $BotaoAdicionarMais_Click :
/*------------------------------------------------------------------------------
Purpose:
Parameters:
Notes:
------------------------------------------------------------------------------*/
DEF INPUT PARAMETER pArgumentos AS CHAR NO-UNDO.
CAST($Get("$Marcado"), com.Framework.WebControls.WebCheckBox):Marcado = YES.
CAST($Get("$Descricao"), com.Framework.WebControls.WebTextBox):Texto = "12345".
CAST($Get("$lblDescricao"), com.Framework.WebControls.WebLabel):Texto = "Novo Label".
CAST($Get("$lblDescricao"), com.Framework.WebControls.WebLabel):Atributos = "color:blue;".
CAST($Get("$Categoria"), com.Framework.WebControls.WebComboBox):AddItem("4", "Novo Item", YES).
CAST($Get("$Categoria"), com.Framework.WebControls.WebComboBox):Selecionado = "4".
CAST($Get("$BotaoAdicionarMais"), com.Framework.WebControls.WebButton):Texto = "Texto Alterado no BOTÃO".
CAST($Get("$BotaoAdicionarMais"), com.Framework.WebControls.WebButton):Desabilitado = YES.
DEF VAR lit2 AS com.Framework.WebControls.WebLiteral.
lit2 = NEW com.Framework.WebControls.WebLiteral("litAux", "Teste Literal").
RETURN "OK".
END PROCEDURE.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
Resultado HTML após o evento Click
Este framework é um protótipo que demonstra a capacidade do WebSpeed. Enquanto muitos costumam dizer que o WebSpeed não tem potencial nós dizemos o contrário.
Consulte também nosso Framework para a plataforma .Net. Integração nativa com a tecnologia Progress.
Carlos R. Nobrega
Arquiteto de Soluções .Net
quinta-feira, 20 de janeiro de 2011
Cenários atuais para desenvolvimento Progress 4GL
Atualmente os desenvolvimentos em Progress 4GL são realizados com o uso do Application Builder e Templates SmartObjects e para o desenvolvimento Totvs/Datasul, faz-se uso dos Templates DDK 2000 que é distribuído com o produto Datasul.
Em ambos os modelos não está presente o desenvolvimento orientado a objeto. Desde a versão 10 do Progress, as procedures 4GL podem ser criadas utilizando os recursos de Programação Orientada a Objeto (POO).
O uso de orientação a objeto torna o desenvolvimento muito mais simples. No Framework Vértice grande parte do trabalho já foi realizada, cabendo apenas fazer uso dos objetos. Para facilitar ainda mais, a camada de apresentação também é acelerada com o uso de templates. Em menos de um minuto, torna-se possível criar a interface de um cadastro, já executando as validações definidas na camada 4GL e com uma pesquisa (zoom) padrão. Deve-se gastar mais tempo apenas para criar a regra de negócio, ou seja, nos processos que exigem maior atenção da equipe.
Veja agora o cenário atual e os cenários propostos pelo Framework.
O cenário 1 representa o modelo atual de desenvolvimento para o produto Totvs/Datasul.
O cenário 2 é utilizado para aplicações satélites, onde a integração com o ERP é realizada através de ODBC, APPServer ou com o RPW (Datasul). Para clientes que não querem aumentar o número de licenças de usuários do ERP a Vértice possui o mesmo Framework com uso do banco de dados SQL Server.
No cenário 3 o uso do Framework .Net é de 100%. Uma aplicação totalmente integrada ao ERP Totvs. Este Framework já está preparado para o Totvs 11.
Utilizando o Framework, com poucas alterações, fica garantido o reaproveitamento da camada de apresentação no caso de migração para um outro ERP. O seu legado não é perdido e com isso horas de desenvolvimento são salvas. É claro que em determinadas ocasiões reescrever um código é algo mais sensato e cada caso deve ser analisado.
Carlos R. Nobrega
Arquiteto de Soluções .Net
Em ambos os modelos não está presente o desenvolvimento orientado a objeto. Desde a versão 10 do Progress, as procedures 4GL podem ser criadas utilizando os recursos de Programação Orientada a Objeto (POO).
O uso de orientação a objeto torna o desenvolvimento muito mais simples. No Framework Vértice grande parte do trabalho já foi realizada, cabendo apenas fazer uso dos objetos. Para facilitar ainda mais, a camada de apresentação também é acelerada com o uso de templates. Em menos de um minuto, torna-se possível criar a interface de um cadastro, já executando as validações definidas na camada 4GL e com uma pesquisa (zoom) padrão. Deve-se gastar mais tempo apenas para criar a regra de negócio, ou seja, nos processos que exigem maior atenção da equipe.
Veja agora o cenário atual e os cenários propostos pelo Framework.
O cenário 1 representa o modelo atual de desenvolvimento para o produto Totvs/Datasul.
O cenário 2 é utilizado para aplicações satélites, onde a integração com o ERP é realizada através de ODBC, APPServer ou com o RPW (Datasul). Para clientes que não querem aumentar o número de licenças de usuários do ERP a Vértice possui o mesmo Framework com uso do banco de dados SQL Server.
No cenário 3 o uso do Framework .Net é de 100%. Uma aplicação totalmente integrada ao ERP Totvs. Este Framework já está preparado para o Totvs 11.
Utilizando o Framework, com poucas alterações, fica garantido o reaproveitamento da camada de apresentação no caso de migração para um outro ERP. O seu legado não é perdido e com isso horas de desenvolvimento são salvas. É claro que em determinadas ocasiões reescrever um código é algo mais sensato e cada caso deve ser analisado.
Carlos R. Nobrega
Arquiteto de Soluções .Net
Assinar:
Postagens (Atom)






