Criar e Editar Workflows
info
Esta página da documentação foi validada tecnicamente e didaticamente.
Criar e editar workflows
Criar workflows eficientes no n8n requer compreensão dos conceitos fundamentais, boas práticas de design e técnicas avançadas de organização. Este guia aborda todo o processo de criação e edição.
Conceitos fundamentais
O que é um workflow
Um workflow no n8n é uma sequência automatizada de operações que:
- Processa dados de uma ou múltiplas fontes
- Aplica lógica condicional e transformações
- Executa ações em sistemas externos
- Retorna resultados ou continua o processamento
Estrutura básica
mermaid\ngraph LR\n A[Trigger] --> B[Processamento]\n B --> C[Lógica Condicional]\n C --> D[Ação Final]\n C --> E[Ação Alternativa]\n
\n\n## Criando seu primeiro workflow\n\n### Passo 1: Escolher o trigger\n\nO trigger determina quando e como o workflow será executado:\n\n#### Triggers comuns\n\n- Manual Trigger: Execução manual via interface\n- Schedule Trigger: Execução em intervalos programados\n- Webhook: Execução via requisição HTTP\n- App Triggers: Eventos de aplicações externas\n\n#### Exemplo schedule trigger\n\njson\n{\n "rule": {\n "interval": [\n {\n "field": "hour",\n "value": 9\n },\n {\n "field": "minute",\n "value": 0\n }\n ]\n }\n}\n
\n\n### Passo 2: Adicionar nodes de processamento\n\nNodes processam e transformam os dados:\n\n#### Tipos de processamento\n\n- Data Transformation: Modificar estrutura dos dados\n- Data Filtering: Filtrar registros específicos\n- Data Enrichment: Adicionar informações externas\n- Data Validation: Validar integridade dos dados\n\n#### Exemplo set node\n\njson\n{\n "values": {\n "string": [\n {\n "name": "status",\n "value": "processed"\n },\n {\n "name": "timestamp",\n "value": "={{$now}}"\n }\n ]\n }\n}\n
\n\n### Passo 3: Implementar lógica condicional\n\nUse nodes de controle de fluxo para criar caminhos condicionais:\n\n#### If node\n\njson\n{\n "conditions": {\n "string": [\n {\n "value1": "={{$json.status}}",\n "operation": "equals",\n "value2": "active"\n }\n ]\n }\n}\n
\n\n#### Switch node\n\njson\n{\n "rules": {\n "rules": [\n {\n "conditions": {\n "string": [\n {\n "value1": "={{$json.priority}}",\n "operation": "equals",\n "value2": "high"\n }\n ]\n },\n "outputIndex": 0\n }\n ]\n }\n}\n
\n\n### Passo 4: Executar ações finais\n\nNodes de ação realizam operações em sistemas externos:\n\n#### Exemplos de ações\n\n- Send Email: Enviar notificações\n- HTTP Request: Chamar APIs externas\n- Database Operations: Salvar/atualizar dados\n- File Operations: Criar/modificar arquivos\n\n## Técnicas avançadas de edição\n\n### Organização de workflows\n\n#### 1. Nomenclatura consistente\n\nyaml\n# Boas práticas de nomenclatura\nWorkflow: "Processamento de Pedidos - E-commerce"\nNodes:\n - "Trigger - Novos Pedidos"\n - "Validação - Dados do Cliente"\n - "Processamento - Cálculo de Frete"\n - "Ação - Envio de Confirmação"\n
\n\n#### 2. Estrutura modular\n\nDivida workflows complexos em módulos menores:\n\nmermaid\ngraph TD\n A[Trigger Principal] --> B[Módulo Validação]\n B --> C[Módulo Processamento]\n C --> D[Módulo Notificação]\n C --> E[Módulo Relatórios]\n
\n\n#### 3. Comentários e documentação\n\nUse comentários para explicar lógica complexa:\n\njson\n{\n "notes": "Este node calcula o desconto baseado no histórico do cliente e categoria do produto"\n}\n
\n\n### Reutilização de código\n\n#### 1. Templates\n\nCrie templates para workflows comuns:\n\n- Data Processing Templates\n- Notification Templates\n- Integration Templates\n- Error Handling Templates\n\n#### 2. Subworkflows\n\nUse subworkflows para lógica reutilizável:\n\njson\n{\n "workflowId": "subworkflow-id",\n "parameters": {\n "inputData": "={{$json}}"\n }\n}\n
\n\n#### 3. Code nodes reutilizáveis\n\nCrie funções JavaScript reutilizáveis:\n\njavascript\n// Função para validação de email\nfunction validateEmail(email) {\n const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;\n return regex.test(email);\n}\n\n// Função para formatação de data\nfunction formatDate(date, format = 'DD/MM/YYYY') {\n return moment(date).format(format);\n}\n
\n\n## Melhores práticas\n\n### Performance\n\n1. Batch Processing: Processe dados em lotes\n2. Rate Limiting: Respeite limites de API\n3. Caching: Use cache para dados estáticos\n4. Optimization: Otimize queries e operações\n\n### Confiabilidade\n\n1. Error Handling: Implemente tratamento de erros\n2. Retry Logic: Configure tentativas automáticas\n3. Monitoring: Monitore execuções\n4. Backup: Faça backup de workflows importantes\n\n### Manutenibilidade\n\n1. Version Control: Use controle de versão\n2. Documentation: Documente workflows complexos\n3. Testing: Teste workflows regularmente\n4. Refactoring: Refatore workflows antigos\n\n## Como debugging e teste\n\n### Ferramentas de debug\n\n1. Execution Inspector: Analise execuções detalhadamente\n2. Data Preview: Visualize dados em cada node\n3. Error Logs: Analise logs de erro\n4. Performance Monitor: Monitore performance\n\n### Estratégias de teste\n\n1. Unit Testing: Teste nodes individualmente\n2. Integration Testing: Teste workflows completos\n3. Load Testing: Teste com grandes volumes\n4. Error Testing: Teste cenários de erro\n\n### Exemplo workflow de teste\n\nmermaid\ngraph LR\n A[Test Data] --> B[Process Node]\n B --> C[Validation]\n C --> D[Expected Result]\n C --> E[Error Handler]\n
\n\n## Workflows complexos\n\n### Padrões de design\n\n#### 1. Fan-out/Fan-in\n\nmermaid\ngraph TD\n A[Trigger] --> B[Split Data]\n B --> C[Process 1]\n B --> D[Process 2]\n B --> E[Process 3]\n C --> F[Merge Results]\n D --> F\n E --> F\n F --> G[Final Action]\n
\n\n#### 2. Pipeline Processing\n\nmermaid\ngraph LR\n A[Input] --> B[Stage 1]\n B --> C[Stage 2]\n C --> D[Stage 3]\n D --> E[Output]\n
\n\n#### 3. Event-driven Architecture\n\nmermaid\ngraph TD\n A[Event Source] --> B[Event Router]\n B --> C[Handler 1]\n B --> D[Handler 2]\n B --> E[Handler 3]\n
\n\n### Exemplo workflow de e-commerce\n\nmermaid\ngraph TD\n A[Novo Pedido] --> B[Validar Cliente]\n B --> C{Cliente Válido?}\n C -->|Sim| D[Calcular Frete]\n C -->|Não| E[Notificar Admin]\n D --> F[Processar Pagamento]\n F --> G{Pagamento OK?}\n G -->|Sim| H[Enviar Confirmação]\n G -->|Não| I[Notificar Cliente]\n H --> J[Atualizar Estoque]\n I --> K[Registrar Falha]\n
\n\n## Configurações avançadas\n\n### Variáveis de ambiente\n\njson\n{\n "variables": {\n "API_BASE_URL": "https://api.exemplo.com",\n "MAX_RETRIES": 3,\n "TIMEOUT": 30000\n }\n}\n
\n\n### Configurações de execução\n\njson\n{\n "executionOrder": "v1",\n "saveExecutionProgress": true,\n "saveManualExecutions": true,\n "callerPolicy": "workflowsFromSameOwner"\n}\n
\n\n### Permissões e segurança\n\njson\n{\n "permissions": {\n "owner": "user@exemplo.com",\n "sharedWith": [\n {\n "user": "admin@exemplo.com",\n "role": "editor"\n }\n ]\n }\n}\n
Troubleshooting
Problemas comuns
- Connection Issues: Verificar credenciais e conectividade
- Data Format Errors: Validar formato dos dados
- Rate Limit Exceeded: Implementar delays e retry logic
- Memory Issues: Otimizar processamento de dados
Soluções
- Error Handling Nodes: Implementar tratamento robusto
- Retry Mechanisms: Configurar tentativas automáticas
- Monitoring: Implementar alertas e logs
- Documentation: Manter documentação atualizada
Recursos adicionais
Documentação oficial
Templates e exemplos
Ferramentas de desenvolvimento
Próximos Passos: