Workflow Trigger
O Workflow Trigger é um nó especial que permite executar um workflow a partir de outro workflow, criando uma hierarquia de automações. Este recurso é fundamental para organizar workflows complexos em módulos menores e reutilizáveis.
Configuração Básica
{
"workflowId": "workflow_123456",
"waitForWorkflow": true,
"options": {
"pinData": {
"inputData": "{{$json}}"
},
"startNodes": ["node_1", "node_2"]
}
}
Exemplos Práticos
Exemplo 1: Workflow Modular de Notificações
Workflow Principal (Processamento de Pedidos):
Workflow de Notificações (Executado pelo trigger):
Exemplo 2: Validação Modular
// Workflow principal
{
"workflowId": "validacao_cliente",
"waitForWorkflow": true,
"options": {
"pinData": {
"cliente": "{{$json.cliente}}",
"pedido": "{{$json.pedido}}"
}
}
}
Casos de Uso
Processamento de Pedidos - E-commerce
Cenário: Sistema de e-commerce que processa pedidos com múltiplas validações.
Implementação com Workflow Trigger:
- Workflow principal: Orquestração geral
- Workflow de validação: Verificações de cliente e estoque
- Workflow de pagamento: Processamento financeiro
- Workflow de notificação: Comunicação com cliente
Sistema de Aprovações
Cenário: Sistema de aprovação de despesas com múltiplos níveis.
Integração de Sistemas
Cenário: Sincronização entre CRM, ERP e sistema financeiro.
Passando Dados Entre Workflows
{
"workflowId": "processar_pedido",
"waitForWorkflow": true,
"options": {
"pinData": {
"cliente": "{{$json.cliente}}",
"pedido": {
"id": "{{$json.pedido.id}}",
"valor": "{{$json.pedido.valor}}",
"itens": "{{$json.pedido.itens}}"
},
"contexto": {
"origem": "{{$workflow.name}}",
"timestamp": "{{$now}}"
}
}
}
}
Recebendo Dados do Workflow Filho
// Acessando dados retornados pelo workflow filho
{
"resultado_validacao": "{{$json.resultado}}",
"status": "{{$json.status}}",
"mensagem": "{{$json.mensagem}}"
}
Tratamento de Erros
Configuração de Error Handling
// Workflow principal com tratamento de erro
{
"workflowId": "validacao_critica",
"waitForWorkflow": true,
"options": {
"pinData": {
"dados": "{{$json}}"
}
}
}
Workflow de Validação com Error Handling
Performance e Otimização
Boas Práticas
-
Evite Loops Infinitos
- Não crie workflows que se chamam mutuamente
- Use contadores para limitar execuções recursivas
-
Otimize o Tamanho dos Dados
- Passe apenas dados essenciais entre workflows
- Use compressão para dados grandes
-
Monitore Execuções
- Configure alertas para workflows que falham
- Use logs para rastrear execuções
Exemplo de Monitoramento
// Workflow de monitoramento
{
"workflowId": "monitor_execucoes",
"waitForWorkflow": false,
"options": {
"pinData": {
"workflow_pai": "{{$workflow.name}}",
"timestamp": "{{$now}}",
"status": "iniciado"
}
}
}
Troubleshooting
Problemas Comuns
Erro: "Workflow not found"
- Verifique se o Workflow ID está correto
- Confirme se o workflow existe e está ativo
- Verifique permissões de acesso
Erro: "Timeout"
- Aumente o timeout do workflow filho
- Otimize a performance do workflow filho
- Considere usar
waitForWorkflow: false
Erro: "Circular dependency"
- Verifique se não há chamadas circulares
- Use contadores para limitar recursão
- Reestruture a lógica se necessário
Logs para Debugging
{
"workflowId": "workflow_teste",
"waitForWorkflow": true,
"options": {
"pinData": {
"debug": true,
"dados_entrada": "{{$json}}",
"workflow_origem": "{{$workflow.name}}"
}
}
}
Integração com Outros Nós
Fluxo Típico
Exemplo Completo
// 1. HTTP Request - Buscar dados
{
"url": "https://api.exemplo.com/pedidos",
"method": "GET"
}
// 2. Transformar Dados
{
"pedidos_processados": "{{$json.pedidos.filter(item => item.status === 'pendente')}}"
}
// 3. Workflow Trigger - Processar cada pedido
{
"workflowId": "processar_pedido",
"waitForWorkflow": true,
"options": {
"pinData": {
"pedido": "{{$json}}"
}
}
}
// 4. Code Node - Consolidar resultados
const resultados = $input.all();
const sucessos = resultados.filter(r => r.json.status === 'success').length;
const falhas = resultados.filter(r => r.json.status === 'error').length;
return {
"resumo": {
"total_processados": resultados.length,
"sucessos": sucessos,
"falhas": falhas
}
};
Referências
- Subworkflows - Conceitos avançados de subworkflows
- Error Handling - Tratamento de erros em workflows
- Execution Order - Ordem de execução de nós
- Data Mapping - Mapeamento avançado de dados
Dica: Use o Workflow Trigger para modularizar workflows complexos e criar bibliotecas reutilizáveis de automação.