Tipos de nodos
Cada workflow esta construido a partir de nodos. Cada nodo tiene un
type que determina como Flowker lo procesa en tiempo de ejecucion.
trigger
El punto de entrada de un workflow. Cada workflow debe comenzar con un nodo trigger. Cuando se inicia la ejecucion de un workflow, el motor entra por este nodo y comienza el enrutamiento desde el.executor
Llama a un executor externo — un servicio HTTP, API o proveedor registrado en Flowker. Este es el bloque de construccion principal para integrarse con motores de fraude, proveedores de pagos, servicios de notificacion y otros sistemas externos.conditional
Evalua una expresion contra el contexto de ejecucion y enruta a diferentes ramas segun el resultado. Los nodos condicionales permiten la logica de bifurcacion — por ejemplo, enrutar a un camino de aprobacion cuando la puntuacion de riesgo es alta, o continuar directamente cuando es baja.action
Un nodo de accion generico para pasos que no involucran llamadas externas pero representan operaciones significativas dentro del workflow — como transformar datos, emitir un evento o registrar un cambio de estado.Aristas
Las aristas conectan nodos y definen el camino de ejecucion. Cada arista tiene los siguientes campos:
| Campo | Descripcion |
|---|---|
id | Identificador unico de la arista |
source | ID del nodo de origen |
target | ID del nodo de destino |
sourceHandle | Que handle (puerto de salida) del nodo de origen origina esta arista |
condition | Una expresion que debe evaluarse como true para que se siga esta arista |
label | Etiqueta legible para la arista (utilizada en visualizacion y depuracion) |
Ejemplo de arista
condition acepta expresiones evaluadas contra el contexto de ejecucion. Cuando se omite, la arista siempre se sigue si el nodo de origen completa exitosamente.
Transiciones de estado
Los workflows se mueven a traves de un ciclo de vida bien definido. Entender las transiciones de estado es critico para desplegar e iterar workflows de forma segura.
- draft — El estado inicial. Todas las modificaciones (agregar nodos, editar aristas, cambiar configuracion) solo estan permitidas en estado
draft. - active — Un workflow que ha sido activado. Puede ser ejecutado. No se permiten modificaciones mientras esta activo.
- inactive — Un workflow que ha sido desactivado. Ya no puede ser ejecutado.
Reglas
- Solo un workflow en
draftpuede ser activado (transicion:draft → active). - Solo un workflow
activepuede ser desactivado (transicion:active → inactive). - Intentar una transicion invalida devuelve el error
FLK-0102. - Intentar modificar un workflow que no esta en
draftdevuelve el errorFLK-0103.
Iterar de forma segura con clone
Para modificar un workflow activo, primero clonalo. La clonacion crea un nuevodraft desde cualquier estado, copiando todos los nodos y aristas. Luego puedes editar el borrador, probarlo y activarlo cuando este listo — sin afectar la version que esta ejecutandose actualmente.
Este es el enfoque recomendado para versionar workflows en produccion.
Limites tecnicos
| Limite | Valor | Codigo de error |
|---|---|---|
| Maximo de nodos por workflow | 100 | FLK-0113 |
| Maximo de aristas por workflow | 200 | FLK-0114 |
| Maximo del payload de entrada de ejecucion | 1 MB | FLK-0506 |
Patrones comunes
Secuencial
El patron mas simple. Los nodos se ejecutan uno tras otro en una cadena lineal. Usa esto cuando cada paso depende del resultado del anterior y no hay bifurcacion.
Ejemplo: Orquestacion de pagos
Paralelo (fan-out / fan-in)
Multiples nodos executor se inician desde un punto de entrada comun y sus resultados se recopilan en un nodo de union. Usa esto cuando comprobaciones o llamadas independientes pueden ocurrir concurrentemente para reducir el tiempo total de ejecucion.
Este patron es util cuando necesitas llamar a multiples proveedores de fraude o cumplimiento simultaneamente y agregar sus respuestas antes de tomar una decision de enrutamiento.
Bifurcacion condicional
Un nodoconditional evalua una expresion y enruta la ejecucion a diferentes nodos dependiendo del resultado. Cada arista saliente del nodo condicional lleva una expresion condition.
Ejemplo: Verificacion antifraude
Ejemplos del mundo real
Verificacion antifraude
Una transaccion llega, se obtiene una puntuacion de fraude de un motor externo, y el resultado enruta la ejecucion a un camino de aprobacion o rechazo.Orquestacion de pagos
Un flujo lineal que valida los datos del pago entrante, los enruta al proveedor apropiado y envia una confirmacion.Onboarding KYC
Los documentos de un cliente son verificados por un servicio externo. Un nodo condicional evalua si se requiere revision manual. De ser asi, se activa una accion de aprobacion manual antes de activar la cuenta.Flujo de aprobacion manual
Se envia una solicitud para revision. Una accion de aprobacion espera una decision. Un nodo condicional luego enruta al camino de aprobacion o rechazo.Mejores practicas
Convenciones de nombres de nodos
Usa nombres descriptivos orientados a la accion que comuniquen lo que hace el nodo — no de que tipo es.- Correcto:
Validate Payment Data,Get Fraud Score,Notify Customer,Await Approval - Incorrecto:
executor1,conditional node,node3
Expresiones de condicion en aristas
Las condiciones en las aristas se evaluan contra el contexto de ejecucion. Mantenlas simples y explicitas:- Usa comparaciones directas de campos:
data.status == 'approved' - Usa comparaciones numericas:
data.riskScore < 70 - Usa campos booleanos:
data.reviewRequired == true
conditional que encapsule la decision con un nombre claro.
Una expresion invalida devuelve FLK-0105. Siempre valida las expresiones antes de activar un workflow.
Estrategias de manejo de errores
Disena workflows para manejar fallos de forma explicita:- Agrega caminos de rechazo desde nodos
conditionalpara cada punto de decision que pueda fallar. - Usa nodos
executorseparados para logica de reintentos o proveedores de respaldo. - Nombra los caminos de error de forma clara (por ejemplo,
Reject and Notify,Fallback to Manual Review) para que los logs de auditoria sean autoexplicativos.
Evitando ciclos
Flowker usa un protector de ciclos basado en DFS en tiempo de ejecucion. Si se detecta un ciclo durante la ejecucion, el workflow falla conFLK-0508. Los ciclos no se detectan en tiempo de diseno, asi 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 hacia un nodo ejecutado previamente.
- Revisa el grafo visualmente antes de activar cualquier workflow con bifurcaciones o caminos que se fusionan.
- Si se necesita un reintento o bucle, modelalo como una invocacion de workflow separada, no como una arista de retorno en el grafo actual.
Versionado mediante clone
Nunca edites un workflow activo directamente. En su lugar:- Clona el workflow (crea un nuevo
draftcon todos los nodos y aristas copiados). - Realiza tus cambios en el borrador.
- Prueba el borrador con ejecuciones de prueba.
- Activa la nueva version.
- Desactiva la version anterior si ya no es necesaria.
Referencia de errores
Los siguientes codigos de error son relevantes para el diseno y la ejecucion de workflows:
| Codigo | Descripcion |
|---|---|
FLK-0102 | Invalid status transition |
FLK-0103 | Workflow cannot be modified — not in draft status |
FLK-0105 | Invalid conditional expression |
FLK-0113 | Too many nodes — maximum is 100 |
FLK-0114 | Too many edges — maximum is 200 |
FLK-0506 | Execution input payload too large — maximum is 1 MB |
FLK-0508 | Cycle detected during workflow execution |

