Controle de Lógica
Os nodes de Controle de Lógica são fundamentais para criar workflows inteligentes e dinâmicos no n8n. Eles permitem que você controle o fluxo de execução, tome decisões baseadas em condições e combine dados de diferentes fontes.
Nodes Disponíveis
If Node
Principais funcionalidades:
- Avaliar condições simples e complexas
- Direcionar dados para diferentes caminhos
- Usar expressões n8n para lógica avançada
- Combinar múltiplas condições
- Criar fluxos condicionais
Casos de uso:
- Validar dados de entrada
- Filtrar informações por critérios
- Implementar regras de negócio
- Criar fluxos de aprovação
- Processar dados diferentes baseado em condições
Switch Node
Principais funcionalidades:
- Múltiplos caminhos de saída
- Condições independentes
- Caminho padrão para casos não cobertos
- Avaliação sequencial de condições
- Fluxos paralelos de processamento
Casos de uso:
- Classificar dados por tipo
- Implementar máquinas de estado
- Processar diferentes tipos de eventos
- Criar workflows de roteamento
- Implementar lógica de negócio complexa
Merge Node
Principais funcionalidades:
- Combinar dados de diferentes nodes
- Unir informações relacionadas
- Sincronizar fluxos paralelos
- Agregar dados de múltiplas fontes
- Criar estruturas de dados consolidadas
Casos de uso:
- Mesclar dados de diferentes APIs
- Combinar informações de clientes
- Sincronizar processamento paralelo
- Agregar resultados de múltiplas consultas
- Consolidar dados de diferentes sistemas
Wait Node
Principais funcionalidades:
- Adicionar pausas programadas
- Implementar delays condicionais
- Sincronizar processos
- Controlar timing de execução
- Implementar rate limiting
Casos de uso:
- Rate limiting para APIs
- Processamento em lotes
- Retry com backoff exponencial
- Sincronização com sistemas externos
- Polling inteligente
Conceitos Fundamentais
Fluxo de Controle
O fluxo de controle determina como os dados se movem através do workflow, baseado em condições e decisões.
Tipos de fluxo:
- Sequencial: Execução linha por linha
- Condicional: Execução baseada em condições
- Paralelo: Execução simultânea
- Convergente: Múltiplos caminhos se unem
Condições e Expressões
As condições são expressões que avaliam para verdadeiro ou falso, determinando o caminho do fluxo.
Tipos de condições:
- Comparações:
,==
,!=
,>
,<
,>=
<=
- Lógicas:
,AND
,OR
NOT
- Existe: Verificar se campo existe
- Vazio: Verificar se valor está vazio
- Regex: Padrões de texto
Estruturas de Decisão
As estruturas de decisão permitem criar lógica complexa no workflow:
- If-Then-Else: Decisão binária
- Switch-Case: Múltiplas opções
- Nested Conditions: Condições aninhadas
- Parallel Processing: Processamento paralelo
Padrões de Controle
Validação e Filtragem
Exemplo:
- If node valida email
- If node verifica se usuário existe
- If node confirma se dados estão completos
- Dados válidos seguem para processamento
Roteamento por Tipo
Exemplo:
- Switch node classifica por tipo de pedido
- Pedidos normais vão para processamento padrão
- Pedidos urgentes vão para processamento prioritário
- Pedidos especiais vão para aprovação manual
Processamento Paralelo
Exemplo:
- Dados são divididos em dois fluxos
- HTTP Request busca informações do cliente
- HTTP Request busca histórico de compras
- Merge node combina as informações
Fluxo de Aprovação
Exemplo:
- If node verifica se valor está dentro do limite
- If node confirma se aprovador está disponível
- Switch node direciona para diferentes níveis de aprovação
- Merge node consolida resultado final
Exemplos Práticos
Exemplo 1: Sistema de Notificações
Cenário: Enviar notificações diferentes baseado no tipo de evento.
Workflow:
Configuração:
- If node:
$json.tipo_evento === "urgente"
- Switch node:
(email, sms, slack)$json.canal
- Merge node: Combina resultados de todos os canais
Exemplo 2: Processamento de Pedidos
Cenário: Processar pedidos de forma diferente baseado no valor e tipo.
Workflow:
Configuração:
- If node:
$json.valor > 1000
- Switch node:
(normal, premium, express)$json.tipo_pedido
- Merge node: Unifica resultado final
Exemplo 3: Sistema de Monitoramento
Cenário: Monitorar diferentes serviços e alertar baseado na severidade.
Workflow:
Configuração:
- Switch node:
(api, database, website)$json.servico
- If node:
$json.status === "down"
- Merge node: Consolida status de todos os serviços
Boas Práticas
Estruturação de Condições
- Use nomes descritivos para condições
- Simplifique lógica complexa em múltiplos nodes
- Documente regras de negócio nos comentários
- Teste todas as condições com dados reais
- Mantenha condições legíveis e organizadas
Performance
- Evite condições aninhadas excessivas
- Use Switch para múltiplas opções
- Otimize ordem das condições (mais prováveis primeiro)
- Processe em paralelo quando possível
- Monitore tempo de execução
Manutenção
- Use variáveis para valores reutilizáveis
- Centralize lógica comum em nodes separados
- Implemente logging para debug
- Configure alertas para falhas
- Documente fluxos complexos
Troubleshooting
Problemas Comuns
Condições não funcionam
- Verifique sintaxe das expressões
- Confirme tipos de dados
- Use o node Debug Helper
- Teste condições individualmente
Fluxo inesperado
- Verifique ordem das condições
- Confirme valores de entrada
- Valide lógica de decisão
- Use logs para rastrear fluxo
Merge não funciona
- Verifique se todos os inputs estão conectados
- Confirme estrutura dos dados
- Valide configuração do merge
- Teste com dados de exemplo
Dicas de Debug
- Use o node Debug Helper para inspecionar dados
- Configure logging detalhado
- Teste condições individualmente
- Valide dados de entrada
- Monitore fluxo de execução
Expressões Avançadas
Operadores de Comparação
// Comparações básicas
$json.valor > 100
$json.status === "ativo"
$json.email !== ""
// Comparações com arrays
$json.tags.includes("urgente")
$json.categorias.indexOf("tecnologia") > -1
Operadores Lógicos
// AND lógico
$json.valor > 100 && $json.status === "ativo"
// OR lógico
$json.tipo === "urgente" || $json.prioridade === "alta"
// NOT lógico
!$json.processado
Verificações de Existência
// Verificar se campo existe
$json.hasOwnProperty("email")
// Verificar se valor não é nulo
$json.valor != null
// Verificar se array não está vazio
$json.items.length > 0
Expressões Complexas
// Múltiplas condições
($json.valor > 1000 && $json.cliente_tipo === "premium") ||
($json.valor > 5000 && $json.cliente_tipo === "normal")
// Validação de email
/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test($json.email)
// Verificação de data
new Date($json.data_vencimento) > new Date()
Próximos Passos
- Expressões n8n - Usar expressões avançadas
- Nodes de Dados - Processar dados
- Tratamento de Erros - Lidar com falhas
- Fluxo de Execução - Controlar ordem
- Debugging - Depurar workflows