Wait for Human Task
Wait for Human Task
Sección titulada «Wait for Human Task»Tipo: human-task-wait · Paquete: Human Task Activities v1.3.3 · Salida: object
Espera la decisión de una tarea creada con Create Human Task. El robot consulta la tarea cada pocos segundos y continúa en cuanto alguien la decide, la cancela o la tarea vence. Si se agota el tiempo de espera, no falla: devuelve status = "timeout" para que el flujo decida qué hacer.
Está pensada para decisiones que tardan minutos. Si la decisión puede tardar horas o días, es mejor usar onCompleteProcess en Create Human Task y terminar el proceso, en vez de tener el robot ocupado esperando.
Cómo funciona
Sección titulada «Cómo funciona»- Consulta el estado de la tarea
taskId. - Si la tarea está
completed,cancelledoexpired, termina y devuelve el resultado. - Si sigue abierta (
pendingoclaimed), esperapollSecondssegundos y vuelve a consultar. - Si pasan
timeoutMinutesminutos sin que la tarea se cierre, devuelve la tarea constatus = "timeout". ConcancelOnTimeout = true, además la cancela (con el motivo “No decision within N min (process timeout).”) para que nadie la decida tarde. Si esa cancelación falla, solo queda una advertencia en el log y la actividad igual devuelvetimeout.
Si la ejecución se detiene mientras espera, la actividad falla con “Se canceló mientras se esperaba la tarea humana.”.
Solo puede esperar tareas creadas por un robot en el mismo ambiente; una tarea de otro ambiente, o creada por otra vía, responde como si no existiera.
Parámetros requeridos
Sección titulada «Parámetros requeridos»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
taskId | string | — | Id de la tarea: la salida id de Create Human Task. Ej: tarea["id"]. |
Parámetros opcionales
Sección titulada «Parámetros opcionales»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
timeoutMinutes | int | 60 | Minutos máximos de espera. Un valor vacío, 0 o negativo usa 60. |
pollSeconds | int | 15 | Segundos entre consultas. El mínimo es 5: un valor menor se sube a 5. |
cancelOnTimeout | bool | false | Si se agota el tiempo, cancelar la tarea para que una decisión tardía no dispare onCompleteProcess (un item de cola ligado se libera). |
Devuelve un object (diccionario) con:
| Campo | Tipo | Descripción |
|---|---|---|
id | string | Id de la tarea. |
status | string | completed, cancelled, expired o timeout (se agotó la espera). |
title | string | Título de la tarea. |
decision | string | La opción elegida (ej. Aprobar). Si la tarea se canceló, cancelada; null si venció o si se agotó la espera. |
comment | string | Comentario de quien decidió (en una cancelación, el motivo). |
fields | Dictionary | Campos que llenó la persona. Ej: resultado["fields"]["monto_aprobado"]. Con un formulario, las tablas llegan como listas de filas (cada fila con todas sus columnas; lo vacío en null) y los archivos como referencias que bajas con Download Human Task File. |
form | Dictionary | Con formulario: su name y version. Sin formulario, null. |
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa y solución |
|---|---|
'taskId' es obligatorio. | Falta taskId. |
… HTTP 404: …La tarea no existe. / …Task not found… | El id no es válido, la tarea es de otro ambiente o no la creó un robot. Pasa el id que devolvió Create Human Task. |
Se canceló mientras se esperaba la tarea humana. | La ejecución se detuvo durante la espera. |
Las actividades de tareas humanas necesitan el contexto de ejecución de Zoan Automation. Falta: … | El proceso no corre desde Zoan Cloud ni desde el Designer con sesión iniciada. |
Los errores al consultar la tarea llegan con el prefijo “No se pudo esperar la tarea humana: ”. Un timeout no es un error.
Ejemplo
Sección titulada «Ejemplo»Create Human Task title = "Validar NIT del proveedor" data = { "Proveedor": "Cliente de prueba", "NIT leído": "900.000.000-0" } fields = { "nit": "NIT correcto:text*" } assignRole = "tenant-admin" → output: tareaWait for Human Task taskId = tarea["id"] timeoutMinutes = 20 cancelOnTimeout = true → output: resultadoIf condition = resultado["status"] == "completed" && resultado["decision"] == "Aprobar" ├─ then: │ Set Variable name = nit value = resultado["fields"]["nit"] └─ else: Throw message = "Sin validación del NIT: " + str(resultado["status"])Actividades relacionadas
Sección titulada «Actividades relacionadas»- Create Human Task — crear la tarea que se espera.
- Cancel Human Task — cancelar la tarea en otro momento del flujo.