Pular para o conteúdo principal

Controlo de Loop

Configuração atual da tarefa `Controllo loop` no Workflow Designer
  • Tipo de Tarefa: loop-control

A Tarefa Controlo de Loop é um componente de fluxo especializado que permite criar ciclos complexos, semelhantes a uma estrutura while em programação. Diferente da Tarefa Repeat, que repete apenas a ação imediatamente anterior, o Controlo de Loop atua como um ponto de "salto" (goto), permitindo criar ciclos que incluem uma sequência de várias Tarefas.

Configuração

A configuração define os limites e a temporização do ciclo.

  • Limite de iterações: O número máximo de vezes que o ciclo pode ser executado. Pode ser inserido manualmente ou através de um parâmetro dinâmico (ex: #>parametro_num<#).
  • Intervalo entre iterações (s): O intervalo de espera, em segundos, entre o final de uma iteração e o início da seguinte.

Arquitetura do Ciclo

Para um funcionamento correto, o ciclo requer uma arquitetura específica de três componentes:

  1. Corpo do Loop: Uma ou mais ações (Tarefas) que devem ser executadas repetidamente (ex: Enviar um e-mail, atualizar uma variável).
  2. Tarefa anterior ao CONTROLO DE LOOP: A última Tarefa dentro do corpo do loop terá:
    • Uma condição especial do tipo "LOOP": enquanto esta expressão for verdadeira, o fluxo é direcionado para a Tarefa Controlo de Loop para continuar o ciclo. Quando a condição "LOOP" se torna falsa, o fluxo segue um destes caminhos alternativos ou termina o Workflow, saindo definitivamente do ciclo.
  3. Tarefa "Controlo de Loop": O motor do ciclo. Quando recebe o fluxo, incrementa o seu contador e redireciona-o para a primeira Tarefa do corpo do loop.

Funcionamento Detalhado

Em cada passo, o fluxo é o seguinte:

  1. São executadas as ações no corpo do loop.
  2. A "Tarefa anterior ao Controlo de Loop" avalia as suas condições.
  3. Se a condição "LOOP" for verdadeira, o fluxo vai para o "Controlo de Loop", que o redireciona para o início.
  4. Se a condição "LOOP" for falsa, o fluxo sai do ciclo através de outro caminho.

Exemplo 1

Este é o cenário padrão. O ciclo termina porque uma condição lógica é satisfeita.

Fluxo de Execução (baseado na última captura de tela):

  1. Declarar variáveis define uma variável x a "0".
  2. O Workflow executa E-Mail Out v.2, depois Definir variáveis incrementa o valor da variável x di 1.
  3. Decisão: A Tarefa Definir variáveis avalia as suas saídas:
  • A condição "LOOP" x == "hello" é falsa.
  1. Saída do Ciclo: O fluxo segue o caminho x != "hello" e prossegue para o Tarefa E-Mail End. O ciclo é interrompido corretamente, e o "Controlo de Loop" nunca é alcançado.

Exemplo 2: Loop Contínuo até o Limite (Lógica "While True")

Este cenário é pensado para executar uma ação um número predefinido de vezes. Aqui, a condição de saída lógica não existe ou é sempre verdadeira.

Fluxo de Execução:

  1. Declarar variáveis define uma variável x como "0".
  2. O fluxo executa a sequência E-Mail Out v.2 -> Definir variáveis incrementa o valor da variável x em 1.
  3. A Tarefa Definir variáveis tem uma condição "LOOP" que, neste cenário, é sempre verdadeira.
  4. O fluxo passa para o "Controlo de Loop".
  5. O "Controlo de Loop" redireciona o fluxo para o início, em E-Mail Out v.2.
  6. Este processo repete-se. O ciclo é intencional e controlado.
  7. O "Controlo de Loop" só parará quando o seu contador interno atingir o Limite de iterações (definido como 10). Nesse ponto, a Tarefa vai para FALHADO com a mensagem "Maximum Number of Iterations Reached (10)".

Parâmetros de Saída

  • loopCount: Um contador que retorna o número da iteração atual. Este valor começa em 0 e é fundamental para criar condições de saída baseadas no número de ciclos executados (ex: #>Controllo loop.loopCount<# < 5).
  • result: Contém uma mensagem de texto descritiva apenas no caso de o ciclo ser interrompido forçadamente pelo limite máximo (ex: "Maximum Number of Iterations Reached (10)").
  • resultJson: Representa o resultado da execução da tarefa em formato JSON, incluindo informações gerais, configurações e detalhes da execução.

Notas Importantes

  • As iterações começam em 0. Consequentemente, um Limite de iterações de 2 executará 3 iterações (0, 1 e 2).
  • A Tarefa fica em FALHADO após esgotar as iterações.

Exemplo de ResultJson

{
"run_info": {
"status": "Completed",
"run_result": "Success"
},
"output_parameters": {
"exitStatus": "0"
}
}