Ir al contenido

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.

En la barra superior tienes dos formas de lanzar el playbook abierto:

AcciónAtajoQué hace
EjecutarF5Corre el playbook de principio a fin, como lo haría un robot.
DepurarF6Corre 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.

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+⇧F9 quita 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.

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ónAtajoQué hace
ContinuarF5Sigue hasta el próximo punto de interrupción o hasta el final.
Pausar—Detiene la ejecución antes de la próxima actividad.
Por encimaF10Ejecuta la actividad actual completa (con todo lo que tenga dentro) y se detiene en la siguiente.
EntrarF11Entra en la actividad actual: si es un contenedor (If, For Each, un ámbito…) o invoca otro playbook, se detiene en su primer paso.
Salir⇧F11Termina el contenedor o playbook actual y se detiene al salir de él.
Hasta aquíCtrl+F10Sigue 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.
ReiniciarCtrl+⇧F5Detiene la ejecución y vuelve a depurar desde el principio.
Detener⇧F5Al 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.

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

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ónQué hace
Paso lentoEspera antes de cada actividad (0,25, 0,5, 1 o 2 s) para que puedas seguir la ejecución a ojo.
Registrar actividadesEscribe en la consola cada actividad al empezar (▶ 4 · Log).
Pausar en erroresActivado por defecto: se detiene en la actividad que falla (ver arriba). Apagado, la ejecución termina con el error, como en producción.

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.Count o cliente.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.

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 principal
23:16:37.271 INFO ↳ Cargar clientes leyendo el archivo de clientes
23:16:37.277 WARN ↳ Validar fila validando fila 1
23:16:37.292 INFO ↳ Cargar clientes clientes cargados
23:16:37.295 INFO Principal vuelve al principal
23:16:37.304 OK Ejecución terminada correctamente · 767 ms

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

La actividad Log te deja escribir mensajes con un nivel de severidad. Úsalos para dejar “huellas” que expliquen qué está pasando:

NivelCuándo usarlo
debugDetalle fino para diagnóstico profundo
infoHitos normales del proceso (“10 facturas leídas”)
warningAlgo inesperado pero no fatal (“cliente sin correo, se omite”)
errorUn fallo que impide continuar

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:

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

errorVariable recibe un ZoanError: error.Message es el mensaje y error.Type el 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.

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

ErrorCausa probableSolución
«Corrige los errores antes de ejecutar»El playbook o uno que invoca tiene erroresPulsa 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 elegidoInicia 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á instaladoInstálalo desde el Gestor de paquetes (riel → Paquetes)
«El nombre «x» no existe en este contexto»Se usó una variable sin declararlaDeclárala (Ctrl+Shift+V desde el campo) o corrige el nombre
Tipo incompatibleEl resultado de una expresión no es del tipo que espera el campoRevisa los tipos en el panel de variables y convierte el valor
Element not found / Selector no encontradoLa página o la app cambió, o no había terminado de cargarAgrega una espera antes, ajusta el selector o sube el tiempo de espera
TimeoutLa acción tardó más que el tiempo límiteSube el timeout de la actividad o el de la configuración del proyecto