Processe grandes volumes de dados em background. Do que se trata o post: Utilização de um gerador Win em um projeto Web, para a criação de uma procedure em background capaz de realizar uma tarefa em um determinado horário especificado. As aplicações batch podem ser consideradas como programas ou rotinas executadas em segundo plano que possuem um fluxo a percorrer e sem a intervenção direta do usuário. |
Para que servem:
Estas aplicações (background) podem realizar um processamento de dados bem superior aquelas executadas através da Web. São muito úteis para a criação de relatórios mensais, anuais com grande quantidade de dados, ou então para a geração de xml de gráficos, entre outros usos.
Conhecendo:
Primeiramente precisamos adicionar um Gerador Win ao nosso projeto, para isto, no Genexus, clique na aba Preferences (canto inferior esquerdo), após, clique com o botão direito sobre a opção GENERATORS, e selecione NEW GENERATOR.
Agora, nosso projeto terá dois geradores. Clique sobre o gerador recentemente criado e em suas Propriedades determine o modo User Interface com a opção Windows conforme figura abaixo:
Conhecendo:
Primeiramente precisamos adicionar um Gerador Win ao nosso projeto, para isto, no Genexus, clique na aba Preferences (canto inferior esquerdo), após, clique com o botão direito sobre a opção GENERATORS, e selecione NEW GENERATOR.
Agora, nosso projeto terá dois geradores. Clique sobre o gerador recentemente criado e em suas Propriedades determine o modo User Interface com a opção Windows conforme figura abaixo:
Pronto nosso gerador está configurado. Agora precisamos configurar a nossa Procedure que será executada em background, determine o modo Main program com a opção True e na propriedade Generator selecione o gerador Win anteriormente criado, conforme abaixo:
Como esta procedure será Main é preciso atenção para compila-la após cada alteração.
Executanto o processamento:
Para este nosso exemplo, programei a procedure para criar um relatório em excel contendo o nome e a cidade de dois clientes, conforme o código abaixo:
//=====Abre/Cria a planilha=====
&ExcelDocument.Open('C:\Temp\CustomerReport.xls')
//=====Limpa a planilha caso já exista=====
&ExcelDocument.Clear()
&ExcelDocument.Cells(1,1).Text = 'Clientes'
&ExcelDocument.Cells(1,2).Text = 'Cidade'
&ExcelDocument.Cells(2,1).Text = 'Fulano de Tal'
&ExcelDocument.Cells(2,2).Text = 'São Paulo'
&ExcelDocument.Cells(3,1).Text = 'Cicrano de Tal'
&ExcelDocument.Cells(3,2).Text = 'Rio de Janeiro'
//=====Salva as inserções realizadas=====
&ExcelDocument.Save()
//=====Fecha a planilha trabalhada=====
&ExcelDocument.Close()
Por fim, a execução desta procedure background poderá ser feita de duas maneiras:
1. Chamada através de uma Web Panel, por meio da função Shell:
&retorno = Shell('C:\KBs\TestesGerais\CSharpModel\bin\aprocessamentobatch.exe',0)
2. Chamada através de um programa de agendamento de execuções, recomendo o JIT Scheduler disponível aqui. Este programa é de simples configuração, podemos determinar dias, horários e intervalos de execução.
Por enquanto é só pessoal, qualquer dúvida, sugestão ou correção aguardo nos cometários. Grande Abraço.