Processamento Batch CSharp

07/04/2015

Olá,

Gostaria de saber se alguém conhece ou possa me auxiliar onde encontrar uma arquitetura para desenvolvimento de processos Batchs em C#.

Atualmente temos alguns processos feitos em VB6 (executáveis) que são chamados via arquivos BAT onde passamos parâmetros para estes processos (Data, Local de gravação de Logs, local de geração dos relatórios... etc). Os batchs são gerenciados pelo sistema CAWA (CA Workload Automation Desktop Client R11.3 SP2) que gerencia o horário de execução e controle de finalização e fluxo.

Com isso, pretendo reescrever alguns processos para torna-lo inteligente no sentido de enviar e-mail ao dar erro, pegar parâmetros de banco de dados, padronizar logs para gerar um monitor de acompanhamento. A idéia é utilizar ferramente nova e arquitetura nova e abandonar o velho e bom VB6.

Não achei nada a respeito no site e na internet. Apenas desenvolvimento de processos batchs em Java que não é nosso foco.

Caso possuam alguma indicação, sugestão... será bem vinda

Obrigado pelo apoio.

Richardson Nogueira

Melhor resposta

07/04/2015

Olá Richardson. Se a ideia é substituir o VB6, você não poderia simplesmente criar os mesmos executáveis em C#, inclusive mantendo a estrutura dos parâmetros?
Maio sei se entendi bem a questão, mas se for algo nesse sentido, sei executável pode receber argumentos a partir da função Main da classe Program.

Joel Rodrigues

Responder Citar

Outras Respostas

07/04/2015

Jothaz

O que o Joel postou faz sentido e talvez serja menos traumático na conversão.

Uma outra abordagem é criar um aplicação windows service, veja os exemplos:

Criando um Windows Service

[url:descricao=Criando um serviço utilizando C#]http://www.devmedia.com.br/criando-um-servico-utilizando-c/22912[/url]

Instruções passo a passo: criando um aplicativo de Serviço Windows no Designer de Componente
Responder Citar

07/04/2015

Richardson Nogueira Currículo

oi Joel,

A idéia é reescrever os batchs nesta nova linguagem. Já os parâmetros tenho a que migrá-los para Banco de Dados, pois o ambiente produtivo é blindado e qualquer alteração em qualquer parâmetro, que gera a substituição do BAT que chama este executável, gera um desgaste tremendo com a equipe responsável pelo ambiente.

O que pretendo é conseguir criar uma arquitetura/estrutura simples para os mais de 100 batchs que temos. Com isso, centralizar os Logs (hoje cada um gera o seu Log - sem padrão algum e de difícil entendimento), caso o batch dê abort, ele auto reerguer (Caso dê novamente um abort, enviar mensagem ao responsável pelas informações).

Achei no site algo para Java, um conceito interessante e só não achei para C# este mesmo exemplo (se é que posso dizer assim).

Uma dúvida, A Função Main da classe Program retorna algum valor? Pois, atualmente no VB6, tenho a função ExitProcess(X), onde X é o código que ó programa gera para ser lido no programa que gerencia os Batchs. No caso utilizamos 0 (zero) para programa concluído com sucesso e qualquer outro número são os erros catalogados (de nossa propriedade).
Responder Citar

07/04/2015

Richardson Nogueira Currículo

oi Jothaz,

Obrigado pelos exemplos.

Como nossos batchs são processos pesados (Geração de arquivos texto, PDFs, planilhas, envio de e-mails...) e possuem horários para sua execução e dependência de outros processos (em alguns casos) não podemos deixar como um serviço, mas o serviço poderá nos auxiliar em outras tarefas.

Analisarei a possibilidade de utilizar o serviço do Windows para algum tipo de controle.
Responder Citar

07/04/2015

Joel Rodrigues

Semelhante ao que você já faz no VB6, pode usar o ExitCode da aplicação também. Veja a documentação oficial: Propriedade Environment.ExitCode.
Abraço.
Responder Citar