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
O node If permite criar condições e tomar decisões baseadas em valores ou expressões, direcionando o fluxo do workflow.
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
O node Switch permite direcionar dados para múltiplos caminhos baseado em diferentes condições, criando fluxos complexos.
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
O node Merge permite combinar dados de múltiplas fontes em um único fluxo, unindo informações relacionadas.
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
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
1. Validação e Filtragem
Dados de Entrada → Validação → Dados Válidos → Processamento
↓
Dados Inválidos → Tratamento de Erro
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
2. Roteamento por Tipo
Dados de Entrada → Switch → Tipo A → Processamento A
↓ → Tipo B → Processamento B
→ Tipo C → Processamento C
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
3. Processamento Paralelo
Dados de Entrada → Divisão → Processamento A → Merge → Resultado
↓ → Processamento B ↗
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
4. Fluxo de Aprovação
Solicitação → Validação → Aprovado → Processamento
↓ → Rejeitado → Notificaçã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:
Webhook → If (tipo_evento) → Email → Slack → Merge → Log
↓ → SMS ↗
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:
Pedido → If (valor > 1000) → Aprovação Manual → Merge → Confirmação
↓ → Processamento Automático ↗
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:
Monitor → Switch (serviço) → Verificação A → Merge → Análise
↓ → Verificação B ↗
↓ → Verificação C ↗
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
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