- Introdução
- Introdução
- Criação com o Maestro BPMN
- Entendendo a modelagem BPMN do Maestro
- Abertura da tela de modelagem
- Modelagem de seu processo
- Alinhamento e conexão de elementos BPMN
- Autopilot para Maestro (visualização)
- Repositório de processos
- Implementação de um processo BPMN simples
- Implementação de um processo BPMN complexo
- Depuração
- Simulação
- Evaluations (Preview)
- Cenários de implementação comuns
- Criação com o Maestro Case
- Introdução ao Maestro Case
- Maestro BPMN versus Maestro Case: quando usar o Case Management
- O ciclo de vida do Maestro Case: do disparo de eventos à experiência do aplicativo
- Crie seu primeiro caso com o Maestro Case
- Build a Maestro Case with a coding agent (preview)
- Definição de chaves de caso (sistema versus externo)
- Estabelecimento de contratos de E/S e de write-back
- Regras de saída e término do estágio inicial
- 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)
- Configuring and testing the Case Manager Agent (preview)
- Contrato de entrada e saída do Case Manager
- Dicionário de componentes Maestro Case
- Criação com o Maestro Flow
- Maestro Automate
- Integrações
- Operando
- Monitoramento
- Otimizando
- Informações de referência
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
| 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 | Adiciona 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. |
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 em1.
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.