Pular para o conteúdo principal

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âmetroTipoDescrição
Workflow IDStringID único do workflow que será executado
Wait for WorkflowBooleanAguarda a conclusão do workflow antes de continuar
OptionsObjectConfiguraçõ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

  1. Evite Loops Infinitos

    • Não crie workflows que se chamam mutuamente
    • Use contadores para limitar execuções recursivas
  2. Otimize o Tamanho dos Dados

    • Passe apenas dados essenciais entre workflows
    • Use compressão para dados grandes
  3. 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


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.


Nota de Atenção

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.