Ir al contenido

Queue

Versión: 1.0.0  ·  ID: zoan-packages-queue  ·  Autor: Zoan Software

El paquete Queue permite que los bots trabajen con las colas de trabajo de Nexus: listas de tareas pendientes que se procesan una a una, con bloqueo atómico, reintentos y prioridades. Es el patrón de RPA para procesar lotes grandes de forma robusta y en paralelo.

ActividadTipoSalidaQué hace
Add Queue Itemqueue-add-itemZoanQueueItemEncola un item nuevo con su payload
Add Transaction Itemqueue-add-transaction-itemZoanQueueItemCrea un item y lo devuelve ya in_progress lockeado (crear + procesar en el mismo run)
Get Queue Itemqueue-get-itemZoanQueueItemToma (y bloquea) el siguiente item; null si la cola está vacía
Process Queuequeue-processVacía la cola entera: toma cada item, corre tu lógica y reporta el resultado (el performer en una sola actividad)
Set Transaction Statusqueue-set-transaction-statusMarca un item como successful o failed
Postpone Transactionqueue-postpone-transactionDevuelve el item a la cola y lo aplaza (sin contar el intento)

Las actividades Add Queue Item y Get Queue Item devuelven un ZoanQueueItem. Sus campos más usados, accesibles desde expresiones:

CampoTipoPara qué
item.IdtextoIdentificador único — lo necesitas para reportar el estado.
item.ReferencetextoLa referencia que le dio el productor (si la hubo).
item.StatustextoEstado actual (new, in_progress, successful…).
item.SpecificContent["campo"]objetoEl payload: los datos que el bot debe procesar.
item.Prioritytextohigh, normal o low.
item.AttemptsnúmeroCuántos intentos se han hecho sobre este item.
item.OutputobjetoEl resultado guardado (si terminó con éxito).
item.ExceptionobjetoEl detalle del error (si falló).

Por ejemplo, si encolaste el payload con un campo facturaId, dentro del performer lo lees así: = item.SpecificContent["facturaId"].

Lo normal son dos playbooks (que publicas como dos procesos).

Recorre el origen de los datos y encola un item por cada unidad de trabajo. Suele lanzarse con un trigger programado.

Read Range archivo = "facturas.xlsx" → output: facturas
For Each item en = facturas.Rows
└─ body:
Add Queue Item
queueName = "facturas-por-validar"
reference = = item["numero"]
specificContent = {
"facturaId": = item["numero"],
"monto": = item["monto"]
}

La reference (opcional) hace el encolado idempotente: si vuelves a encolar la misma referencia, Nexus devuelve el item existente en vez de crear un duplicado. Útil si el dispatcher se ejecuta dos veces.

En un bucle, toma items hasta que la cola se vacía, procesa cada uno y reporta el resultado dentro de un Try / Catch.

While condition = true
└─ body:
Get Queue Item queueName = "facturas-por-validar" → output: item
If condition = = item == null
└─ then: Break (la cola está vacía → salir del bucle)
Try
└─ body:
(… procesa = item.SpecificContent["facturaId"] …)
Set Transaction Status item = = item status = successful
output = { "validada": true }
└─ catch (err):
Set Transaction Status item = = item status = failed
exception = { "message": = err.Message }
  • Colas de trabajo (Nexus) — crear y administrar colas, estados y reintentos.
  • Try / Catch — para reportar fallos correctamente.
  • CoreWhile, If, For Each, Break para el bucle del performer.