Ir al contenido

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.

  1. Consulta el estado de la tarea taskId.
  2. Si la tarea está completed, cancelled o expired, termina y devuelve el resultado.
  3. Si sigue abierta (pending o claimed), espera pollSeconds segundos y vuelve a consultar.
  4. Si pasan timeoutMinutes minutos sin que la tarea se cierre, devuelve la tarea con status = "timeout". Con cancelOnTimeout = 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 devuelve timeout.

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ámetroTipoPor defectoDescripción
taskIdstring—Id de la tarea: la salida id de Create Human Task. Ej: tarea["id"].
ParámetroTipoPor defectoDescripción
timeoutMinutesint60Minutos máximos de espera. Un valor vacío, 0 o negativo usa 60.
pollSecondsint15Segundos entre consultas. El mínimo es 5: un valor menor se sube a 5.
cancelOnTimeoutboolfalseSi 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:

CampoTipoDescripción
idstringId de la tarea.
statusstringcompleted, cancelled, expired o timeout (se agotó la espera).
titlestringTítulo de la tarea.
decisionstringLa opción elegida (ej. Aprobar). Si la tarea se canceló, cancelada; null si venció o si se agotó la espera.
commentstringComentario de quien decidió (en una cancelación, el motivo).
fieldsDictionaryCampos 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.
formDictionaryCon formulario: su name y version. Sin formulario, null.
MensajeCausa 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.

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: tarea
Wait for Human Task taskId = tarea["id"] timeoutMinutes = 20
cancelOnTimeout = true → output: resultado
If 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"])