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.