UiPath Documentation
maestro-automate
latest
false
Guia do usuário do Maestro Automate

Loop

Configure the Loop node, build the loop body, and read its output, with examples and fixes for common issues.

O que faz​

Itera em uma coleção e executa os nós no corpo do loop uma vez para cada item.

Quando usar o loop​

Um Loop ajusta uma coleção de itens ao processo, como uma lista de registros retornados por uma API, uma lista de arquivos ou uma lista de IDs. O loop é executado uma vez por item e é interrompido quando a coleção é esgotada.

Para sair antes de a coleção se esgotar, use Interromper com condição ou um identificador de interrupção, ambos descritos abaixo.

Referência de configuração​

CampoRequiredPadrãoDescription
ColeçãoSimNenhumArray para iterar. Insira uma expressão que resulte em um array, por exemplo, $vars.listCustomers1.output.
ParaleloNãoDesativadoExecuta todas as iterações ao mesmo tempo em vez de uma após a outra. Quando desativado, o loop é executado sequencialmente e aguarda a finalização de cada iteração antes de iniciar a próxima.
Interromper com condiçãoNãoNenhumExpressão que sai do loop antecipadamente quando ele se torna true após a conclusão de uma iteração. Isso se aplica a loops sequenciais.
Mostrar identificador de interrupçãoNãoDesativadoAdds a break handle to the loop so nodes inside the body can exit the loop early. Connect a node's output to the break handle to stop iterating from inside the body. Available in sequential and parallel loops.
Observação:

A iteração sequencial preserva a ordem e é necessária para que a Interrupção com condição funcione, uma vez que a condição é verificada após a conclusão de cada iteração. As iterações paralelas não são executadas em uma ordem garantida.

O loop na tela​

O Loop aparece na tela como um contêiner. Um selo em seu canto superior direito mostra o modo, Sequencial ou Paralelo, e a alternância Paralela no painel de propriedades o alterna. Dentro do contêiner, um identificador de início à esquerda inicia cada iteração e um identificador de continuação à direita a termina. O botão + dentro do contêiner adiciona um nó ao corpo, e o botão + na borda direita adiciona o nó que é executado após o loop. O identificador continuar aceita bordas de mais de um nó, então cada caminho através do corpo pode terminar nele. Um identificador de interrupção aparece quando Mostrar identificador de interrupção está ativado.

O nó Loop é compatível com o tratamento de erros, portanto, sua guia Tratamento de erros pode adicionar um identificador de erro , como descrito no Tratamento de erros .

O corpo do loop​

Os nós colocados dentro dos limites do Loop formam o corpo. Os nós no corpo podem ler o item atual e a iteração, juntamente com quaisquer variáveis no escopo fora do loop.

Item e iteração atuais​

Dentro do corpo, faça referência ao progresso do loop com estas expressões:

  • $vars.<loopName>.currentItem é o item para a iteração atual. Acesse seus campos com notação de pontos, por exemplo, $vars.loop1.currentItem.id.
  • $vars.<loopName>.currentIteration é o número da iteração atual, iniciando em 1.
  • $vars.<loopName>.collection a matriz completa que está sendo iterada.

Elas estão disponíveis apenas dentro do corpo do loop.

Saída​

Após a conclusão de todas as iterações, os resultados agregados do loop estão disponíveis $vars.<loopName>.output. A execução continua com o nó após o loop.

currentItem e currentIteration não estão acessíveis fora do corpo do loop.

Exemplos​

Exemplo 1: chame uma API para cada item​

O loop itera sobre $vars.listCustomers1.output. O corpo do loop contém um nó de Solicitação HTTP com o URL:

https://api.example.com/customers/{{ $vars.loop1.currentItem.id }}
https://api.example.com/customers/{{ $vars.loop1.currentItem.id }}

Exemplo 2: criar uma matriz de resultado entre iterações​

Um nó de Script no corpo do loop retorna um valor para cada item. O loop coleta o resultado de cada iteração em $vars.loop1.output:

return { id: $vars.loop1.currentItem.id, processed: true };
return { id: $vars.loop1.currentItem.id, processed: true };

Após o loop, $vars.loop1.output é um Array desses resultados.

Exemplo 3: interromper cedo quando uma correspondência é encontrada​

Um nó de Decision no corpo do loop verifica o item atual. Com a opção Mostrar identificador de interrupção habilitada, a ramificação correspondente da Decisão se conecta ao identificador de interrupção do loop para parar de iterar assim que a correspondência for localizada.

Problemas comuns​

O corpo do loop nunca é executado​

A coleção está vazia ou undefined. Verificar a saída do nó anterior no trace de execução para confirmar que o Array tem itens. Uma coleção vazia pula o corpo e continua após o loop.

A interrupção com condição nunca é disparada em um loop paralelo​

A Interrupção com condição é avaliada após a conclusão de cada iteração em ordem, por isso ela se aplica a loops sequenciais. Desative o Paralelo se você precisar usar interrupção com condição de execução.

Editar a coleção dentro do corpo não altera o que é iterado​

Capturamos a coleção quando o loop começa. Modificar a variável array dentro do corpo não altera quais itens são iterados. Isso faz parte do design.

Próximas Etapas​

Esta página foi útil?

Conectar

Precisa de ajuda? Suporte(opens in new window)

Quer aprender? Academia UiPath(opens in new window)

Tem perguntas? Fórum do UiPath(opens in new window)

Fique por dentro das novidades