Grafo vs pasos (legacy)
| Modo | Comportamiento |
|---|---|
| Grafo | Nodos visuales: disparador → condiciones (Sí/No) → acciones. Si hay un grafo válido (nodos + aristas y al menos un disparador), el motor ejecuta el grafo. |
| Pasos | Bloques ordenados; cada bloque tiene condiciones y acciones. Si fallan las condiciones, se omite todo el bloque. |
Ramas IF / ELSE
- Los nodos condición tienen salidas verdadero y falso. Cableá ambas para un IF/ELSE real.
- Si solo hay una arista saliente, el motor la usa para ambos resultados (suele ser un error de diseño).
Fan-out desde una acción
Si un nodo acción enlaza a varios siguientes, el motor ejecuta todas esas ramas en secuencia. No es “elegir una rama”: usá un nodo condición para bifurcar.Condiciones
Las condiciones comparan un campo del contexto (véase Disparadores) con un valor y un operador. La UI solo ofrece campos compatibles con los contextos permitidos del trigger. Tras acciones que recalculan riesgo o cambian estado, las condiciones posteriores ven los valores actualizados.Guardado y validación
Al guardar (app o API), valida:- Sinergia — trigger ↔ cada acción, y cada par acción → siguiente inmediata (Sinergia).
- Forma del grafo — p. ej. debe existir nodo disparador; aristas coherentes con el builder.
Prueba vs producción
| Endpoint | Uso |
|---|---|
POST /automations/:id/execute | Prueba: evento sintético, processEvent, sin standby. |
POST /automations/:id/run | Producción con manual_execution: runAutomationById; standby y waiting si aplica. |
Mantenimiento: el orden de acciones en grafos para sinergia usa
getOrderedActionTypesFromGraph en workflow-synergy.ts; grafos complejos conviene revisarlos en el builder.