Aller au contenu principal

Controllo loop

Configuration actuelle de la tâche Contrôle de boucle dans le Workflow Designer
  • Tipo de tarea: loop-control

La tarea Controllo loop es un componente de flujo especializado que permite crear ciclos complejos, similares a un constructo while en programación. A diferencia de la tarea Repeat que repite solo la acción inmediatamente anterior, el Controllo loop actúa como un punto de "salto" (goto), permitiendo crear ciclos que incluyen una secuencia de más tareas.

Configuración

La configuración define los límites y la temporización del ciclo.

  • Límite de iteraciones: El número máximo de veces que el ciclo puede ser ejecutado. Puede ser insertado manualmente o a través de un parámetro dinámico (ej. #>parametro_num<#).
  • Intervalo entre iteraciones (s): El intervalo de espera, en segundos, entre el final de una iteración y el inicio de la siguiente.

Arquitectura del Ciclo

Para un correcto funcionamiento, el ciclo requiere una especifica arquitectura a tres componentes:

  1. Cuerpo del Loop: Una o más acciones (tareas) que deben ser ejecutadas repetitivamente (ej. Enviar un correo electrónico, actualizar una variable).
  2. Tarea precedente al CONTROLLO LOOP: La última tarea dentro del cuerpo del loop, tendrá:
    • Una condición especial de tipo "LOOP": mientras esta expresión sea verdadera, el flujo es dirigido al Task Controllo loop para continuar el ciclo. Cuando la condición "LOOP" se vuelve falsa, el flujo sigue uno de estos perfiles alternativos o termina el Workflow, saliendo definitivamente del ciclo.
  3. Tarea "Controllo loop": El motor del ciclo. Cuando recibe el flujo, incrementa su contador y lo reindiriza al primer Task del cuerpo del loop.

Funcionamiento Detallado

A cada paso, el flujo es el siguiente:

  1. Se ejecutan las acciones en el cuerpo del loop.
  2. El "Tarea precedente al Controllo Loop" evalúa sus condiciones.
  3. Si la condición "LOOP" es verdadera, el flujo va al "Controllo loop", que lo remanda al inicio.
  4. Si la condición "LOOP" es falsa, el flujo sale del ciclo a través de otro perfil o termina el Workflow, saliendo definitivamente del ciclo.

Ejemplo 1

Este es el escenario estándar. El ciclo termina porque una condición lógica se satisface.

Flujo de Ejecución (basado en el último screenshot):

  1. Déclarer des variables establece una variable x a "0".
  2. El Workflow ejecuta E-Mail Out v.2, luego Définir des variables incrementa el valor de la variable x de 1.
  3. Decisión: El Task Définir des variables evalúa sus salidas:
  • La condición "LOOP" x == "hello" es falsa.
  1. Salida del Ciclo: El flujo sigue el perfil x != "hello" y continúa hacia el Tâche E-Mail Fin. El ciclo se interrumpe correctamente, y el "Controllo loop" nunca se alcanza.

Ejemplo 2: Loop Continuo hasta el Límite (Lógica "While True")

Este escenario está pensado para ejecutar una acción un número predefinido de veces. Aquí, la condición de salida lógica no existe o es siempre verdadera.

Flujo de Ejecución:

  1. Déclarer des variables establece una variable x a "0".
  2. El flujo ejecuta la secuencia E-Mail Out v.2 -> Définir des variables incrementa el valor de la variable x de 1.
  3. El Task Définir des variables tiene una condición "LOOP" que, en este escenario, es siempre verdadera.
  4. El flujo pasa al "Controllo loop".
  5. El "Controllo loop" reindiriza el flujo al inicio, a E-Mail Out v.2.
  6. Este proceso se repite. El ciclo está deseado y controlado.
  7. El "Controllo loop" se detendrá solo cuando su contador interno alcance el Límite de iteraciones (establecido a 10). A ese punto, la tarea va en FAILED con el mensaje "Maximum Number of Iterations Reached (10)".

Parámetros de Salida

  • loopCount: Un compteur qui retourne le nombre d'itération actuelle. Cette valeur commence à 0 et est fondamentale pour créer des conditions de sortie basées sur le nombre de cycles exécutés (par exemple, #>Controllo loop.loopCount<# < 5).
  • result: Contient un message textuel descriptif uniquement dans le cas où le cycle est interrompu de force par la limite maximale (par exemple, "Maximum Number of Iterations Reached (10)").
  • resultJson: Représente le résultat de l'exécution de la tâche au format JSON, incluant des informations générales, des configurations et des détails sur l'exécution.

Notes Importantes

  • Les itérations commencent à 0. Par conséquent, une Limite d'itérations de 2 exécutera 3 itérations (0, 1 et 2).
  • La Tâche passe en FAILED après avoir épuisé les itérations.

Exemple de ResultJson

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