Atividades

Marcador de Loop(Loop Marker)

O marcador (↻) que faz uma atividade repetir enquanto uma condição valer — o while/do-while do BPMN em uma única atividade.

A característica de loop padrão (standard loop) repete uma atividade até sua condição mandar parar, com teste opcional antes ou depois de cada iteração e limite máximo de repetições. Ela comprime o “tente de novo até aceitar” em uma atividade marcada, em vez de um ciclo de gateway.

Quando usar e evitar

Quando usar

  • Para passos repita-até-conseguir: tentativas de contato, rodadas de negociação, reconferências de qualidade.

  • Quando as iterações são sequencialmente dependentes — cada repetição considera o resultado anterior.

  • Para limpar o diagrama de pequenos loops de seta para trás.

Quando NÃO usar

  • Quando as iterações rodam por item de uma coleção — isso é multi-instância, não loop.

  • Quando o ciclo atravessa várias atividades — modele o loop explícito com gateway.

  • Quando não existe condição de término — loop sem limite é bug de modelagem.

Exemplo de negócio

Ligando para o cliente até conseguir contato

Diagrama BPMN: Ligando para o cliente até conseguir contato
Ligando para o cliente até conseguir contato

Abra este exemplo no editor de processos da HEFLO e explore o diagrama por dentro.

Abrir no editor HEFLO →

Passo a passo

  1. Contatar cliente (destacada, marcador de loop ↻) executa.
  2. A condição “cliente ainda não contatado” a re-executa — tentativa após tentativa, com um máximo sensato.
  3. Quando o contato acontece (ou o teto é atingido), o fluxo segue.

Diferenças

Loop vs. Multi-instância

Loop repete o mesmo trabalho enquanto uma condição vale (quantidade desconhecida, sequencial por natureza). Multi-instância cria uma execução *por item da coleção* (quantidade conhecida no início, paralela ou sequencial). Guiado por condição → loop; guiado por dados → MI.

FAQ

Onde a condição do loop é definida?

Nas características de loop da atividade: a expressão booleana, o flag testBefore e o loopMaximum opcional.

Como escapo de um loop travado?

Defina loopMaximum, ou anexe uma borda de timer interrompente à atividade como válvula de segurança.

Elementos relacionados