Pular para o conteúdo principal

Iterador

Configuração atual da tarefa `Iterator` no Workflow Designer
  • Tipo de Tarefa: iterator

A Tarefa Iterador é uma ferramenta de automação poderosa projetada para executar um processo repetitivo sobre um conjunto de dados. Recebe como entrada um conjunto de dados e lança um Workflow "filho" para cada linha desse Conjunto de Dados.

Isto permite processar em massa grandes quantidades de informação, passando os valores de cada linha como parâmetros para o Workflow filho. É o equivalente a um ciclo "for-each" para processos de automação.

Pré-requisitos

Para funcionar corretamente, a Tarefa Iterador deve receber como entrada um dos seguintes Tasks:

Configuração

A configuração da Tarefa define qual Workflow executar e como passar os dados para cada iteração.

  • Workflow Filtro: Permite filtrar a lista de Workflows disponíveis, facilitando a identificação daqueles a serem iniciados.
  • Workflow a iterar: Selecione no menu o nome do Workflow "filho" que deve ser executado para cada linha do conjunto de dados.
  • Parar na primeira iteração falhada: Se esta caixa estiver marcada, o Iterador parará imediatamente assim que qualquer execução do Workflow filho falhar. Se não estiver marcada, o Iterador tentará completar todas as iterações, mesmo que algumas falhem.

Configuração dos Parâmetros

Esta secção permite mapear os dados do conjunto de dados de entrada para os parâmetros do Workflow filho.

  • Parâmetro: O nome do parâmetro tal como foi definido no Workflow filho (ex: “department”).
  • Valor: O valor a ser atribuído ao parâmetro para a iteração atual.
  • Exemplo: #>JSON to Table.Dataset.department<# indica que, para cada linha, o valor da coluna name do conjunto de dados produzido pela Tarefa JSON to Table será passado como valor.
  • Tipo: O tipo de dado do parâmetro (ex: String, Numeric, etc.).

Exemplo prático de funcionamento

Configuração do Iterador

  1. Workflow Pai (Preparação de Dados):
  • A Tarefa Importar texto lê um ficheiro JSON que contém uma lista de funcionários.
[
{
"name": "John",
"surname": "Smith",
"department": "Human Resources"
},
{
"name": "Emily",
"surname": "Johnson",
"department": "Finance"
},
{
"name": "Michael",
"surname": "Brown",
"department": "IT"
},
{
"name": "Sarah",
"surname": "Davis",
"department": "Marketing"
}
]
  • Em seguida, a Tarefa JSON para Tabela executa a sua função principal: conecta-se a um base de dados e escreve os dados do JSON numa tabela. O log de execução confirma-o com a mensagem "4 rows inserted into table". Para além da escrita no base de dados, a Tarefa disponibiliza específicos parâmetros de saída que representam os dados processados e inseridos na tabela, permitindo a sua reutilização nas Tarefas subsequentes do Workflow.
  1. Configuração e Ação do Iterador:
  • Workflow a iterar: está definido como “dev_iterator”.
  • Parâmetro: O Workflow filho espera um parâmetro chamado “department”.
  • Valor: A este parâmetro é mapeado o valor da coluna "department" do conjunto de dados: #>JSON to Table.Dataset.department<#.
  1. Execução das Iterações: O Iterador agora executa o Workflow “dev_iterator” 4 vezes, uma para cada linha (funcionário) do conjunto de dados:
  • Primeira iteração: Lança “dev_iterator” passando o parâmetro department = "Human Resources".
  • Segunda iteração: Lança “dev_iterator” passando department = "Finance".
  • Terceira iteração: Lança “dev_iterator” passando department = "IT".
  • Quarta iteração: Lança “dev_iterator” passando department = "Marketing".
  1. Lógica do Workflow Filho (dev_iterator):
  • Em cada execução, a Tarefa Conditional contida nela avalia o valor do parâmetro "department" recebido e direciona o fluxo para o Tarefa de envio de e-mail correto. Para "IT", não encontrando uma condição específica, seguirá o caminho "Caso contrário".
  1. Resultado Final:
  • São enviados quatro e-mails distintos, um para cada colaborador presente no ficheiro JSON original. O log de execução da Tarefa Iterator confirma o sucesso com a mensagem: "All iterations completed successfully".

Workflow Pai

Workflow Filho

Nota Importante

  • Apenas os Workflows que não estejam bloqueados em edição no momento da execução podem ser executados.
  • A Tarefa Iterator terminará com o estado "Success" somente se todas as iterações correrem bem (a menos que a opção "Stop at first failed iteration" esteja ativa, caso em que pararia no primeiro erro).

Parâmetros de Saída

Ao final de todas as suas iterações, a Tarefa Iterator expõe uma série de parâmetros de saída. Estes parâmetros são extremamente úteis para as Tarefas subsequentes, por exemplo, para fins de registo (logging), para enviar um relatório resumido ou para implementar uma lógica condicional baseada no resultado do ciclo.

  • targetWorkflow: Retorna o nome ou o identificador do Workflow "filho" que foi executado em cada iteração.
  • Dataset.Count: Indica o número total de linhas presentes no Dataset de entrada.
  • Iterations.Total: O número total de iterações que foram efetivamente executadas. Numa execução normal, este valor coincidirá com Dataset.Count.
  • Iterations.Success: O contador de iterações que terminaram com sucesso. Cada vez que uma execução do Workflow filho termina corretamente, este número é incrementado.
  • Iterations.Failed: O contador de iterações falhadas. Se uma execução do Workflow filho terminar com um erro, este número é incrementado.
  • result: Fornece o estado geral da própria Tarefa Iterator. Geralmente indica "Success" somente se todas as iterações foram concluídas com sucesso.
  • resultJson: Representa o resultado da execução da tarefa em formato JSON, incluindo informações gerais, configurações e detalhes da execução.