Controlar dados de entrada problemáticos com o servidor FlowForce

Sempre que aceita dados de uma fonte externa, corre o risco de encontrar erros. Já abordámos este fenómeno em artigos anteriores, nomeadamente em Esteja preparado para o inesperado – o Altova MissionKit resolve um mistério de formatação de números e na série de artigos sobre Processamento da API da Groupon.

Dados incorretos num ficheiro de entrada podem causar a falha da etapa de transformação de dados de um trabalho no FlowForce Server. Quando um trabalho no FlowForce Server falha, as etapas de execução subsequentes não são realizadas. O FlowForce Server foi concebido desta forma para evitar que um erro numa etapa de um trabalho se propague para uma série de resultados inválidos adicionais. Felizmente, o FlowForce Server também inclui funcionalidades que o ajudam a recuperar de erros e a manter o processo em funcionamento.

Neste artigo, vamos aprofundar o trabalho de mapeamento de dados e geração de relatórios descrito em Personalização de um trabalho do servidor FlowForce, de forma a lidar de forma eficiente com dados incorretos num ficheiro de entrada.

Começámos por criar uma versão de um dos ficheiros que continham dados incorretos e adicionámos uma pasta ao fluxo de trabalho para servir de destino dos ficheiros de entrada com dados incorretos.

Criámos o ficheiro de entrada incorreto ao copiar um ficheiro de entrada existente e editá-lo com o programa DiffDog.

A primeira coluna numérica no ficheiro .csv de entrada representa um carimbo de data e hora, indicando horas, minutos, segundos e milésimos. Simplesmente, alterámos os valores nas linhas 14 e 15 para que estivessem fora do limite máximo de 24 horas.

Lançámos o MapForce e definimos o ficheiro com dados incorretos como entrada para a conversão CameraLogToGPX. Quando clicámos no botão "Saída" para executar a conversão, o seguinte erro ocorreu:

Etapas de um processo no servidor FlowForce, com tratamento de erros

Em seguida, definimos uma nova versão da tarefa do servidor FlowForce para processar os dados dentro de uma etapa de tratamento de erros/sucessos. Se o mapeamento de dados falhar, moveremos o ficheiro de entrada com problemas e qualquer ficheiro de saída .gpx parcialmente escrito para a pasta "dados_com_problemas". Se o mapeamento de dados for bem-sucedido, prosseguiremos com a transformação para gerar o relatório .html, e depois moveremos os ficheiros de entrada e .gpx para a pasta de trabalhos concluídos.

Note a última etapa da secção "Em caso de erro". Um erro de mapeamento de dados interromperá a execução do ciclo "Para cada ficheiro", pelo que chamamos novamente todo o processo de forma recursiva para finalizar o processamento de quaisquer ficheiros de entrada que não tenham sido processados.

Se um erro de mapeamento de dados for crítico para a empresa e exigir uma ação imediata, podemos até adicionar uma etapa de trabalho dentro da secção "Em caso de erro" para enviar uma mensagem de e-mail:

Claro que os campos "Destinatário", "Assunto", "Corpo da mensagem" e "Anexo" são totalmente configuráveis.

Se a etapa de mapeamento de dados for bem-sucedida, o servidor FlowForce executa a secção "Em caso de sucesso" e prossegue com a etapa de renderização do ficheiro .html.

Executar a tarefa

O processo é ativado por um temporizador, e o registo do servidor FlowForce regista cada etapa de execução. Na parte do registo que se segue, podemos ver como é tratado o ficheiro de entrada com dados incorretos. A terceira linha da sequência indica o erro, e, em seguida, o ficheiro de entrada e o ficheiro .gpx parcialmente gerado são enviados para a pasta "badData".

A última linha acima mostra que o servidor começou a processar o próximo ficheiro na pasta.

Quando o processo termina, podemos verificar os resultados esperados no conteúdo das pastas de trabalho:

O servidor FlowForce está disponível para as plataformas Windows, Linux e, em breve, para Mac OS. Para começar a utilizar, ** clique aqui para descarregar uma versão de avaliação gratuita!**