- Introdução
- Introdução
- Crie em qualquer tela
- Criar com Caso
- Referência
- Definição de chaves de caso (sistema versus externo)
- Estabelecimento de contratos de E/S e de write-back
- Modelagem de estágios primário e secundário
- Disparo de um caso a partir do Data Fabric
- Implementação de personas e permissões no nível de estágio
- Configuração de SLAs e regras de escalonamento automatizadas
- Configuração de um loop de retrabalho (reentrada)
- Configuração e teste do agente do caso (pré-visualização)
- Criar com fluxo
- Criar com BPMN
- Operando
- Monitoramento
- Otimizando
- Informações de referência
Loop
O nó Loop executa os nós de seu corpo uma vez para cada item de uma coleção, com opções paralelas e de interrupção.
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
| Campo | Required | Padrão | Description |
|---|---|---|---|
| Coleção | Sim | Nenhum | Array para iterar. Insira uma expressão que resulte em um array, por exemplo, $vars.listCustomers1.output. |
| Paralelo | Não | Desativado | Executa 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ção | Não | Nenhum | Expressã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ção | Não | Desativado | Adds 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. |
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 em1.$vars.<loopName>.collectiona 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
- Fluxo de controle: os nós que se ramificam, repetem e se juntam a caminhos.
- Decisão: ramificação com base em uma condição.
- Variáveis e fluxo de dados: como os nós passam dados.
- O que faz
- Quando usar o loop
- Referência de configuração
- O loop na tela
- O corpo do loop
- Item e iteração atuais
- Saída
- Exemplos
- Exemplo 1: chame uma API para cada item
- Exemplo 2: criar uma matriz de resultado entre iterações
- Exemplo 3: interromper cedo quando uma correspondência é encontrada
- Problemas comuns
- O corpo do loop nunca é executado
- A interrupção com condição nunca é disparada em um loop paralelo
- Editar a coleção dentro do corpo não altera o que é iterado
- Próximas Etapas