Ir al contenido

Diseñar en el lienzo

El lienzo es donde dibujas el proceso una sola vez: qué pasos tiene, quién hace cada uno y por dónde sigue el caso según lo que pase. Antes de publicar puedes validarlo y simular casos de ejemplo sin correr robots ni crear tareas.

  1. En Centro › Flujos › Flujos, pulsa Nuevo flujo.
  2. Escribe el Nombre (por ejemplo, Aprobación de facturas) y, si quieres, una Descripción: qué resuelve, de dónde llegan los casos y quién participa.
  3. Pulsa Crear y abrir el lienzo. El flujo empieza con un Inicio y un Fin conectados; en el lienzo agregas los pasos.

La lista muestra si cada flujo está Sin publicar, Publicada (con su versión) o tiene Cambios sin publicar. Puedes filtrarla por Activas, Archivadas o Todas, y buscar por nombre.

  • Paleta (izquierda). Arrastra un elemento al lienzo o haz clic para ponerlo al centro. Está agrupada en Tareas (Robot, Persona, IA, Integración), Decisiones (Tabla de decisión), Esperas (Esperar, Esperar evento), Compuertas (Exclusiva · una ruta, Paralela · todas), Eventos (Inicio, Fin) y Organización (Carril).
  • Diagrama (centro). Conecta dos pasos arrastrando desde el borde de uno hasta el otro; mientras arrastras, una línea guía te muestra a dónde llegará y el paso de destino se marca si la conexión es válida. Para cambiar a dónde va una conexión, arrastra su punta a otro paso. Si la conexión no tiene sentido (un paso consigo mismo, una salida desde un fin, una entrada al inicio, una séptima decisión de una persona, una conexión repetida), el lienzo te dice por qué no se puede. En un paso con una sola salida, conectar otra vez reemplaza la anterior y Ctrl+Z la devuelve. La barra de herramientas tiene deshacer y rehacer, copiar, cortar, pegar y eliminar, Organizar los pasos, Ver todo, acercar y alejar, y descargar o importar la definición en JSON.
  • Propiedades (derecha). Al elegir un paso, una conexión o un carril ves sus propiedades en secciones que se pliegan. Sin nada elegido, el panel muestra el flujo: datos generales, variables, carriles y versiones publicadas.

Guardar. Pulsa Guardar (o Ctrl+S). La cabecera indica Sin guardar mientras tengas cambios y Guardado · rev. N cuando están a salvo. Si otra persona guardó el mismo borrador mientras editabas, Zoan Cloud te deja elegir: descargar tus cambios en JSON, recargar lo guardado o guardar los tuyos encima.

  • Inicio: donde arranca cada caso, con las variables marcadas como entrada. Hay uno solo.
  • Fin: donde termina un camino. Puede haber varios. En Resultado del caso eliges Completado o Rechazado por una regla de negocio; si el caso llegó desde una cola, su ítem queda con ese resultado.

Corre un proceso publicado y guarda lo que devuelve.

SecciónQué configuras
ProcesoEl Proceso publicado que corre en este paso. Solo aparecen los procesos activos del ambiente.
DatosEntradas del robot: el valor de cada entrada del proceso, fijo o con {{variable}}. Salidas → variables del flujo: en qué variable se guarda cada salida (con + creas una variable con ese nombre). Si el proceso no publica su contrato, asignas entradas y salidas por nombre. Si el tipo de una variable no encaja con el de la entrada, ver Tipos de las entradas.
Dónde correEl Agente (o Cualquier agente compatible) y la Sesión de robot, necesaria para que un proceso de Windows corra desatendido. El worker headless no usa sesión.
Tiempos y erroresLímite (minutos): si se vence, el paso queda como incidente para que alguien decida; el robot no se detiene. Intentos y Espera entre intentos (segundos). Reintentar también ante error técnico del robot: actívalo solo si el robot se puede repetir sin duplicar nada. Atender los errores de negocio en otro camino: ver Errores de negocio en otra ruta.
SalidaEl paso que sigue.

Con más de un intento, Zoan Cloud vuelve a lanzar el robot por su cuenta solo cuando tiene certeza de que no llegó a correr (por ejemplo, no había un agente conectado) o, si lo activaste, tras un error técnico. Un robot que quizás siga corriendo nunca se relanza solo: queda como incidente para que una persona decida. Si no hay un robot libre, el paso espera y lo intenta de nuevo; si pasan 24 horas sin uno disponible, queda como incidente. Si Windows rechaza la cuenta de la sesión de robot, el paso no se reintenta solo, para no bloquear la cuenta: queda como incidente con la acción Actualizar la sesión de robot.

Cuando el robot detecta un caso que no debe procesar (un NIT inválido, un pedido duplicado), lo normal es que el caso siga por otra ruta, por ejemplo a una persona que lo revisa, en lugar de quedar detenido como incidente.

  1. En el paso de robot, activa Atender los errores de negocio en otro camino.
  2. Arrastra desde el rayo del paso (abajo a la derecha, «Error de negocio: arrastra desde aquí a quien lo atiende») hasta el paso que lo atiende.
  3. En el robot, señala esos casos con Throw y el tipo de error Excepción de negocio (BusinessRuleException).

Un error técnico no pasa por esa ruta: sigue las reglas de reintento del paso. Si el paso no tiene ruta de error, un error de negocio deja el caso como incidente para que alguien decida si lo salta o lo repite; nunca se reintenta solo, porque repetirlo daría el mismo resultado.

El error viaja con el caso. Todos los pasos de la ruta de error, no solo el primero, pueden usar lo que dijo el robot con {{_error.mensaje}}, {{_error.tipo}} y {{_error.actividad}}: el título de la tarea de la persona, una notificación por API, una compuerta que decide según el tipo, incluso en los reintentos. El error deja de estar disponible cuando la ruta se une con otras en una compuerta paralela, y un nuevo error de negocio reemplaza al anterior. Si una persona salta un paso que falló por un error de negocio, el paso siguiente también lo recibe.

Crea una tarea en la bandeja Tareas y el caso sigue según la decisión.

SecciónQué configuras
TareaTítulo de la tarea (obligatorio) y Detalle para quien decide. Usa {{variable}} para mostrar datos del caso, por ejemplo Revisar la factura {{numero_factura}}.
Quién decideUn rol, Una persona, Un grupo, El responsable de un grupo, Desde una variable del caso (la salida de una tabla de decisión o un campo del formulario: un grupo, su responsable o el correo de una persona) o El responsable del grupo de quien inició. No puede decidir quien inició el caso (activada por defecto en aprobaciones) deja fuera a quien inició el caso. Ver Grupos, destinatarios y suplencias.
DecisionesDe 2 a 6. Cada decisión es una salida del paso (por ejemplo, Aprobar y Rechazar) y lleva a un paso distinto. En Si vence el plazo, seguir por… eliges a dónde va el caso si nadie decide a tiempo; con Nadie: queda como incidente, se detiene para que alguien lo atienda.
FormularioEn Qué datos pide eliges: Campos sueltos (Texto, Número, Fecha o Lista, cada uno Obligatorio o no, hasta 20), De la biblioteca (un formulario publicado, con su versión fija) o Diseñado aquí (un formulario solo para este paso). Ver Usar un formulario en un flujo. En Guardar la respuesta en eliges la variable donde quedan la decisión, el comentario y los campos, para usarlos en los pasos siguientes.
Plazo y prioridadPlazo (horas); vacío usa el de la organización. Prioridad Normal o Alta.

La variable donde se guarda la respuesta queda protegida: es la decisión de una persona, y en el monitor solo la puede cambiar quien tenga el permiso de anulación. El plazo por defecto de estas tareas se ajusta en Administración › Organización y SSO › Plazos de atención de tareas (SLA) › Tareas de flujos (h).

En la bandeja, la tarea indica Del flujo «nombre» y, al decidir, el caso continúa con esa decisión.

Usa un modelo de lenguaje para leer, clasificar o redactar. Requiere que tu plan incluya AI Workflows.

SecciónQué configuras
Qué haceModo: Extraer datos con un esquema, Clasificar en categorías o Redactar un texto. Instrucción (obligatoria): qué debe hacer el modelo, en una o dos frases; no admite variables. Contexto: el texto que la IA debe leer, con {{variable}}. Según el modo, Categorías (una por línea) o Esquema de salida (JSON Schema).
Conocimiento y modeloBases de conocimiento del ambiente y Qué buscar en ellas. Modelo y Cuenta del modelo; vacíos, se usan los del ambiente.
SalidasQué campo de la respuesta va a qué variable. Marca opc. si el campo puede faltar sin que el paso falle.
ReintentosIntentos y Espera (s). Si el modelo no responde o no entrega el resultado con la forma pedida, el paso se reintenta solo. Un dato de entrada que no sirve no se reintenta: queda como incidente para revisarlo.

Los campos que devuelve cada modo son: al clasificar, categoria y motivo; al redactar, texto; al extraer, los campos de tu esquema.

El costo de estos pasos aparece en Consumo de IA, en el desglose Flujos. Si el presupuesto de IA del plan se agota, el paso espera y vuelve a intentarlo más tarde.

Llama una operación de una API que conectaste en Centro › Recursos › Integraciones con su especificación OpenAPI (ver Acciones de API).

SecciónQué configuras
OperaciónLa Integración y la Operación (método y ruta). La autenticación sale de la conexión de la integración.
DatosEntradas de la operación (fijas o con {{variable}}) y Salidas → variables.
ReintentosIntentos y Espera (s).

Las salidas se leen de la respuesta: si es un objeto, por el nombre de cada campo (admite rutas con punto, como cliente.id); si es una lista, llega como items; si es texto, como texto. El código HTTP queda en _status.

En POST, PUT, PATCH y DELETE, Zoan Cloud envía además una cabecera Idempotency-Key estable por paso, para que un reintento no repita el efecto en un sistema que la respete. Si una de esas llamadas se corta sin respuesta o el servidor responde con un error interno (5xx), el paso queda como incidente en vez de repetirse solo, porque no se sabe si alcanzó a aplicarse.

  • Exclusiva · una ruta. Con dos o más salidas, decide: en Rutas, en orden, las condiciones se evalúan de arriba abajo y el caso sigue por la primera que se cumpla; si ninguna se cumple, por la Ruta por defecto (cuando ninguna otra se cumple). Con una sola salida, une caminos que antes se separaron.
  • Paralela · todas. Como divisora, el caso sigue por todas sus salidas a la vez (por ejemplo, un robot registra la factura mientras otro avisa al proveedor). Como unión, espera a que lleguen todas sus ramas antes de seguir.

Una compuerta no puede dividir y unir a la vez: si necesitas las dos cosas, usa dos compuertas.

  • Esperar. Pausa el caso por un tiempo (minutos, horas o días, opcionalmente en horario laboral), hasta una fecha fija o hasta la fecha de una variable.
  • Esperar evento. Pausa el caso hasta que llega una señal con nombre desde el portal, la API o un robot, con sus datos y un tiempo máximo opcional con salida Vencida.

Mientras espera, el caso no ocupa robots ni workers. Ver Esperas.

Al elegir una conexión ves de dónde sale y a dónde llega, y puedes ponerle una Etiqueta (por ejemplo, «Sí»). Según de dónde salga:

  • De una compuerta exclusiva: defines su condición o la marcas como ruta por defecto.
  • De una tarea de persona: es una Decisión, o la marcas como Se toma al vencer el plazo de la tarea.
  • Del rayo de un robot: es la ruta de Error de negocio.

Las condiciones se arman sin escribir código. Arriba eliges Se toma si la condición se cumple o no se cumple, y si deben cumplirse todo (todas las filas) o algo (basta una). Cada fila es variable · comparación · valor:

  • Comparar con un valor fijo o con otra variable del caso. Así comparas, por ejemplo, total es mayor que tope_aprobacion sin escribir el tope en el diagrama.
  • El botón sí/no de cada fila la invierte: la fila se cumple cuando esa comparación no se cumple.
  • La variable puede ser un campo dentro de un objeto, como respuesta.fields.total (la respuesta del formulario de una tarea de persona).
  • El texto entre comillas se compara como texto.
ComparaciónEjemplo
es igual a / es distinto deestado es igual a aprobada
es mayor que / es mayor o igual que / es menor que / es menor o igual quetotal es mayor que 1000
contieneobservaciones contiene urgente
es uno de (separados por coma)pais es uno de CO, MX, PE
tiene valor / está vacía / es verdaderarequiere_aprobacion es verdadera

Los números se comparan como números y las fechas como fechas. Si la variable no existe o tiene otro tipo, esa comparación se toma como no cumplida (y por eso, invertida con no se cumple, sí se cumple) y queda un aviso en los eventos del caso. Si la otra variable con la que comparas no existe, la comparación no se cumple. Las condiciones con grupos anidados se editan con Editar como JSON: all es todo, any es algo, not es no se cumple, y cada hoja compara var con value o con otra variable en ref.

Los carriles son franjas horizontales por actor que ayudan a leer el proceso de un vistazo. Agrégalos desde la paleta (Carril) o desde la sección Carriles del panel. Cada uno tiene un nombre, Quién trabaja aquí (Robots, Personas, IA, Integraciones o Sistema) y un Alto; se reordenan con Subir y Bajar. Un paso pertenece al carril donde cae su centro. Los carriles no cambian cómo corre el caso.

Las variables son los datos que viajan con cada caso. Se declaran en el panel del flujo (sin nada elegido), sección Variables:

  • Nombre: minúsculas, números y _, empezando por letra (por ejemplo, numero_factura).
  • Tipo: Texto, Número, Entero, Sí/No, Fecha, Fecha y hora, Objeto, Lista o Archivo.
  • Se pide al iniciar: la variable es una entrada del caso; con Obligatoria, no se puede iniciar sin ella. Las demás variables las llenan los pasos.
  • Descripción: se muestra en el formulario de inicio.

En la sección General defines el Título de cada caso y la Clave de negocio, por ejemplo Factura {{numero_factura}} · {{proveedor}} y {{numero_factura}}. Con título y clave encuentras cada caso en el monitor sin abrirlo.

Plantillas. En cualquier campo que lo admita, {{variable}} se reemplaza por el valor del caso; {{cliente.nombre}} lee un campo dentro de un objeto. Si el campo es exactamente una variable, se pasa el valor tal cual (un número sigue siendo número); con texto alrededor, el resultado es texto. Si la variable no existe, queda vacía y se registra un aviso en los eventos del caso. Además hay datos de solo lectura:

PlantillaValor
{{_instancia.id}}El identificador del caso.
{{_instancia.clave}}La clave de negocio del caso.
{{_paso.clave}}La clave de idempotencia del paso (la misma en sus reintentos automáticos).
{{_paso.intento}}El número de intento del paso.
{{_error.mensaje}}, {{_error.tipo}}, {{_error.actividad}}En los pasos de una ruta de error de negocio: el mensaje del robot, el tipo de error (por ejemplo, business) y la actividad donde ocurrió.
  • Validar guarda el borrador y lo revisa. El resultado aparece en la barra del lienzo (por ejemplo, «1 error · 2 avisos»); al hacer clic en un problema, el lienzo te lleva al paso. Los errores impiden publicar: un paso sin proceso, una tarea de persona sin destino o con menos de dos decisiones, una variable que se usa sin declararla, un paso que no lleva a ningún fin. Los avisos se pueden aceptar.
  • Simular recorre el borrador con datos de ejemplo, sin correr robots ni crear tareas. Llenas los Datos de entrada y dices qué devuelve cada paso: si el robot Termina bien (con sus salidas en JSON), da un Error de negocio o un Error técnico; qué decide cada persona o si Vence sin decidir; qué responde la IA o la API. Verás el recorrido, los incidentes y las Variables al final, y el camino queda marcado en el lienzo.
  • Publicar guarda y valida el borrador y crea una versión nueva con tus Notas de la versión. Si hay avisos, puedes Publicar con estos avisos. Los casos que ya corren siguen con su versión; los nuevos usan esta, y el borrador queda libre para seguir editando.

En la sección Versiones publicadas del panel ves cada versión con su fecha y sus notas, la vigente, y puedes descargarla en JSON o cargarla en el borrador para volver a una anterior.