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.
Conceito
O Workflow Trigger funciona como um disparador interno que permite que um workflow seja executado por outro workflow, similar a uma função em programação. Isso possibilita:
- Modularização de workflows complexos
- Reutilização de lógicas comuns
- Organização de automações em componentes menores
- Manutenção simplificada de workflows grandes
Configuração
Parâmetros Básicos
Parâmetro | Tipo | Descrição |
---|---|---|
Workflow ID | String | ID único do workflow que será executado |
Wait for Workflow | Boolean | Aguarda a conclusão do workflow antes de continuar |
Options | Object | Configurações adicionais de execução |
Configuração Avançada
{
"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
1. 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
2. Sistema de Aprovações
Cenário: Sistema de aprovação de despesas com múltiplos níveis.
3. Integração de Sistemas
Cenário: Sincronização entre CRM, ERP e sistema financeiro.
Expressões e Data Mapping
Passando Dados Entre Workflows
// Dados de entrada para o workflow filho
{
"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
Debugging
// Adicione 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 Workflow Triggers para criar bibliotecas de workflows reutilizáveis. Isso facilita a manutenção e permite que equipes diferentes trabalhem em módulos específicos sem interferir no workflow principal.
Esta documentação está em processo de validação. Os exemplos práticos e configurações de nós apresentados precisam ser testados e validados em ambientes reais. A intenção é sempre fornecer práticas e exemplos que funcionem corretamente em produção. Se encontrar inconsistências ou problemas, por favor, reporte para que possamos melhorar a qualidade da documentação.