Decisiones humanas en lotes
Cuando un proceso necesita que una persona decida algo (aprobar una factura, confirmar un reembolso, elegir entre opciones), crea una tarea en la bandeja de Tareas de Zoan Cloud. Para una decisión puntual basta con Create Human Task y onCompleteProcess. Pero para lotes (cincuenta facturas que un supervisor aprueba una tras otra) eso lanzaría cincuenta ejecuciones del robot.
La solución es ligar cada tarea a un item de cola: la tarea guarda la decisión de la persona; el item guarda el trabajo del robot. Cuando la persona decide, el item vuelve a la cola con la decisión adjunta y un solo performer procesa todo lo que se acumuló.
Cómo funciona
Sección titulada «Cómo funciona»- Dispatcher: por cada elemento del lote, Add Queue Item con el grupo Decisión humana (
taskTitley lo demás). El item nace en estado Esperando decisión y no se entrega a ningún robot. Usareferencecon el id del registro: si el dispatcher se reejecuta, no se duplican ni el item ni la tarea. - La persona decide en Tareas, con todo lo de siempre: asignación por persona o rol, plazo de atención (SLA) y vencimiento, recordatorio, escalamiento y correo.
- Zoan Cloud libera el item: copia el resultado a
item.Decisiony lo pasa anew. Si la tarea vence o se cancela, el item también vuelve con la decisión vacía yDecision.Statusenexpiredocancelled(o se abandona, según la opción de la cola). - Performer: un disparador de tipo cola (o uno programado) lanza el proceso, que recorre la cola con Process Queue y ramifica por
item.Decision.Value.
Dispatcher ──► item (esperando decisión) + tarea ──► la persona decide ──► item vuelve a la cola con Decision ──► un performer procesa el loteEn el performer
Sección titulada «En el performer»ZoanQueueItem trae la decisión:
| Campo | Para qué |
|---|---|
item.HasDecision | true si la tarea ya cerró. |
item.Decision.Value | La opción elegida: "Aprobar", "Rechazar"… Vacía si venció o se canceló. |
item.Decision.Status | completed, expired o cancelled. |
item.Decision.Comment | Comentario de quien decidió. |
item.Decision.Fields["monto_aprobado"] | Campos del formulario de la tarea. |
item.Decision.DecidedBy · DecidedAt | Quién y cuándo. |
Rechazar no abandona el item. El performer recibe el rechazo y decide qué hacer (avisar, revertir, archivar). Si prefieres que las vencidas y canceladas no lleguen al robot, elige abandonar el item en la configuración de la cola.
Si el performer falla al procesar un item, el reintento conserva la decisión: nunca se vuelve a preguntar a la persona.
Alternativa: crear la tarea y que ella cree el item
Sección titulada «Alternativa: crear la tarea y que ella cree el item»Create Human Task acepta queueName: crea la tarea y, a la vez, el item enlazado (con specific_content = data). Es la misma mecánica vista desde la tarea; elige la actividad que te quede más natural en el playbook.
Catálogo y etiquetas
Sección titulada «Catálogo y etiquetas»Las tareas admiten un catálogo (catalog: “facturas”, “reembolsos”…) y etiquetas. En la bandeja se filtra por catálogo y las métricas se desglosan por catálogo: creadas, decididas, abiertas, fuera de plazo, mediana de decisión y porcentaje a tiempo.
Cuándo no usar este patrón
Sección titulada «Cuándo no usar este patrón»- Una decisión puntual dentro de una conversación del asistente: el asistente ya espera y retoma solo.
- Una aprobación rápida en medio de un proceso que debe continuar de inmediato: Wait for Human Task bloquea el robot unos minutos y sigue.