Tipos de nodo
Cada workflow se compone de nodos. Cada nodo tiene un
type que define cómo lo procesa Flowker en tiempo de ejecución.
trigger
Un nodo disparador es un punto de entrada de ejecución. Los workflows en borrador pueden estar incompletos, pero la activación requiere al menos un nodo disparador. Cuando una ejecución empieza por un disparador, el motor entra en ese nodo y enruta desde allí. Los ejemplos de esta página muestran solo la topología de nodos. Un nodo disparador real también lleva untriggerType y la configuración de ese disparador en su data. Consulta Configurar un disparador de webhook o Ejecutar un workflow según una programación.
executor
Llama a un servicio externo a través de una configuración de proveedor. Este nodo es el punto de integración principal para motores de fraude, proveedores de pago, servicios de notificación y otros sistemas externos. Los ejemplos de esta página muestran solo la topología de nodos. Un nodo ejecutor real también lleva unproviderConfigId en su data, más un executorId que nombra al ejecutor del catálogo que invoca. Un nodo que llama a una operación de un documento OpenAPI cargado omite el executorId y lleva operation_path y operation_method en su lugar. Consulta la Guía de integración.
conditional
Evalúa una condición contra el contexto de ejecución y enruta a distintas ramas según el resultado. Usa nodos condicionales para implementar lógica de ramificación, por ejemplo, enrutar a una vía de aprobación cuando el riesgo es alto, o continuar directo cuando es bajo. La condición vive en eldata.condition del nodo. Una expresión de texto libre se evalúa como booleano y produce el handle de salida true o false. Cada arista saliente declara qué handle sigue mediante sourceHandle. Los nodos condicionales creados en la Console usan una condición estructurada por casos, donde cada caso enruta a su propio handle de salida. Consulta el Editor de canvas.
action
Representa una operación interna síncronaset_output. Puede escribir un valor de salida interpolado y, de forma opcional, sobrescribir el estado de la respuesta HTTP síncrona. No provee una pausa integrada, una emisión genérica de eventos ni una operación genérica de cambio de estado.
Aristas
Las aristas conectan nodos y definen las vías de ejecución. Cada arista incluye los siguientes campos:
Ejemplo de arista
data.condition y sigue la única arista saliente cuyo sourceHandle coincide con el resultado de la rama. Si ninguna arista coincide, esa rama termina. Todos los demás tipos de nodo siguen todas sus aristas salientes cuando se completan con éxito.
Transiciones de estado
Los workflows siguen un ciclo de vida bien definido.
- draft: el estado inicial. Puedes agregar nodos, editar aristas y cambiar la configuración solo en el estado
draft. - active: un workflow que activaste. Flowker puede ejecutarlo. No acepta modificaciones mientras está activo.
- inactive: un workflow que desactivaste. Flowker ya no puede ejecutarlo, pero puedes devolverlo a
draftpara editarlo.
Reglas
- Solo puedes activar un workflow en
draft(transición:draft → active). - Solo puedes desactivar un workflow en
active(transición:active → inactive). - Solo puedes devolver a borrador un workflow en
inactive(transición:inactive → draft). - Intentar una transición inválida devuelve el error
FLK-0102. - Intentar modificar un workflow que no está en
draftdevuelve el errorFLK-0103.
Devolver a borrador un workflow inactivo
Si desactivaste un workflow y quieres editarlo de nuevo, devuélvelo adraft llamando a POST /v1/workflows/{id}/draft. Así el workflow queda editable sin necesidad de clonarlo.
Usa esto cuando desactivaste un workflow por error, o cuando quieres iterar sobre un workflow existente en lugar de crear una copia.
Solo puedes pasar a borrador los workflows inactivos. Si necesitas modificar un workflow activo sin sacarlo de servicio, usa el enfoque de clonación que se describe abajo.
Iterar de forma segura con la clonación
Para modificar un workflow activo, clónalo primero. La clonación crea un nuevodraft desde cualquier estado y copia todos los nodos y aristas. Luego puedes actualizarlo, probarlo y activarlo sin afectar la versión actual.
Usa este enfoque para el versionado en producción.
Límites técnicos
Los workflows con más de ~50 nodos suelen indicar que se recomienda dividir el flujo en workflows más pequeños y componibles.
Patrones comunes
Secuencial
El patrón más simple. Los nodos se ejecutan en una secuencia lineal. Usa esto cuando cada paso depende del anterior y no necesita ramificación.Ramificación condicional
Un nodoconditional evalúa su condición y enruta la ejecución en consecuencia. El resultado de la rama selecciona la arista saliente que sigue el nodo, emparejada por sourceHandle.
Ejemplos reales
Verificación antifraude
Llega una transacción, un nodo ejecutor obtiene la puntuación de fraude y un nodo condicional enruta la ejecución a la aprobación o al rechazo.Orquestación de pagos
Un flujo lineal que valida los datos de pago entrantes, los enruta al proveedor adecuado y envía una confirmación.Onboarding de KYC
Usa un workflow para enviar una verificación de documentos a un sistema de aprobación externo. Flowker no tiene una pausa integrada: para la revisión humana asíncrona, empieza más tarde una ejecución de workflow separada, después de que tu sistema de aprobación publique su decisión.Flujo de aprobación manual
Un nodo ejecutor envía la solicitud a revisión. Un ejecutor recupera la decisión de la revisión desde el sistema externo. Después, un nodo condicional enruta a la vía aprobada o a la rechazada. Las ejecuciones de Flowker corren de principio a fin sin detenerse. Flowker no tiene un paso de pausa integrado, así que una decisión humana debe venir de un sistema externo que el workflow consulta.Mejores prácticas
Convenciones de nombres de nodos
Usa nombres descriptivos y orientados a la acción que comuniquen lo que hace el nodo, no de qué tipo es.- correcto:
Validate Payment Data,Get Fraud Score,Notify Customer,Get Approval Decision - incorrecto:
executor1,conditional node,node3
Expresiones de condición
Flowker evalúa las condiciones de texto libre de los nodos condicionales contra el contexto de ejecución en tiempo de ejecución. Mantenlas simples y explícitas:- Usa comparaciones directas de campos:
<nodeId>.status == 'approved' - Usa comparaciones numéricas:
<nodeId>.riskScore < 70 - Usa campos booleanos:
<nodeId>.reviewRequired == true - Combina con
AND/ORcuando haga falta:<nodeId>.score < 70 AND <nodeId>.verified == true
conditional un nombre claro que encapsule la decisión.
Una condición ausente hace fallar la ejecución, y lo mismo pasa con una condición que no se puede evaluar en tiempo de ejecución (FLK-0105 identifica una expresión condicional inválida). Prueba siempre las condiciones antes de activar un workflow.
Estrategias de manejo de errores
Diseña los workflows para manejar el fallo de forma explícita:- Agrega vías de rechazo desde los nodos
conditionalpara cada punto de decisión que pueda fallar. - Usa nodos
executorseparados para la lógica de reintento o los proveedores de respaldo. - Nombra las vías de error con claridad (por ejemplo,
Reject and Notify,Fallback to Manual Review) para que los registros de ejecución se expliquen solos.
Evitar ciclos
Flowker usa una protección contra ciclos basada en DFS en tiempo de ejecución. Cuando esa protección encuentra un ciclo durante la ejecución, el workflow falla conFLK-0508. Los ciclos no se detectan en tiempo de diseño, así que valida la estructura de tus aristas antes de activar.
Reglas para prevenir ciclos:
- Las aristas siempre deben apuntar hacia adelante en el flujo, nunca de vuelta a un nodo ya ejecutado.
- Revisa el grafo de forma visual antes de activar cualquier workflow con vías que se ramifican o se unen.
- Si necesitas un reintento o un bucle, modélalo como una invocación de workflow separada, no como una arista de retorno en el grafo actual.
Versionado mediante clonación
Nunca edites directamente un workflow activo. En su lugar:1
Clona el workflow (crea un nuevo
draft con todos los nodos y aristas copiados).2
Haz tus cambios en el borrador.
3
Valida o previsualiza el borrador. Actívalo antes de correr pruebas de ejecución.
4
Activa la nueva versión.
5
Desactiva la versión anterior si ya no la necesitas.
Referencia de errores
Los siguientes códigos de error son relevantes para el diseño y la ejecución de workflows:

