Function Caller
1. Visão Geral
O componente Function Caller (function-caller) chama uma função previamente registrada pelo componente Function, passando um corpo de dados e recebendo o resultado da execução dela. É o "botão de chamar" da função criada com o componente Function.
Use sempre que precisar reaproveitar uma lógica já definida como função em outro ponto do fluxo. Não use se a função ainda não foi registrada em algum lugar do mesmo fluxo com o componente Function — a chamada vai falhar.
2. Pré-requisitos
- Deve existir, no mesmo fluxo, um componente Function já registrado com o nome que será chamado.
- Não há credenciais externas envolvidas.
3. Autenticação e Conexão
Não aplicável.
4. Configuração / Operações Suportadas
O Function Caller tem uma única operação: invocar a função pelo nome e devolver o resultado dela.
| Campo | Obrigatório | Tipo | Descrição | Exemplo |
|---|---|---|---|---|
functionName | Sim | Expressão | Nome da função a ser chamada (deve corresponder ao nome configurado no componente Function correspondente). | "validarCliente" |
body | Não | Expressão | Corpo de dados a ser enviado para a função. Se não informado, o corpo atual da mensagem é usado como está. | Uma expressão que monta um objeto customizado para a função |
Comportamento em caso de erro:
- Se
functionNamenão for informado, vazio, ou não resolver para nenhum valor, a execução falha com erro. - Se a função com o nome resolvido não estiver registrada, a execução falha com o erro "Function '[nome]' not found. Make sure it is registered."
- Se ocorrer qualquer falha durante a execução da função chamada, o erro é propagado com a mensagem "Failed to execute function '[nome]': [detalhe]".
Ao final, o resultado (corpo e status de sucesso) devolvido pela função chamada substitui o corpo e o status da mensagem atual.
5. Exemplos Práticos
Exemplo simples: um fluxo de cadastro de cliente chama a função "validarCliente" (previamente registrada) sem informar body, ou seja, repassando o corpo atual da mensagem como entrada da validação.
Entrada:
{
"nome": "Maria Silva",
"cpf": "123.456.789-00",
"email": "maria@exemplo.com"
}
Configuração do componente:
{
"componentName": "function-caller",
"configurations": { "functionName": "validarCliente" }
}
Resposta (o corpo devolvido pela função validarCliente substitui o corpo atual da mensagem):
{
"valido": true,
"pendencias": []
}
Exemplo avançado: um fluxo de importação em lote monta, para cada item, um corpo customizado no campo body (contendo apenas os campos necessários para a validação), chama a função "validarCliente" e usa o resultado dela para decidir os próximos passos — por exemplo, combinando com um componente Choice logo em seguida para tratar separadamente os itens válidos e inválidos.
Entrada:
{
"linha": { "nomeCompleto": "João Souza", "documento": "987.654.321-00", "contato": "joao@exemplo.com" }
}
Configuração do componente:
{
"componentName": "function-caller",
"configurations": {
"functionName": "validarCliente",
"body": "{ \"nome\": \"{$.body.linha.nomeCompleto}\", \"cpf\": \"{$.body.linha.documento}\", \"email\": \"{$.body.linha.contato}\" }"
}
}
Resposta:
{
"valido": false,
"pendencias": ["CPF inválido"]
}
6. Pontos de atenção
- A função chamada precisa estar registrada e ativa no momento da chamada.
- A chamada é sempre síncrona — o Function Caller espera a função terminar antes de seguir.
- Erros dentro da função chamada interrompem a execução do Function Caller (não há opção de "continuar mesmo com erro" neste componente).
7. Erros Comuns e Troubleshooting
| Erro / Sintoma | Causa provável | Como resolver |
|---|---|---|
| "Function name is required in configuration" | O campo functionName não foi preenchido ou não resolveu para nenhum valor. | Preencher functionName com um valor válido. |
| "Function '[nome]' not found. Make sure it is registered." | Não existe nenhum componente Function ativo com esse nome no fluxo. | Verificar se o nome está correto e se o componente Function correspondente está ativo. |
| "Failed to execute function '[nome]': [detalhe]" | A função chamada lançou um erro durante sua execução. | Investigar a causa do erro dentro da lógica da função chamada, usando o detalhe da mensagem. |