UiPath Documentation
maestro
latest
false
Guia do usuário do Maestro
Importante :
A localização de um conteúdo recém-publicado pode levar de 1 a 2 semanas para ficar disponível.

Loop

Nó de loop para iterar em coleções com opções de paralelo e break.

O que faz​

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

Quando usar​

Use um Loop quando você tiver uma coleção de itens para processar, como uma lista de registros retornados por uma API, uma lista de arquivos ou uma lista de IDs. O loop executa uma vez por item e para 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ãoDesativadoAdiciona um identificador de Break ao loop para que os nós dentro do corpo possam sair do loop antecipadamente. Conecte a saída em um nó ao identificador de interrupção para parar de iterar de dentro do corpo.
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 corpo do loop​

Arraste nós dentro do limite do Loop para adicioná-los ao corpo. Os nós no corpo podem ler o item e a iteração atuais, junto com quaisquer variáveis em 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.

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 em $vars.<loopName>.output. Em seguida, a execução continua a partir do 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 — Crie um Array de resultado em 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 — Pare assim que encontrar uma correspondência​

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.

Interrupção com condição nunca dispara 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.

Esta página foi útil?

Conectar

Precisa de ajuda? Suporte

Quer aprender? Academia UiPath

Tem perguntas? Fórum do UiPath

Fique por dentro das novidades