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.

Configuração Básica​

{
  "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​

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

Sistema de Aprovações​

Cenário: Sistema de aprovação de despesas com múltiplos níveis.

Integração de Sistemas​

Cenário: Sincronização entre CRM, ERP e sistema financeiro.

Passando Dados Entre Workflows​

{
  "workflowId": "processar_pedido",
  "waitForWorkflow": true,
  "options": {
    "pinData": {
      "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

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 o Workflow Trigger para modularizar workflows complexos e criar bibliotecas reutilizáveis de automação.