Depuración
Depurar es ejecutar tu playbook para ver qué hace realmente, encontrar dónde falla y corregirlo. El Designer te deja ejecutarlo en tu propia máquina todas las veces que quieras antes de publicarlo a Zoan Cloud, así detectas los problemas mientras los puedes ver con tus propios ojos.
Ejecutar y depurar
Sección titulada «Ejecutar y depurar»En la barra superior tienes dos formas de lanzar el playbook abierto:
| Acción | Atajo | Qué hace |
|---|---|---|
| Ejecutar | F5 | Corre el playbook de principio a fin, como lo haría un robot. |
| Depurar | F6 | Corre el playbook con el depurador: se detiene en los puntos de interrupción, deja avanzar paso a paso y muestra el valor de las variables en cada pausa. |
Las dos usan el mismo motor que los robots de Zoan Cloud, así que lo que funciona en el Designer funciona igual publicado.
Antes de ejecutar, el Designer comprueba dos cosas:
- Que no haya errores. Revisa el playbook y los que invoca. Si alguno tiene errores (una expresión inválida, una variable sin declarar…), no lo ejecuta y te muestra la lista para que vayas a cada uno: un playbook con errores fallaría a mitad de camino, quizá con efectos ya hechos en SAP, Excel o la web. Tampoco deja publicar con errores. No hace falta esperar a ejecutar para verlos: el panel Problemas los muestra en vivo mientras diseñas.
- Que tengas sesión de Zoan Cloud con un ambiente elegido. La ejecución se registra en Zoan Cloud y usa sus credenciales, colas y procesos. Si no la tienes, te pide iniciar sesión.
Mientras corre, la tarjeta de la actividad en curso se resalta en el canvas, y las que ya terminaron quedan marcadas con su duración, de modo que ves exactamente por dónde va el flujo.
Detener (⇧F5) pide que el proceso pare cuando termine lo que está haciendo (ver Should Stop): la barra muestra Deteniendo… y la ejecución queda como detenida, también en Zoan Cloud. Mientras tanto aparece Terminar para cortarla de inmediato; entonces queda como cancelada (no como fallida). Al depurar, Detener corta de inmediato.
Puntos de interrupción
Sección titulada «Puntos de interrupción»Un punto de interrupción detiene la ejecución antes de una actividad, para que mires el estado en ese momento.
- Haz clic en el número de la actividad, en el margen izquierdo del canvas, o selecciónala y pulsa
F9. Aparece un punto rojo. - Vuelve a hacer clic (o
F9) para quitarlo.Ctrl+⇧F9quita todos. - Se guardan con el proyecto: siguen ahí la próxima vez que lo abras.
- Puedes ponerlos y quitarlos mientras depuras.
La pestaña Puntos de interrupción del panel inferior lista todos los del proyecto, agrupados por playbook: haz clic en uno para ir a su actividad, quítalos de uno en uno o todos a la vez.
La barra de depuración
Sección titulada «La barra de depuración»Mientras depuras, el centro de la barra superior se convierte en la barra de depuración (el buscador sigue disponible con Ctrl+K). Cada botón tiene su icono y su nombre, y la barra se tiñe según el estado: cian mientras corre, ámbar en pausa y rojo si se detuvo en un error.
| Botón | Atajo | Qué hace |
|---|---|---|
| Continuar | F5 | Sigue hasta el próximo punto de interrupción o hasta el final. |
| Pausar | — | Detiene la ejecución antes de la próxima actividad. |
| Por encima | F10 | Ejecuta la actividad actual completa (con todo lo que tenga dentro) y se detiene en la siguiente. |
| Entrar | F11 | Entra en la actividad actual: si es un contenedor (If, For Each, un ámbito…) o invoca otro playbook, se detiene en su primer paso. |
| Salir | ⇧F11 | Termina el contenedor o playbook actual y se detiene al salir de él. |
| Hasta aquí | Ctrl+F10 | Sigue hasta la actividad que tengas seleccionada, como un punto de interrupción de un solo uso. |
| Ir al paso | — | Selecciona la actividad en curso (o la de la pausa) y la trae a la vista. |
| Reiniciar | Ctrl+⇧F5 | Detiene la ejecución y vuelve a depurar desde el principio. |
| Detener | ⇧F5 | Al depurar, termina la ejecución de inmediato (queda como cancelada). |
| Opciones | — | Paso lento, registrar actividades, pausar en errores y el panel de puntos de interrupción. |
Los mismos controles están en el menú ☰ → Depurar.
Cuando una actividad falla
Sección titulada «Cuando una actividad falla»Depurando, un error que nadie atrapa (fuera de un Try / Catch) detiene la ejecución en la actividad que falló, en lugar de terminarla. La tarjeta se marca en rojo con el mensaje, y la barra ofrece:
- Reintentar: vuelve a ejecutar la misma actividad. Útil si corregiste algo en la aplicación o en los datos.
- Ignorar: da la actividad por hecha y sigue con la siguiente.
- Continuar: deja que el error siga su curso (la ejecución termina fallida, o la atrapa un Try / Catch superior).
Opciones de depuración
Sección titulada «Opciones de depuración»En Opciones (o en ☰ → Depurar) hay tres ajustes que se recuerdan entre sesiones y se pueden cambiar en plena depuración. El botón Opciones se tiñe cuando alguno no está en su valor por defecto.
| Opción | Qué hace |
|---|---|
| Paso lento | Espera antes de cada actividad (0,25, 0,5, 1 o 2 s) para que puedas seguir la ejecución a ojo. |
| Registrar actividades | Escribe en la consola cada actividad al empezar (▶ 4 · Log). |
| Pausar en errores | Activado por defecto: se detiene en la actividad que falla (ver arriba). Apagado, la ejecución termina con el error, como en producción. |
Inspeccionar variables
Sección titulada «Inspeccionar variables»En cada pausa, el panel derecho muestra:
- Locales: todas las variables con su valor en ese momento.
- Inspección: expresiones que tú eliges vigilar (por ejemplo
filas.Countocliente.Nombre), evaluadas en cada pausa.
La pestaña Pila de llamadas del panel inferior muestra dónde está detenida la ejecución: la actividad actual y los contenedores que la envuelven, de dentro afuera, hasta el playbook. Haz clic en cualquiera para ir a él.
Al terminar una ejecución, selecciona una actividad con salida: la sección Vista previa (última ejecución) de Propiedades muestra el valor que produjo (en una tabla, sus primeras filas; un clic la abre completa). Si el playbook falló al escribir un Excel, revisa qué traía realmente la tabla: quizá llegó vacía o con un dato inesperado.
Leer la consola
Sección titulada «Leer la consola»La pestaña Consola muestra, en tiempo real:
- Los mensajes que tú emites con la actividad Log, con su nivel.
- Los errores y su detalle cuando algo falla.
- El inicio y el final de la ejecución, con su duración.
Cada línea indica el playbook que la generó. Cuando un playbook invoca a otro, sus líneas aparecen con ↳ y sangría por nivel, así sabes siempre de dónde sale cada mensaje:
23:16:37.260 INFO Principal empieza el principal23:16:37.271 INFO ↳ Cargar clientes leyendo el archivo de clientes23:16:37.277 WARN ↳ Validar fila validando fila 123:16:37.292 INFO ↳ Cargar clientes clientes cargados23:16:37.295 INFO Principal vuelve al principal23:16:37.304 OK Ejecución terminada correctamente · 767 msEl texto de la consola se puede seleccionar y copiar; Copiar todo copia el registro completo (con el playbook de cada línea) y Limpiar lo vacía.
Niveles de log
Sección titulada «Niveles de log»La actividad Log te deja escribir mensajes con un nivel de severidad. Úsalos para dejar “huellas” que expliquen qué está pasando:
| Nivel | Cuándo usarlo |
|---|---|
debug | Detalle fino para diagnóstico profundo |
info | Hitos normales del proceso (“10 facturas leídas”) |
warning | Algo inesperado pero no fatal (“cliente sin correo, se omite”) |
error | Un fallo que impide continuar |
Manejar errores sin detener el bot
Sección titulada «Manejar errores sin detener el bot»No todos los errores deben tumbar la ejecución. Para los que esperas (un correo sin adjunto, una página que a veces tarda), usa estas dos actividades del paquete Core:
Try / Catch
Sección titulada «Try / Catch»Ejecuta las actividades del carril Intentar; si alguna falla, el flujo salta al carril Capturar, donde puedes registrar el error y continuar con un plan B en lugar de detenerte. Finalmente corre siempre. Ver Try / Catch.
Try Catch errorVariable = error├─ Intentar:│ Read Excel Sheet → tabla├─ Capturar:│ Log level = "error" message = "No se pudo leer el Excel: " + error.Message
errorVariablerecibe unZoanError:error.Messagees el mensaje yerror.Typeel tipo, útil para tratar distinto cada clase de error.
Reintenta un grupo de actividades varias veces antes de rendirse. Ideal para acciones que fallan de forma intermitente (la red, una página lenta). Ver Retry.
Retry attempts = 3 delay = 2000└─ Cuerpo: Click selector = (capturado con UI Discover)Una excepción de negocio (un dato que impide seguir) no se reintenta: reintentar no la arreglaría.
Ir a la actividad de un error
Sección titulada «Ir a la actividad de un error»Al fallar una ejecución, la consola dice Dónde ocurrió: el archivo, el paso, la actividad y, si aplica, el parámetro, con la cadena de playbooks que llevó hasta ahí (por ejemplo «main.play › Pasos.play · paso 2 «Asignar variable» · parámetro «Valor»»). Ir a la actividad abre ese playbook en esa tarjeta. Si el error se capturó y se volvió a lanzar con Throw (el patrón de las plantillas), el lugar sigue siendo el del error original.
Cuando un error viene de fuera del Designer (un log de Zoan Cloud, un correo de alerta, un compañero), no tienes que buscar la actividad a mano: abre la paleta de comandos (Ctrl+K) y pega el mensaje de error, el identificador de la actividad o el de la ejecución. El Designer te ofrece Ir a la actividad, o Ir al error de la ejecución… para leer el error de esa ejecución en tu ambiente, y te lleva a la actividad y al parámetro donde ocurrió.
Errores frecuentes
Sección titulada «Errores frecuentes»| Error | Causa probable | Solución |
|---|---|---|
| «Corrige los errores antes de ejecutar» | El playbook o uno que invoca tiene errores | Pulsa cada error de la lista para ir a él y corrígelo |
| «Inicia sesión para ejecutar» | No hay sesión de Zoan Cloud o no hay ambiente elegido | Inicia sesión desde el avatar de la barra superior y elige el ambiente |
| «Actividad desconocida o sin tipo» | La actividad usa un paquete que no está instalado | Instálalo desde el Gestor de paquetes (riel → Paquetes) |
| «El nombre «x» no existe en este contexto» | Se usó una variable sin declararla | Declárala (Ctrl+Shift+V desde el campo) o corrige el nombre |
| Tipo incompatible | El resultado de una expresión no es del tipo que espera el campo | Revisa los tipos en el panel de variables y convierte el valor |
Element not found / Selector no encontrado | La página o la app cambió, o no había terminado de cargar | Agrega una espera antes, ajusta el selector o sube el tiempo de espera |
Timeout | La acción tardó más que el tiempo límite | Sube el timeout de la actividad o el de la configuración del proyecto |
Siguientes pasos
Sección titulada «Siguientes pasos»- Configuración del proyecto — tiempos de espera y retardos de interfaz para todo el proyecto.
- Expresiones — corregir fórmulas que devuelven valores inesperados.
- Logs de ejecución — depurar lo que ya se ejecuta en producción.
- Estados y ciclo de vida — entender por qué una ejecución queda en
failed.