Skip to content

Decisiones humanas en lotes

This content is not available in your language yet.

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ó.

  1. Dispatcher: por cada elemento del lote, Add Queue Item con el grupo Decisión humana (taskTitle y lo demás). El item nace en estado Esperando decisión y no se entrega a ningún robot. Usa reference con el id del registro: si el dispatcher se reejecuta, no se duplican ni el item ni la tarea.
  2. 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.
  3. Zoan Cloud libera el item: copia el resultado a item.Decision y lo pasa a new. Si la tarea vence o se cancela, el item también vuelve con la decisión vacía y Decision.Status en expired o cancelled (o se abandona, según la opción de la cola).
  4. 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 lote

ZoanQueueItem trae la decisión:

CampoPara qué
item.HasDecisiontrue si la tarea ya cerró.
item.Decision.ValueLa opción elegida: "Aprobar", "Rechazar"… Vacía si venció o se canceló.
item.Decision.Statuscompleted, expired o cancelled.
item.Decision.CommentComentario de quien decidió.
item.Decision.Fields["monto_aprobado"]Campos del formulario de la tarea.
item.Decision.DecidedBy · DecidedAtQuié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.

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.

  • 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.