Ir al contenido

Process Queue

Tipo: queue-process  ·  Paquete: Queue Activities v1.0.0  ·  Salida:

Actividad contenedora (como For Each) que vacía una cola por ti: en cada vuelta toma el siguiente item con bloqueo atómico, ejecuta el cuerpo que definas con el item en el ámbito, y marca el resultado automáticamente (successful si el cuerpo termina, failed si lanza una excepción). Repite hasta que la cola queda vacía.

Es el patrón del consumidor (performer) en una sola actividad: encapsula el bucle While + Get Queue Item + Try/Catch + Set Transaction Status para que no tengas que cablearlo a mano cada vez.

En cada iteración:

  1. Toma el siguiente item de la cola (atómico, lo bloquea para esta ejecución). Si la cola está vacía, el bucle termina.
  2. Expone el item en la variable que indiques (itemVariable, tipo ZoanQueueItem).
  3. Ejecuta el cuerpo (tus sub-actividades).
  4. Reporta el estado automáticamente:
    • el cuerpo termina sin error → successful;
    • el cuerpo lanza una excepción → failed (honra el auto_retry de la cola).
  5. Vuelve al paso 1.
ParámetroEditorDescripción
queueNameexpresiónNombre de la cola. Debe existir en el entorno de la ejecución.
itemVariableidentificadorNombre de la variable que recibe el item actual (ZoanQueueItem).
activitiescuerpoLas actividades que se ejecutan por cada item.
ParámetroEditorDescripción
maxItemsnúmeroMáximo de items a procesar. Vacío = hasta vaciar la cola.
onErrorlistaAnte un item que falla: continue (lo marca failed y sigue con el siguiente — por defecto) o stop (lo marca failed y detiene el bucle).

El performer completo, en un solo bloque:

Process Queue
queueName = "facturas-por-validar"
itemVariable = item
onError = continue
└─ body:
(… procesa = item.SpecificContent["facturaId"] …)
Set Variable validada = true

No necesitas While, ni comprobar null, ni Try/Catch, ni cerrar la transacción: si el cuerpo termina, el item queda successful; si algo dentro lanza un error, queda failed y el bucle continúa con el siguiente.

Process Queue hace exactamente esto por ti:

While condition = =true
└─ body:
Get Queue Item queueName = "facturas-por-validar" → output: item
If condition = =item == null
└─ then: Break
Try
└─ body: (… procesa …) · Set Transaction Status item = =item status = successful
└─ catch: Set Transaction Status item = =item status = failed

Usa la forma manual solo si necesitas control fino (lotes, reintentos personalizados, aplazar con Postpone Transaction).