<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2509270170029156228</id><updated>2024-11-01T05:26:55.797-03:00</updated><category term="Framework"/><category term="Modernização"/><category term="Acesso a Dados"/><category term="Templates"/><category term="OOP"/><category term="Cenários"/><category term="Futuro"/><category term="Metadados"/><title type='text'>.Net com Progress 4GL</title><subtitle type='html'>Uso de Progress 4GL com a plataforma Microsoft .Net, entre outras novidades</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://4glnews.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://4glnews.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Carlos R. Nobrega</name><uri>http://www.blogger.com/profile/02316957843584760534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2509270170029156228.post-8671340942720022423</id><published>2012-01-02T14:58:00.001-02:00</published><updated>2012-01-02T14:59:13.273-02:00</updated><title type='text'>Coleta de Dados com .Net</title><content type='html'>Para quem precisa desenvolver alguma rotina de coleta de dados em dispositivos Windows CE com Microsoft .Net, segue um aplicativo que executa estas funcões sem a necessidade de codificação de suas interfaces.&lt;br /&gt;
&lt;br /&gt;
Conheça o AC Factory&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHYvfAGG0oIb2q99Yun5BLm7n1uIAD__IdZiTW8J9vVQ97pzMJ8lPJCcnaGgvKpqPXf02JTSl5KafoGhO5cBkO4bjVQJJFlHmuOvNTrH_soBO5U2r4PXiafeNm7H77Fiy9-ghfTYILGdE/s640/ACDesigner2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;246&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHYvfAGG0oIb2q99Yun5BLm7n1uIAD__IdZiTW8J9vVQ97pzMJ8lPJCcnaGgvKpqPXf02JTSl5KafoGhO5cBkO4bjVQJJFlHmuOvNTrH_soBO5U2r4PXiafeNm7H77Fiy9-ghfTYILGdE/s400/ACDesigner2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Acesse agora:&amp;nbsp;&lt;a href=&quot;http://www.4glnews.com/p/acfactory.html&quot;&gt;http://www.4glnews.com/p/acfactory.html&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://4glnews.blogspot.com/feeds/8671340942720022423/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://4glnews.blogspot.com/2012/01/coleta-de-dados-com-net.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/8671340942720022423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/8671340942720022423'/><link rel='alternate' type='text/html' href='http://4glnews.blogspot.com/2012/01/coleta-de-dados-com-net.html' title='Coleta de Dados com .Net'/><author><name>Carlos R. Nobrega</name><uri>http://www.blogger.com/profile/02316957843584760534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHYvfAGG0oIb2q99Yun5BLm7n1uIAD__IdZiTW8J9vVQ97pzMJ8lPJCcnaGgvKpqPXf02JTSl5KafoGhO5cBkO4bjVQJJFlHmuOvNTrH_soBO5U2r4PXiafeNm7H77Fiy9-ghfTYILGdE/s72-c/ACDesigner2.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2509270170029156228.post-1840472186259933419</id><published>2011-05-04T11:54:00.002-03:00</published><updated>2014-01-07T15:54:31.168-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Acesso a Dados"/><category scheme="http://www.blogger.com/atom/ns#" term="Framework"/><category scheme="http://www.blogger.com/atom/ns#" term="Modernização"/><category scheme="http://www.blogger.com/atom/ns#" term="OOP"/><category scheme="http://www.blogger.com/atom/ns#" term="Templates"/><title type='text'>Aplicações Satélite com .Net e Progress</title><content type='html'>Olá Amigos,&lt;br /&gt;
&lt;br /&gt;
Estamos participando de um projeto em um de nossos clientes e com isto estamos reformulando um dos processos de venda:&amp;nbsp;A Cotação de Vendas&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Abaixo algumas imagens do processo de cotação pela WEB.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS3b73LSzsqYxlTXb4YxWmukuJefTUS6lAxy5iAzHbk01nLYlIAl3ak9EFloB0U91cnrtIWQnVIZI4hef3dqtpXpwG2slnqmXVO5s1YBgWxFMuUT74TqJT3qHP6FvXYKmLjG9riqh4HWI/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS3b73LSzsqYxlTXb4YxWmukuJefTUS6lAxy5iAzHbk01nLYlIAl3ak9EFloB0U91cnrtIWQnVIZI4hef3dqtpXpwG2slnqmXVO5s1YBgWxFMuUT74TqJT3qHP6FvXYKmLjG9riqh4HWI/s640/1.png&quot; height=&quot;344&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNJ8Tg-guaXjvuMZIpWOaszrenxNwux3EUTnmOsPTDGo0QXyJoAzuBBdIJSenYLU4t4p3fk3mBqSEZ2HNsepYDdU4ORP2-eUJqMBe3mo4nYPw6XZ-P2_Na-hP1mezEcK2f7BTrsM60H4Y/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNJ8Tg-guaXjvuMZIpWOaszrenxNwux3EUTnmOsPTDGo0QXyJoAzuBBdIJSenYLU4t4p3fk3mBqSEZ2HNsepYDdU4ORP2-eUJqMBe3mo4nYPw6XZ-P2_Na-hP1mezEcK2f7BTrsM60H4Y/s640/2.png&quot; height=&quot;326&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Quer criar um sistema satélite e economizar licenças? &lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://4glnews.blogspot.com/feeds/1840472186259933419/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://4glnews.blogspot.com/2011/05/aplicacoes-satelites-com-net-e-progress.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/1840472186259933419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/1840472186259933419'/><link rel='alternate' type='text/html' href='http://4glnews.blogspot.com/2011/05/aplicacoes-satelites-com-net-e-progress.html' title='Aplicações Satélite com .Net e Progress'/><author><name>Carlos R. Nobrega</name><uri>http://www.blogger.com/profile/02316957843584760534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS3b73LSzsqYxlTXb4YxWmukuJefTUS6lAxy5iAzHbk01nLYlIAl3ak9EFloB0U91cnrtIWQnVIZI4hef3dqtpXpwG2slnqmXVO5s1YBgWxFMuUT74TqJT3qHP6FvXYKmLjG9riqh4HWI/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2509270170029156228.post-3899736169399116529</id><published>2011-03-03T13:43:00.000-03:00</published><updated>2011-09-27T14:11:53.507-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Framework"/><category scheme="http://www.blogger.com/atom/ns#" term="OOP"/><title type='text'>Utilizando Eventos de Classes .Net no Progress (ABL)</title><content type='html'>Diante das novas versões do Progress (10.2A ou superior) a linguagem permite acessar qualquer classe criada com o .Net Framework.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Uma classe .Net, assim como em qualquer linguagem OO, pode possuir seus atributos, métodos e eventos.&lt;br /&gt;
&lt;br /&gt;
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&amp;nbsp;um método para evento (SUBSCRIBER) para poder manipular os parâmetros. &lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Primeiro parâmetro: System.Object (sender)&lt;/li&gt;
&lt;li&gt;Segundo parâmetro: System.EventArgs (e)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
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&amp;nbsp;exceção e encerrando o programa. Os eventos nativos dos componentes do Framework .Net já seguem este padrão.&lt;br /&gt;
&lt;br /&gt;
Então lembre-se, para disponibilizar seus eventos de classes .Net no Progress, use sempre System.Object e System.EventsArgs como parâmetros.</content><link rel='replies' type='application/atom+xml' href='http://4glnews.blogspot.com/feeds/3899736169399116529/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://4glnews.blogspot.com/2011/03/utilizando-eventos-de-classes-net-no.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/3899736169399116529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/3899736169399116529'/><link rel='alternate' type='text/html' href='http://4glnews.blogspot.com/2011/03/utilizando-eventos-de-classes-net-no.html' title='Utilizando Eventos de Classes .Net no Progress (ABL)'/><author><name>Carlos R. Nobrega</name><uri>http://www.blogger.com/profile/02316957843584760534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2509270170029156228.post-2875198833404550578</id><published>2011-01-27T11:05:00.003-02:00</published><updated>2014-01-07T15:55:13.272-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Futuro"/><title type='text'>Arquitetura para Web ou Arquitetura para Sistema Operacional (Client)?</title><content type='html'>Concordando com grandes engenheiros e especialistas&amp;nbsp;em arquitetura de sistemas, incluindo neste meio as empresas&amp;nbsp;Microsoft, Apple e Google, digo:&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;HTML5 é o futuro da Web (Futuro mesmo, pois, ainda não foi lançado oficialmente).&lt;/u&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqlmkrsUuvj1v5hWdpZYByZQeSsW_aQ7IDYeWXudPHuzOGB8KZCa2pwOuXoVfgtd22RxJo_qc2fq6sUG3DpBAmBhHvZP-mbVJfT-uzhVbpkxmDX-1gT9ylNyraIZvSJzv0-NgrVKJ72Ao/s1600/images.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqlmkrsUuvj1v5hWdpZYByZQeSsW_aQ7IDYeWXudPHuzOGB8KZCa2pwOuXoVfgtd22RxJo_qc2fq6sUG3DpBAmBhHvZP-mbVJfT-uzhVbpkxmDX-1gT9ylNyraIZvSJzv0-NgrVKJ72Ao/s1600/images.jpg&quot; s5=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Mas (tudo tem um mas), não deve substituir aplicações baseadas em sistema operacionais. Tudo depende da necessidade e das alternativas de distribuição da informação.&lt;br /&gt;
&lt;br /&gt;
Estão em alta os sistemas para SmartPhones, portanto muita coisa ainda deve ser feita nestes ambientes e para isto o HTML5 é útil. Existem opções para realizar o &lt;em&gt;deploy&lt;/em&gt; de aplicações HTML pela AppStore utilizando alguns mecanismos de empacotamento do XCode. Existe também opção para distribuição de HTML para o Android. HTML5 será o substituto do HTML atual e assim será empregado para desenvolvimento de portais, como já é feito atualmente, ou &lt;em&gt;containers&lt;/em&gt; de aplicações Flex e Silverlight.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;O que mais o HTML5 pode fazer?&lt;/strong&gt; (é mais fácil ler no &lt;a href=&quot;http://www.w3.org/TR/html5/&quot; target=&quot;_blank&quot;&gt;W3C&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Sobre Flex e Silverlight&lt;/strong&gt;&lt;br /&gt;
Recentemente, Steve Ballmer (CEO da Microsoft), informou que o Silverlight é a plataforma da Microsoft para desenvolvimentos em ambiente SmartPhone baseado em Windows. Também vemos neste mesmo meio a Apple fechando as portas para Flash em seus dispositivos. Com um &lt;u&gt;sorriso na orelha&lt;/u&gt; o Google apenas agradece.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Mas qual seria o futuro do desenvolvimento de aplicações?&lt;/strong&gt;&lt;br /&gt;
Aplicações Web não devem substituir as aplicações Desktop (O desktop é que deve ser substituído). Isto é de comum acordo entre todas estas grandes empresas.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Flex e Silverlight vão deixar de existir?&lt;/strong&gt;&lt;br /&gt;
Eu acredito que não. O que deve existir é uma melhor arquitetura das aplicações para atuar como SmartClients. Isto já deveria estar sendo feito por todas as empresas.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Uma resposta do Steve Jobs para estes questionamentos.&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;&quot;Adobe has repeatedly said that Apple mobile devices cannot access “the full web” because 75% of video on the web is in Flash,&quot; says Jobs. &quot;What they don’t say is that almost all this video is also available in a more modern format, H.264, and viewable on iPhones, iPods and iPads...Although Flash has recently added support for H.264, the video on almost all Flash websites currently requires an older generation decoder that is not implemented in mobile chips and must be run in software. The difference is striking: on an iPhone, for example, H.264 videos play for up to 10 hours, while videos decoded in software play for less than 5 hours before the battery is fully drained.&quot;&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;&quot;Flash was created during the PC era – for PCs and mice,&quot; Jobs said in summary. &quot;Flash is a successful business for Adobe, and we can understand why they want to push it beyond PCs. But the mobile era is about low power devices, touch interfaces and open web standards – all areas where Flash falls short.&quot;&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;&quot;The avalanche of media outlets offering their content for Apple’s mobile devices demonstrates that Flash is no longer necessary to watch video or consume any kind of web content.&quot;&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;Texto original: &lt;/span&gt;&lt;a href=&quot;http://www.bit-tech.net/news/hardware/2010/04/30/apple-explains-why-no-flash-on-iphone/1&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;http://www.bit-tech.net/news/hardware/2010/04/30/apple-explains-why-no-flash-on-iphone/1&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Resumo&lt;/u&gt;: Melhor uso da bateria, pois utiliza um formato mais evoluído para distribuição de vídeos e também porque o Flex foi elaborado para uso em PCs, sendo assim tem incompatibilidade com a &lt;em&gt;Interface Touch&lt;/em&gt; do iPhone e&amp;nbsp;iPad&lt;em&gt;.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Futuro&amp;nbsp;para Mercado de Desenvolvimento&lt;/strong&gt;&lt;br /&gt;
Trabalho com Progress 4gl desde a versão 7.0 e com .Net desde a versão 1.0 do framework (VS2002 Beta). De lá para cá, todas as ferramentas evoluiram muito. O destaque maior fica para a Microsoft com o Visual Studio. Não posso falar de Java&amp;nbsp;ou de&amp;nbsp;outros ambientes pois não atuo nisto, mas vi alguns frameworks para PHP, Python e Ruby e todos oferecem aceleração no desenvolvimento. &lt;br /&gt;
Visto que trabalhamos com prazos cada vez mais curtos, utilizar ferramentas de aceleração é o primeiro passo para o futuro. Pensando nisso você deve tomar um rumo novo caso não venha desenvolvendo com agilidade. &lt;br /&gt;
A tecnologia não deve ser um fator impeditivo de sua produção. Uma empresa de consultoria e desenvolvimento deve gastar mais tempo pensando na regra de negócio do cliente e assim poder oferecer uma solução mais robusta, ganhando mais tempo para realização de testes antes de distribuir no ambiente do cliente. &lt;br /&gt;
Pense que muitas janelas (80%) devem ser geradas com cliques e poucas linhas de código. Muitas funcionalidades já devem estar desenvolvidas fazendo com que se siga um padrão no uso das mesmas e também ganhando tempo. O Framework Vértice .Net trabalha exatamente neste sentido. Gasta-se mais tempo pensando na regra de negócio do cliente e não com o desenvolvimento de janelas.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;O que vem depois?&lt;/strong&gt;&lt;br /&gt;
O emprego de uma boa metodologia, seja ela&amp;nbsp;RUP, XP, Scrum, entre outras, ou&amp;nbsp;baseada nestes conceitos ou até mesmo um&amp;nbsp;misto de todas elas.&lt;br /&gt;
&lt;br /&gt;
Percebi que estou fugindo do assunto do &lt;em&gt;post&lt;/em&gt;, então continuaremos esta conversa em breve.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS;&quot;&gt;Carlos R. Nobrega&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS;&quot;&gt;Arquiteto de Soluções .Net&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://4glnews.blogspot.com/feeds/2875198833404550578/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://4glnews.blogspot.com/2011/01/arquitetura-para-web-ou-arquitetura.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/2875198833404550578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/2875198833404550578'/><link rel='alternate' type='text/html' href='http://4glnews.blogspot.com/2011/01/arquitetura-para-web-ou-arquitetura.html' title='Arquitetura para Web ou Arquitetura para Sistema Operacional (Client)?'/><author><name>Carlos R. Nobrega</name><uri>http://www.blogger.com/profile/02316957843584760534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqlmkrsUuvj1v5hWdpZYByZQeSsW_aQ7IDYeWXudPHuzOGB8KZCa2pwOuXoVfgtd22RxJo_qc2fq6sUG3DpBAmBhHvZP-mbVJfT-uzhVbpkxmDX-1gT9ylNyraIZvSJzv0-NgrVKJ72Ao/s72-c/images.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2509270170029156228.post-4197054493204137580</id><published>2011-01-26T16:53:00.006-02:00</published><updated>2011-01-28T10:17:28.188-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Acesso a Dados"/><category scheme="http://www.blogger.com/atom/ns#" term="Framework"/><category scheme="http://www.blogger.com/atom/ns#" term="Modernização"/><category scheme="http://www.blogger.com/atom/ns#" term="Templates"/><title type='text'>Como fazer uma janela de atualização em poucos segundos</title><content type='html'>Uma breve apresentação de criação de uma&amp;nbsp;janela de atualização&amp;nbsp;através do Visual Studio.&lt;br /&gt;
&lt;br /&gt;
&lt;object height=&quot;390&quot; width=&quot;640&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/VpQhfraRGyI&amp;hl=en_US&amp;feature=player_embedded&amp;version=3&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/VpQhfraRGyI&amp;hl=en_US&amp;feature=player_embedded&amp;version=3&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowScriptAccess=&quot;always&quot; width=&quot;640&quot; height=&quot;390&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://4glnews.blogspot.com/feeds/4197054493204137580/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://4glnews.blogspot.com/2011/01/saiba-como-fazer-um-cadastro-simples-em.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/4197054493204137580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/4197054493204137580'/><link rel='alternate' type='text/html' href='http://4glnews.blogspot.com/2011/01/saiba-como-fazer-um-cadastro-simples-em.html' title='Como fazer uma janela de atualização em poucos segundos'/><author><name>Carlos R. Nobrega</name><uri>http://www.blogger.com/profile/02316957843584760534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2509270170029156228.post-8756728495469850501</id><published>2011-01-25T16:44:00.001-02:00</published><updated>2014-01-07T15:55:43.214-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Framework"/><category scheme="http://www.blogger.com/atom/ns#" term="Modernização"/><title type='text'>Framework WebSpeed Orientado a Objetos?</title><content type='html'>Exemplo de aplicação WebSpeed orientada a objetos.&lt;br /&gt;
&lt;br /&gt;
Já imaginou interceptar o click de um botão no seu programa &quot;.w&quot; ou &quot;.p&quot; como se fosse um evento&amp;nbsp;similar ao AppBuilder e ainda manipular os objetos do HTML como se fossem controles Windows?&lt;br /&gt;
&lt;br /&gt;
Veja um exemplo:&lt;br /&gt;
&lt;br /&gt;
Página HTML&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE7RHrGGRMPlyAvLWkDOfwvSUBcZkFiI-Q7g_DIL0epV2d4-zdF0WXIrHncMqSKM8aVQs3XE4SytKmGvwShkF4nIVA5owPBI6P22gRGVSVReyVKXgYxYEqSj4VbHD0SSrnbwoyZslUk6A/s1600/web1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE7RHrGGRMPlyAvLWkDOfwvSUBcZkFiI-Q7g_DIL0epV2d4-zdF0WXIrHncMqSKM8aVQs3XE4SytKmGvwShkF4nIVA5owPBI6P22gRGVSVReyVKXgYxYEqSj4VbHD0SSrnbwoyZslUk6A/s640/web1.png&quot; height=&quot;354&quot; s5=&quot;true&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Evento Progress&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;amp;ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE&lt;/span&gt; $BotaoAdicionarMais_Click &lt;span style=&quot;color: blue;&quot;&gt;Procedure&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;PROCEDURE&lt;/span&gt; $BotaoAdicionarMais_Click :&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #38761d; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;/*------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #38761d; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;Purpose: &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #38761d; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;Parameters: &lt;none&gt;&lt;/none&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #38761d; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;Notes: &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #38761d; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;------------------------------------------------------------------------------*/&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEF INPUT PARAMETER &lt;/span&gt;pArgumentos &lt;span style=&quot;color: blue;&quot;&gt;AS CHAR NO-UNDO&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;CAST&lt;/span&gt;($Get(&quot;$Marcado&quot;), com.Framework.WebControls.WebCheckBox):Marcado = &lt;span style=&quot;color: blue;&quot;&gt;YES&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAST&lt;/span&gt;($Get(&quot;$Descricao&quot;), com.Framework.WebControls.WebTextBox):Texto = &lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;12345&quot;&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAST&lt;/span&gt;($Get(&quot;$lblDescricao&quot;), com.Framework.WebControls.WebLabel):Texto = &lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;Novo Label&quot;&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAST&lt;/span&gt;($Get(&quot;$lblDescricao&quot;), com.Framework.WebControls.WebLabel):Atributos = &lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;color:blue;&quot;&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAST&lt;/span&gt;($Get(&quot;$Categoria&quot;), com.Framework.WebControls.WebComboBox):AddItem(&lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;4&quot;&lt;/span&gt;, &lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;Novo Item&quot;&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;YES&lt;/span&gt;).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAST&lt;/span&gt;($Get(&lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;$Categoria&quot;&lt;/span&gt;), com.Framework.WebControls.WebComboBox):Selecionado = &lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;4&quot;&lt;/span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAST&lt;/span&gt;($Get(&lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;$BotaoAdicionarMais&quot;&lt;/span&gt;), com.Framework.WebControls.WebButton):Texto = &lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;Texto Alterado no BOTÃO&quot;&lt;/span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAST&lt;/span&gt;($Get(&lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;$BotaoAdicionarMais&quot;&lt;/span&gt;), com.Framework.WebControls.WebButton):Desabilitado = &lt;span style=&quot;color: blue;&quot;&gt;YES&lt;/span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEF VAR&lt;/span&gt; lit2 &lt;span style=&quot;color: blue;&quot;&gt;AS&lt;/span&gt; com.Framework.WebControls.WebLiteral.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; lit2 = &lt;span style=&quot;color: blue;&quot;&gt;NEW&lt;/span&gt; com.Framework.WebControls.WebLiteral(&lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;litAux&quot;&lt;/span&gt;, &lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;Teste Literal&quot;&lt;/span&gt;).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETURN&lt;/span&gt; &lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;OK&quot;&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;END PROCEDURE&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #38761d; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;/* _UIB-CODE-BLOCK-END */&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;amp;ANALYZE-RESUME&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Resultado&amp;nbsp;HTML após o evento Click&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfA2pzQHw6iJn7IlWnNwudC9jNE0UUJteFIBV-ENKAUQKpUVs1nOWe2p6LfkRHeiOse1D1NaJ63gnsO9XtPDfoLOHLo3_j086CCGGylVfKOH_2SVKwBi3a4ZN6gzdBIcdRiD2Rq0XjiOQ/s1600/web2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfA2pzQHw6iJn7IlWnNwudC9jNE0UUJteFIBV-ENKAUQKpUVs1nOWe2p6LfkRHeiOse1D1NaJ63gnsO9XtPDfoLOHLo3_j086CCGGylVfKOH_2SVKwBi3a4ZN6gzdBIcdRiD2Rq0XjiOQ/s640/web2.png&quot; height=&quot;402&quot; s5=&quot;true&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Consulte também nosso Framework para a plataforma .Net. Integração nativa&amp;nbsp;com a tecnologia Progress.&lt;br /&gt;
&lt;br /&gt;
Carlos R. Nobrega&lt;br /&gt;
Arquiteto de Soluções .Net</content><link rel='replies' type='application/atom+xml' href='http://4glnews.blogspot.com/feeds/8756728495469850501/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://4glnews.blogspot.com/2011/01/framework-webspeed-orientado-objetos.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/8756728495469850501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/8756728495469850501'/><link rel='alternate' type='text/html' href='http://4glnews.blogspot.com/2011/01/framework-webspeed-orientado-objetos.html' title='Framework WebSpeed Orientado a Objetos?'/><author><name>Carlos R. Nobrega</name><uri>http://www.blogger.com/profile/02316957843584760534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE7RHrGGRMPlyAvLWkDOfwvSUBcZkFiI-Q7g_DIL0epV2d4-zdF0WXIrHncMqSKM8aVQs3XE4SytKmGvwShkF4nIVA5owPBI6P22gRGVSVReyVKXgYxYEqSj4VbHD0SSrnbwoyZslUk6A/s72-c/web1.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2509270170029156228.post-4092086459835815154</id><published>2011-01-24T11:38:00.000-02:00</published><updated>2014-01-07T15:55:57.031-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Modernização"/><category scheme="http://www.blogger.com/atom/ns#" term="Templates"/><title type='text'>Modernize a sua aplicação</title><content type='html'>Modernização de um aplicação consiste em analisar o cenário atual e estudar possíveis soluções do mercado. Depende da empresa tomar uma ação para adaptar-se a um modelo mais atual de tecnologia.&lt;br /&gt;
Em alguns casos a modernização ocorre em passos lentos, em outros casos com uma velocidade sem igual.&lt;br /&gt;
&lt;br /&gt;
O&amp;nbsp;processo de modernização consiste também em evoluir servidores, sistemas operacionais, banco de dados e claro, a aplicação. Pode-se adotar os modelos tradicionais do mercado ou utilizar novas tecnologias.&lt;br /&gt;
&lt;br /&gt;
O Framework utiliza como base de apresentação e acesso a dados a plataforma .Net, que é utilizada em grande escala pelo mercado. Como exemplo citamos a Microsoft&amp;nbsp;que integrou as suas principais ferramentas ao modelo&amp;nbsp;.Net, disponibilizando assim um acesso nativo&amp;nbsp;à plataforma através das ferramentas: SQLServer, SharePoint, BizTalk, ERPs e CRM entre outras. &lt;br /&gt;
&lt;br /&gt;
Fazendo uso intenso de .Net, o&amp;nbsp;Framework foi projetado para atuar em camadas, ou seja, existem três camadas básicas e outras intermediárias que não influem na infra-estrutura. As camadas são:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Dados (Persistence Layer)&lt;/li&gt;
&lt;li&gt;Regra de Negócio (Business Layer)&lt;/li&gt;
&lt;li&gt;Apresentação (Presentation Layer)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Com o framework, boa parte da regra de negócio de sua aplicação poderá ser reaproveitada, pois&amp;nbsp;o acesso a dados permanece com o domínio Progress 4GL tendo como controlador de transações&amp;nbsp;a aplicação&amp;nbsp;.Net através do AppServer. O uso de APIs e BOs podem persistir.&lt;br /&gt;
&lt;br /&gt;
A camada de apresentação é o resultado final de uma modernização de um sistema. É o produto que o usuário visualiza.&amp;nbsp;Então atuando neste processo pode-se reduzir o nível de reclamações do sistema por parte dos usuário e assim ganha-se tempo para uma completa evolução. Com&amp;nbsp;o modelo proposto pelo Framework, este passo ocorre de forma rápida e totalmente integrada ao ERP da Totvs ou com um sistema legado. &lt;br /&gt;
&lt;br /&gt;
Abaixo demonstro alguns modelos da camada de apresentação que pode ser integrado ao Datasul EMS.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Modelo Maintenance&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim45a9Wq3lqZFJCGYuXLq_aiX_rlHMwyufu64ATlorwRPo_YX98napVrm47PJBtGLaSKFn_DpJHp3vtbrA2U99l4hUqRtz8xULN7b4KxNfpH1enCIEzjddPNCG60Ta-paGvAc67fglkU4/s1600/Tela1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim45a9Wq3lqZFJCGYuXLq_aiX_rlHMwyufu64ATlorwRPo_YX98napVrm47PJBtGLaSKFn_DpJHp3vtbrA2U99l4hUqRtz8xULN7b4KxNfpH1enCIEzjddPNCG60Ta-paGvAc67fglkU4/s640/Tela1.png&quot; height=&quot;369&quot; s5=&quot;true&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;em&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Modelo Master x Detail﻿&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZSxap_wWRfJONuao2-1MjvvAGEQ5XsLnT45ztcWURHaCX0JumsyEWt1DxYr-tP-xra9OyuyAi1GPRsQhc9MksbZgL8KGg_OKjK0rbzMppXw_t1aeOcQV0K_RgYGHwzuPbbqzLgkNMP1M/s1600/tela2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZSxap_wWRfJONuao2-1MjvvAGEQ5XsLnT45ztcWURHaCX0JumsyEWt1DxYr-tP-xra9OyuyAi1GPRsQhc9MksbZgL8KGg_OKjK0rbzMppXw_t1aeOcQV0K_RgYGHwzuPbbqzLgkNMP1M/s640/tela2.png&quot; height=&quot;482&quot; s5=&quot;true&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;em&gt;Modelo Search (Zoom)&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYAoCOExmZvRCVQzw9hTaRzPz6AtyNY7pslLYDWHGcbMTmk57eRLx6ntC0lTiJz0NJVi1cqycE_BpFs_HD1cQ96pVf7f83-svFcGxFwS48BZrR9B79nQ6FzRP9XaDh8pNN-yQZIRNhfL4/s1600/tela3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYAoCOExmZvRCVQzw9hTaRzPz6AtyNY7pslLYDWHGcbMTmk57eRLx6ntC0lTiJz0NJVi1cqycE_BpFs_HD1cQ96pVf7f83-svFcGxFwS48BZrR9B79nQ6FzRP9XaDh8pNN-yQZIRNhfL4/s640/tela3.png&quot; height=&quot;508&quot; s5=&quot;true&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;em&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Web Access (Portal pela Web com .Net. Não usa WebSpeed)&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtnR0lawnAzZdOj0Mya6ePkkFuL4o3IrzEW0Qos7epTbz4lwmhMfZIBn9MRQpR6mrB08eQ31w9dRnvs79pJDmkLTGCd6it4Lbv__8zCCfY7IOCh0drVCsnRFgeLtVJXT06AE871HdBgUU/s1600/tela5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtnR0lawnAzZdOj0Mya6ePkkFuL4o3IrzEW0Qos7epTbz4lwmhMfZIBn9MRQpR6mrB08eQ31w9dRnvs79pJDmkLTGCd6it4Lbv__8zCCfY7IOCh0drVCsnRFgeLtVJXT06AE871HdBgUU/s640/tela5.png&quot; height=&quot;386&quot; s5=&quot;true&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;em&gt;Modelos customizados (uso de componentes .Net do mercado)&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvvVE5hh2061oHZ4p3al6plqjX-dz7EDUzmSceW98ZHhyphenhyphenlKroM6jFbK2qeqU68hcUhwrPGtbU36lm7uxLG3JNwkmDqNvWixR1RMsWoQj7yGgdfbt5upBtdsevhNcTlILV2wZ3m3N2AIh0/s1600/tela6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvvVE5hh2061oHZ4p3al6plqjX-dz7EDUzmSceW98ZHhyphenhyphenlKroM6jFbK2qeqU68hcUhwrPGtbU36lm7uxLG3JNwkmDqNvWixR1RMsWoQj7yGgdfbt5upBtdsevhNcTlILV2wZ3m3N2AIh0/s640/tela6.png&quot; height=&quot;418&quot; s5=&quot;true&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCN9eluGhAI_k5hxYNFf-C5MjGZWxpsvEDqvATaL7PtZw_3Vlz4B1VEDHsRKbL6t8mCTXVe6ikbvFGmn2dUjuNdaUor-an-_MeMRXfA2YTlVfk-CIN8KeT5LK8eKdkOC04jzOGNBAoRB0/s1600/tela7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCN9eluGhAI_k5hxYNFf-C5MjGZWxpsvEDqvATaL7PtZw_3Vlz4B1VEDHsRKbL6t8mCTXVe6ikbvFGmn2dUjuNdaUor-an-_MeMRXfA2YTlVfk-CIN8KeT5LK8eKdkOC04jzOGNBAoRB0/s640/tela7.png&quot; height=&quot;354&quot; s5=&quot;true&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Carlos R. Nobrega&lt;br /&gt;
Arquiteto de Soluções .Net</content><link rel='replies' type='application/atom+xml' href='http://4glnews.blogspot.com/feeds/4092086459835815154/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://4glnews.blogspot.com/2011/01/modernize-sua-aplicacao.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/4092086459835815154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/4092086459835815154'/><link rel='alternate' type='text/html' href='http://4glnews.blogspot.com/2011/01/modernize-sua-aplicacao.html' title='Modernize a sua aplicação'/><author><name>Carlos R. Nobrega</name><uri>http://www.blogger.com/profile/02316957843584760534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim45a9Wq3lqZFJCGYuXLq_aiX_rlHMwyufu64ATlorwRPo_YX98napVrm47PJBtGLaSKFn_DpJHp3vtbrA2U99l4hUqRtz8xULN7b4KxNfpH1enCIEzjddPNCG60Ta-paGvAc67fglkU4/s72-c/Tela1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2509270170029156228.post-323757173563899234</id><published>2011-01-20T17:05:00.002-02:00</published><updated>2014-01-07T15:50:21.419-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cenários"/><category scheme="http://www.blogger.com/atom/ns#" term="Framework"/><category scheme="http://www.blogger.com/atom/ns#" term="Metadados"/><category scheme="http://www.blogger.com/atom/ns#" term="Templates"/><title type='text'>Cenários atuais para desenvolvimento Progress 4GL</title><content type='html'>Atualmente os desenvolvimentos em Progress 4GL são realizados com o uso do Application Builder e Templates&amp;nbsp;SmartObjects e&amp;nbsp;para o desenvolvimento Totvs/Datasul,&amp;nbsp;faz-se uso dos Templates DDK 2000 que é distribuído com o produto Datasul.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
O&amp;nbsp;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&amp;nbsp;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.&lt;br /&gt;
&lt;br /&gt;
Veja agora o cenário atual e os cenários propostos pelo Framework.&lt;br /&gt;
&lt;br /&gt;
O&amp;nbsp;cenário 1 representa o modelo atual de desenvolvimento para o produto Totvs/Datasul.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH9t4RZb9OIWWgzsggnxbP2e-PcSc9pKpVNR2mC7zdUUGaAg4egVw3YF6SZjE9fAZiRRUslINUpuF-U0eKEMJ8sybQefTi5tfKpkq9ZvUw6wVpdLv1i7aVqIlFvgZY0yUhz-YZ3SRcH70/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH9t4RZb9OIWWgzsggnxbP2e-PcSc9pKpVNR2mC7zdUUGaAg4egVw3YF6SZjE9fAZiRRUslINUpuF-U0eKEMJ8sybQefTi5tfKpkq9ZvUw6wVpdLv1i7aVqIlFvgZY0yUhz-YZ3SRcH70/s640/1.png&quot; height=&quot;456&quot; s5=&quot;true&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
O&amp;nbsp;cenário&amp;nbsp;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.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz15ZmENPJoBAsv1BZiTgAgSrRWJRIsX5Q6_mMs5h5QwtDggZ1JMl8yAQjPqIbibNkgXSzXi3c3DIXQP9cu_sdbPS71xibdAcpcWFLx5nyLSUHj2r0R078X9xiJnAWu5fUt8JZHqOyBi8/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz15ZmENPJoBAsv1BZiTgAgSrRWJRIsX5Q6_mMs5h5QwtDggZ1JMl8yAQjPqIbibNkgXSzXi3c3DIXQP9cu_sdbPS71xibdAcpcWFLx5nyLSUHj2r0R078X9xiJnAWu5fUt8JZHqOyBi8/s640/2.png&quot; height=&quot;496&quot; s5=&quot;true&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
No&amp;nbsp;cenário&amp;nbsp;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.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnkmPE_UIHS0eMLqbu27G93ykjRkBHHxYZ7WPlOY2P7nHIVf8smO79gXUB1pZQ5Z347JHqEn7taDa-Q5KLiib5ztw-K72Qy0JJj-bMx9ZFQSC07iQK8RPYa8E3FKNVca7gym4j1OSE8Dk/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnkmPE_UIHS0eMLqbu27G93ykjRkBHHxYZ7WPlOY2P7nHIVf8smO79gXUB1pZQ5Z347JHqEn7taDa-Q5KLiib5ztw-K72Qy0JJj-bMx9ZFQSC07iQK8RPYa8E3FKNVca7gym4j1OSE8Dk/s640/3.png&quot; height=&quot;508&quot; s5=&quot;true&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Utilizando o Framework, com poucas alterações,&amp;nbsp;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&amp;nbsp;cada caso deve ser analisado.&lt;br /&gt;
&lt;br /&gt;
Carlos R. Nobrega&lt;br /&gt;
Arquiteto de Soluções .Net</content><link rel='replies' type='application/atom+xml' href='http://4glnews.blogspot.com/feeds/323757173563899234/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://4glnews.blogspot.com/2011/01/cenarios-atuais-para-desenvolvimento.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/323757173563899234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/323757173563899234'/><link rel='alternate' type='text/html' href='http://4glnews.blogspot.com/2011/01/cenarios-atuais-para-desenvolvimento.html' title='Cenários atuais para desenvolvimento Progress 4GL'/><author><name>Carlos R. Nobrega</name><uri>http://www.blogger.com/profile/02316957843584760534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH9t4RZb9OIWWgzsggnxbP2e-PcSc9pKpVNR2mC7zdUUGaAg4egVw3YF6SZjE9fAZiRRUslINUpuF-U0eKEMJ8sybQefTi5tfKpkq9ZvUw6wVpdLv1i7aVqIlFvgZY0yUhz-YZ3SRcH70/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2509270170029156228.post-4865018829435792739</id><published>2011-01-20T12:10:00.006-02:00</published><updated>2014-01-07T15:51:32.524-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Modernização"/><title type='text'>Progress 10.2B e o AppServer</title><content type='html'>Com a versão 10.2B do Progress, todos os &lt;strong&gt;bugs&lt;/strong&gt; para uso do AppServer com .Net foram corrigidos. O Framework .Net é 100% baseado nesta nova versão do Progress. Com o uso desta versão conseguimos evoluir a camada CRUD do framework e assim reduzir ainda&amp;nbsp; mais a codificação dos aplicativos.&lt;br /&gt;
&lt;br /&gt;
Para conhecer mais sobre o AppServer acesse o site do fabricante: &lt;a href=&quot;http://web.progress.com/pt-br/index.html&quot;&gt;http://web.progress.com/pt-br/index.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://4glnews.blogspot.com/feeds/4865018829435792739/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://4glnews.blogspot.com/2011/01/progress-102b-e-o-appserver.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/4865018829435792739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/4865018829435792739'/><link rel='alternate' type='text/html' href='http://4glnews.blogspot.com/2011/01/progress-102b-e-o-appserver.html' title='Progress 10.2B e o AppServer'/><author><name>Carlos R. Nobrega</name><uri>http://www.blogger.com/profile/02316957843584760534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2509270170029156228.post-6414725243123414308</id><published>2011-01-20T00:19:00.000-02:00</published><updated>2014-01-07T15:52:45.337-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Acesso a Dados"/><title type='text'>Métodos e Eventos da Classe BusinessObject</title><content type='html'>Grande parte dos sistemas onde a programação é orientada a objeto,&amp;nbsp;consistem em&amp;nbsp;abstrair a regra de negócio para uma camada independente e&amp;nbsp;no Framework não é diferente. A criação de uma camada única para absorver a regra de negócio torna o desenvolvimento mais atrativo quando houver a necessidade de replicar um programa específico em ambientes diferentes, como por exemplo, uma aplicação publicada no modelo Intranet/Web e outra no modelo Client x Server.&lt;br /&gt;
&lt;br /&gt;
No modelo em que propomos o desenvolvimento,&amp;nbsp;o retrabalho seria apenas&amp;nbsp;construir duas interfaces para os dois ambientes. A regra de negócio seria única e poderia ser utilizada nos dois modelos.&lt;br /&gt;
&lt;br /&gt;
Este desenvolvimento torna-se fácil quando utilizado o Framework Vértice, veja como.&lt;br /&gt;
&lt;br /&gt;
As classes de negócio fazem uso da classe base “Framework.BusinessLayer.BusinessObject” e esta por sua vez já executa diversas funcionalidades sem a necessidade de codificação redundante. Fazer&amp;nbsp;o uso da transação ativa, realizar validações de chave primária e única e disponibilizar eventos, são alguns destes procedimentos que são executados automaticamente, restando ao programador apenas codificar da regra de negócio do objeto.&lt;br /&gt;
&lt;br /&gt;
Os eventos disponibilizados por esta classes são:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;OnValidateSaveRecord&lt;/li&gt;
&lt;li&gt;BeforeSaveRow&lt;/li&gt;
&lt;li&gt;AfterSaveRow&lt;/li&gt;
&lt;li&gt;OnValidateDeleteRecord&lt;/li&gt;
&lt;li&gt;BeforeDeleteRow&lt;/li&gt;
&lt;li&gt;AfterDeleteRow&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div&gt;
Estes eventos devem ser utilizados apenas no cliente (.Net) para efetuar validações antes de executar a regra de negócio na plataforma 4GL.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
A classe “BusinessObject” permite a sobreposição dos seguintes&amp;nbsp;métodos:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;SaveRow&lt;/li&gt;
&lt;li&gt;DeleteRow&lt;/li&gt;
&lt;li&gt;GetAll&lt;/li&gt;
&lt;li&gt;GetMax&lt;/li&gt;
&lt;li&gt;Exists&lt;/li&gt;
&lt;li&gt;GetRecord&lt;/li&gt;
&lt;li&gt;ValidateDeleteRow&lt;/li&gt;
&lt;li&gt;ValidateSaveRow&lt;/li&gt;
&lt;li&gt;Delete&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Existe também&amp;nbsp;os métodos de uso comum da classe BusinessObject que são:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;NewRecord&lt;/li&gt;
&lt;li&gt;AddErrorManual&lt;/li&gt;
&lt;li&gt;InsertRow&lt;/li&gt;
&lt;li&gt;SetErrors&lt;/li&gt;
&lt;li&gt;GetEmpty&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;
Carlos R. Nobrega&lt;br /&gt;
Arquiteto de Soluções .Net&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://4glnews.blogspot.com/feeds/6414725243123414308/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://4glnews.blogspot.com/2011/01/metodos-e-eventos-da-classe.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/6414725243123414308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/6414725243123414308'/><link rel='alternate' type='text/html' href='http://4glnews.blogspot.com/2011/01/metodos-e-eventos-da-classe.html' title='Métodos e Eventos da Classe BusinessObject'/><author><name>Carlos R. Nobrega</name><uri>http://www.blogger.com/profile/02316957843584760534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2509270170029156228.post-9134073797703358053</id><published>2011-01-19T23:19:00.001-02:00</published><updated>2014-01-07T15:52:54.056-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Acesso a Dados"/><title type='text'>Acesso ao banco Progress (Conexão e Transações)</title><content type='html'>&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;&quot;&gt;No mundo .Net, a manipulação de dados é bastante facilitada devido ao uso das classes contidas na namespace System.Data. O uso de objetos como Dataset, Datatable, DataRow faz com que sua aplicação utilize o modelo de dados desconectado.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;&quot;&gt;O Framework utiliza todo o potencial do .Net para a manipulação de registros e demais funcionalidades. No exemplo a seguir mostro como é realizada uma conexão com o banco de dados, utilizando uma transação 4GL e retornando os dados da tabela usuário.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Dim&lt;/span&gt; conn &lt;span style=&quot;background-color: white; color: blue;&quot;&gt;As New&lt;/span&gt; PROConnection(&lt;span style=&quot;color: blue;&quot;&gt;True&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Dim&lt;/span&gt; usuario &lt;span style=&quot;color: blue;&quot;&gt;As New&lt;/span&gt; SysUsuario(conn.AppServer)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Dim&lt;/span&gt; dtUsuario &lt;span style=&quot;color: blue;&quot;&gt;As &lt;/span&gt;ttSysUsuarioDataTable&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Try&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; conn.Transaction.BeginTransaction()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;dtUsuario = usuario.GetAll&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; MsgBox(dtUsuario.Rows.Count)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; conn.Transaction.CommitTransaction()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Catch&lt;/span&gt; ex &lt;span style=&quot;color: blue;&quot;&gt;As &lt;/span&gt;Exception&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; conn.Transaction.RollbackTransaction()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; MsgBox(ex.Message)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;Finally&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; conn.AppServer.Shutdown()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;End Try&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;&quot;&gt;Realizada a conexão com o banco de dados o objeto &lt;strong&gt;dtUsuario&lt;/strong&gt; é populado com todos os registros da tabela &lt;strong&gt;SysUsuario&lt;/strong&gt;, conforme utilizado no exemplo. Após o encerramento da transação e da conexão, a classe pode fazer uso do modelo desconectado do .Net. Pode-se então popular, por exemplo, um componente DataGridView.&lt;/span&gt; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS;&quot;&gt;O exemplo abaixo mostra como é realizada as operações de &lt;u&gt;Inclusão&lt;/u&gt;, &lt;u&gt;Modificação&lt;/u&gt; e &lt;u&gt;Eliminação&lt;/u&gt; de um registro na mesma tabela (SysUsuario) utilizada no caso anterior.&lt;/span&gt; &lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Dim&lt;/span&gt; conn &lt;span style=&quot;color: blue;&quot;&gt;As New&lt;/span&gt; PROConnection(&lt;span style=&quot;color: blue;&quot;&gt;True&lt;/span&gt;)&lt;/span&gt; &lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Dim&lt;/span&gt; usuario &lt;span style=&quot;color: blue;&quot;&gt;As New&lt;/span&gt; SysUsuario(conn.AppServer)&lt;/span&gt; &lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Dim&lt;/span&gt; drUsuario &lt;span style=&quot;color: blue;&quot;&gt;As&lt;/span&gt; ttSysUsuarioRow = &lt;span style=&quot;color: blue;&quot;&gt;Nothing&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;Try&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; conn.Transaction.BeginTransaction()&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6aa84f;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Cria o usuário 3&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; drUsuario = usuario.NewRecord()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; drUsuario.User_ID = 3&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; drUsuario.Nome =&lt;span style=&quot;color: #cc0000;&quot;&gt; &quot;Teste 3&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; drUsuario.Email =&lt;span style=&quot;color: #e06666;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;teste@teste.com&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; drUsuario.Inativo = &lt;span style=&quot;color: blue;&quot;&gt;False&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; drUsuario.Login = &lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;teste3&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; drUsuario.Senha = SimpleCryptography.Encrypt(&lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;1234&quot;&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; drUsuario.TentativasLogin = 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; usuario.Save(drUsuario)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Busca o usuário 3 e atualiza o campo e-mail&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; drUsuario = usuario.GetRecord(New Object() {3})&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; drUsuario.Email = &lt;span style=&quot;color: #cc0000;&quot;&gt;&quot;teste3@teste.com.br&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; usuario.Save(drUsuario)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #38761d;&quot;&gt; &#39;Busca o usuário 3 e elimina&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; drUsuario = usuario.GetRecord(New Object() {3})&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; usuario.Delete(drUsuario)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.Transaction.CommitTransaction()&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Catch&lt;/span&gt; ex &lt;span style=&quot;color: blue;&quot;&gt;As&lt;/span&gt; Exception&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; conn.Transaction.RollbackTransaction()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; MsgBox(ex.Message)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;Finally&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; conn.AppServer.Shutdown()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;End Try&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;&quot;&gt;O Framework trás o modelo de transação do Progress para o domínio da aplicação .Net.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;&quot;&gt;Este modelo de dados é a parte introdutória aos conceitos de conectividade com o banco de dados Progress. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;&quot;&gt;Em breve mostrarei o modelo de apresentação (Templates) que já realizam estas operações da camada CRUD (Create, Read, Update, Delete) tornando o desenvolvimento de aplicações simples e mantendo assim o foco no desenvolvimento na &quot;Regra de Negócio&quot;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS;&quot;&gt;Carlos R. Nobrega&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS;&quot;&gt;Arquiteto de Soluções .Net&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://4glnews.blogspot.com/feeds/9134073797703358053/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://4glnews.blogspot.com/2011/01/acessando-dados-do-banco-progress.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/9134073797703358053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2509270170029156228/posts/default/9134073797703358053'/><link rel='alternate' type='text/html' href='http://4glnews.blogspot.com/2011/01/acessando-dados-do-banco-progress.html' title='Acesso ao banco Progress (Conexão e Transações)'/><author><name>Carlos R. Nobrega</name><uri>http://www.blogger.com/profile/02316957843584760534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>