Gere um log de resumo após processar registros no Jitterbit Studio
Introdução
Integrações de processamento em lote são executadas sem supervisão e podem processar milhares de registros em uma única operação. Sem um resumo pós-execução, os operadores precisam ler os logs de operação brutos para entender o que foi processado, o que teve sucesso e o que falhou. Um log de resumo resolve isso coletando uma linha de resultado legível por humanos por registro durante o processamento, e então entrega o log completo como um arquivo ou e-mail quando a operação termina.
Esse padrão utiliza uma variável global, summary_log, para acumular linhas de resultado durante uma transformação. Quando o processamento é concluído, uma operação de script encadeada escreve o resumo usando WriteFile e o envia usando SendEmailMessage. Este guia estende o padrão descrito em Enviar uma notificação por e-mail de uma operação do Studio, que cobre a criação e configuração de componentes de notificação por e-mail.
Padrão de design
O padrão utiliza duas operações em uma cadeia:
- Operação de processamento: Atividade de origem → Transformação → Atividade de destino. Um script no nó raiz da transformação anexa uma linha de resultado por registro à variável global
summary_log. - Operação de script de resumo (executada com sucesso): Lê
summary_loge chamaWriteFilepara persistir o log,SendEmailMessagepara entregá-lo, ou ambos.
Variáveis globais persistem durante a vida útil de uma cadeia de operações. summary_log é escrito pela transformação e ainda está em escopo quando o script de resumo encadeado é executado, sem necessidade de fiação extra.
Parte 1: Acumular linhas de resultado na transformação
-
No Studio, abra seu projeto e abra a transformação usada em sua operação de processamento.
-
Selecione o nó raiz da transformação (o nó de instância de origem de nível superior) e, em seguida, abra o editor de fórmulas para esse nó.
-
Adicione um script que anexe uma linha de resultado a
summary_logpara cada registro. O script deve retornar um valor que pode ser usado pela transformação. Usetruepara garantir que todos os registros sejam processados:// Append a result line for this record $summary_log = $summary_log + Source.record_id + " | " + Source.name + " | processed\n"; // Increment the record count $summary_count = $summary_count + 1; // Return true so the transformation processes every record true;Substitua
Source.record_ideSource.namepelos nomes reais dos campos do seu esquema de origem.Nota
summary_logcomeça comonull. O Jitterbit Script tratanullcomo uma string vazia na concatenação de strings, portanto, nenhuma inicialização explícita é necessária antes que o primeiro registro seja anexado. -
Para incluir uma linha de cabeçalho com a data de execução e a contagem total de registros, adicione um script de inicialização separado à operação que será executado antes da transformação, ou adicione o cabeçalho na operação do script de resumo após o processamento ser concluído.
Dica
Armazene o cabeçalho separadamente em
summary_headerpara que ele possa ser montado após todos os registros serem processados, quandosummary_counttiver seu valor final:$summary_header = "Execução: " + Now() + " | Registros: " + $summary_count + "\n\n";
Parte 2: Encadear a operação do script de resumo
-
No canvas de design, clique com o botão direito na operação e selecione Configurações para abrir as configurações da operação.
-
Selecione a aba Ações.
-
Condição: Selecione Em Sucesso.
-
Ação: Selecione Executar Operação.
-
Operação: Selecione ou crie uma operação de script que irá gravar e enviar o resumo. Se a operação ainda não existir, crie uma nova operação de script e, em seguida, retorne a este diálogo de configurações para selecioná-la.
-
Clique em Adicionar Ação e, em seguida, salve as configurações.
A operação do script de resumo agora é executada automaticamente após a operação de processamento ser concluída com sucesso.
Parte 3: Escrever o resumo em um arquivo
Na operação do script de resumo, chame WriteFile para gravar summary_log em uma atividade de destino de arquivo:
// Assemble the full log with header and body
fullLog = $summary_header + $summary_log;
// Write to the file target activity
WriteFile("<TAG>activity:target:Summary Log File</TAG>", fullLog);
Substitua Summary Log File pelo nome da sua atividade de arquivo de destino conforme aparece no projeto.
Nota
WriteFile é uma função do Jitterbit Script, não um passo de conector de arquivo. Ela grava conteúdo em uma atividade de arquivo de destino já configurada no projeto. Configure a atividade de destino com o caminho de destino e o nome do arquivo antes de chamar WriteFile.
Dica
Inclua a data de execução no nome do arquivo para evitar sobrescrever logs anteriores. Configure uma variável de projeto como [run_date] no caminho do nome do arquivo da atividade de destino (por exemplo, summary_[run_date].txt), e preencha $run_date no seu script antes de chamar WriteFile:
$run_date = Format(Now(), "yyyy-MM-dd");
WriteFile("<TAG>activity:target:Summary Log File</TAG>", fullLog);
Parte 4: Enviar o resumo por e-mail
-
Crie um componente de notificação por e-mail que carregará o resumo. Para instruções completas de configuração, veja Enviar uma notificação por e-mail de uma operação do Studio.
-
No campo Assunto da notificação, faça referência a
summary_countpara incluir o total de registros:Processamento completo: $summary_count registros -
No campo Mensagem, faça referência a
summary_logpara incluir as linhas de resultado acumuladas:$summary_header$summary_logVariáveis globais são resolvidas no momento do envio, então o corpo da mensagem reflete os valores definidos durante a execução do processamento.
-
Na operação do script de resumo, chame
SendEmailMessageapósWriteFile(se utilizado):SendEmailMessage("<TAG>email:Processing Summary</TAG>");Substitua
Processing Summarypelo nome do seu componente de notificação por e-mail.
Verifique a integração
-
Implante e execute a operação de processamento contra um pequeno conjunto de dados de teste de dois ou três registros.
-
Nos logs da operação, confirme que a operação de processamento foi concluída sem erros e que a operação do script de resumo foi executada com sucesso.
-
Se você configurou
WriteFile: verifique o caminho de destino da atividade do arquivo de destino e confirme que o arquivo de resumo foi criado. Abra-o e verifique se contém uma linha de resultado por registro, além do cabeçalho. -
Se você configurou
SendEmailMessage: verifique a caixa de entrada do destinatário e confirme que o e-mail chegou com o assunto e o conteúdo do corpo esperados. -
Se o corpo do e-mail ou o conteúdo do arquivo estiver vazio, confirme que o script de acumulação está colocado no nó raiz da transformação (não em uma operação de script separada) para que ele seja executado uma vez por registro durante a transformação.
-
Se a operação do script de resumo não for executada, confirme que a ação On Success está anexada à operação de processamento, e não a uma operação pai ou filho na cadeia. Verifique os logs da operação para ver se a condição de sucesso foi acionada.
-
Se
WriteFileretornar um erro, confirme que a atividade do arquivo de destino está configurada corretamente e que o agente tem acesso de gravação ao caminho de destino.