Grafo vs passos (legado)
| Modo | Comportamento |
|---|---|
| Grafo | Nós visuais: gatilho → condições (Sim/Não) → ações. Se houver um grafo válido (nós + arestas e pelo menos um gatilho), o motor executa o grafo. |
| Passos | Blocos ordenados; cada bloco tem condições e ações. Se as condições falharem, todo o bloco é ignorado. |
Ramificações IF / ELSE
- Nós de condição têm saídas verdadeiro e falso. Conecte ambas para um IF/ELSE real.
- Se houver apenas uma aresta de saída, o motor usa essa aresta para ambos os resultados (geralmente indesejado).
Fan-out a partir de uma ação
Se um nó de ação liga a vários seguintes, o motor executa todas essas ramificações em sequência. Não é “escolher um ramo”: use um nó de condição para bifurcar.Condições
As condições comparam um campo do contexto (veja Gatilhos) a um valor com um operador. A UI só oferece campos compatíveis com os contextos permitidos do gatilho. Após ações que recalculam risco ou mudam status, condições posteriores veem valores atualizados.Salvar e validação
Ao salvar (app ou API), o produto valida:- Sinergia — gatilho ↔ cada ação, e cada par ação → próxima imediata (Sinergia).
- Forma do grafo — ex.: deve existir nó de gatilho; arestas coerentes com o builder.
Teste vs produção
| Endpoint | Uso |
|---|---|
POST /automations/:id/execute | Teste: evento sintético, processEvent, sem standby. |
POST /automations/:id/run | Produção com manual_execution: runAutomationById; standby e waiting quando aplicável. |
Manutenção: a ordem das ações em grafos para sinergia usa
getOrderedActionTypesFromGraph em workflow-synergy.ts; grafos complexos convém revisar no builder.