Process Queue
Process Queue
Sección titulada «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.
Cómo funciona
Sección titulada «Cómo funciona»En cada iteración:
- Toma el siguiente item de la cola (atómico, lo bloquea para esta ejecución). Si la cola está vacía, el bucle termina.
- Expone el item en la variable que indiques (
itemVariable, tipoZoanQueueItem). - Ejecuta el cuerpo (tus sub-actividades).
- Reporta el estado automáticamente:
- el cuerpo termina sin error →
successful; - el cuerpo lanza una excepción →
failed(honra elauto_retryde la cola).
- el cuerpo termina sin error →
- Vuelve al paso 1.
Parámetros requeridos
Sección titulada «Parámetros requeridos»| Parámetro | Editor | Descripción |
|---|---|---|
queueName | expresión | Nombre de la cola. Debe existir en el entorno de la ejecución. |
itemVariable | identificador | Nombre de la variable que recibe el item actual (ZoanQueueItem). |
activities | cuerpo | Las actividades que se ejecutan por cada item. |
Parámetros opcionales
Sección titulada «Parámetros opcionales»| Parámetro | Editor | Descripción |
|---|---|---|
maxItems | número | Máximo de items a procesar. Vacío = hasta vaciar la cola. |
onError | lista | Ante un item que falla: continue (lo marca failed y sigue con el siguiente — por defecto) o stop (lo marca failed y detiene el bucle). |
Ejemplo
Sección titulada «Ejemplo»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 = trueNo 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.
Equivalente manual
Sección titulada «Equivalente manual»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 = failedUsa la forma manual solo si necesitas control fino (lotes, reintentos personalizados, aplazar con Postpone Transaction).
Actividades relacionadas
Sección titulada «Actividades relacionadas»- Get Queue Item — tomar items uno a uno (la primitiva que usa por dentro).
- Set Transaction Status — reportar éxito o fallo manualmente.
- Postpone Transaction — aplazar un item para más tarde.
- Add Queue Item — encolar trabajo (el lado productor).