Function Caller
1. Visión General
El componente Function Caller (function-caller) llama a una función previamente registrada por el componente Function, pasando un cuerpo de datos y recibiendo el resultado de su ejecución. Es el "botón de llamar" de la función creada con el componente Function.
Úsalo siempre que necesites reutilizar una lógica ya definida como función en otro punto del flujo. No lo uses si la función todavía no fue registrada en algún lugar del mismo flujo con el componente Function — la llamada va a fallar.
2. Prerrequisitos
- Debe existir, en el mismo flujo, un componente Function ya registrado con el nombre que será llamado.
- No hay credenciales externas involucradas.
3. Autenticación y Conexión
No aplica.
4. Configuración / Operaciones Soportadas
Function Caller tiene una única operación: invocar la función por su nombre y devolver su resultado.
| Campo | Obligatorio | Tipo | Descripción | Ejemplo |
|---|---|---|---|---|
functionName | Sí | Expresión | Nombre de la función a llamar (debe corresponder al nombre configurado en el componente Function correspondiente). | "validarCliente" |
body | No | Expresión | Cuerpo de datos que se enviará a la función. Si no se informa, se usa el cuerpo actual del mensaje tal como está. | Una expresión que arma un objeto personalizado para la función |
Comportamiento en caso de error:
- Si
functionNameno se informa, está vacío, o no resuelve a ningún valor, la ejecución falla con error. - Si la función con el nombre resuelto no está registrada, la ejecución falla con el error "Function '[nombre]' not found. Make sure it is registered."
- Si ocurre cualquier falla durante la ejecución de la función llamada, el error se propaga con el mensaje "Failed to execute function '[nombre]': [detalle]".
Al final, el resultado (cuerpo y estado de éxito) devuelto por la función llamada reemplaza el cuerpo y el estado del mensaje actual.
5. Ejemplos Prácticos
Ejemplo simple: un flujo de alta de cliente llama a la función "validarCliente" (previamente registrada) sin informar body, es decir, pasando el cuerpo actual del mensaje como entrada de la validación.
Entrada:
{
"nome": "Maria Silva",
"cpf": "123.456.789-00",
"email": "maria@ejemplo.com"
}
Configuración del componente:
{
"componentName": "function-caller",
"configurations": { "functionName": "validarCliente" }
}
Respuesta (el cuerpo devuelto por la función validarCliente reemplaza el cuerpo actual del mensaje):
{
"valido": true,
"pendencias": []
}
Ejemplo avanzado: un flujo de importación por lotes arma, para cada ítem, un cuerpo personalizado en el campo body (conteniendo solo los campos necesarios para la validación), llama a la función "validarCliente" y usa su resultado para decidir los próximos pasos — por ejemplo, combinándolo con un componente Choice justo después para tratar por separado los ítems válidos e inválidos.
Entrada:
{
"linha": { "nomeCompleto": "João Souza", "documento": "987.654.321-00", "contato": "joao@ejemplo.com" }
}
Configuración del componente:
{
"componentName": "function-caller",
"configurations": {
"functionName": "validarCliente",
"body": "{ \"nome\": \"{$.body.linha.nomeCompleto}\", \"cpf\": \"{$.body.linha.documento}\", \"email\": \"{$.body.linha.contato}\" }"
}
}
Respuesta:
{
"valido": false,
"pendencias": ["CPF inválido"]
}
6. Puntos de atención
- La función llamada debe estar registrada y activa en el momento de la llamada.
- La llamada siempre es síncrona — el Function Caller espera a que la función termine antes de seguir.
- Los errores dentro de la función llamada interrumpen la ejecución del Function Caller (no hay opción de "continuar aun con error" en este componente).
7. Errores Comunes y Troubleshooting
| Error / Síntoma | Causa probable | Cómo resolverlo |
|---|---|---|
| "Function name is required in configuration" | El campo functionName no fue completado o no resolvió a ningún valor. | Completar functionName con un valor válido. |
| "Function '[nombre]' not found. Make sure it is registered." | No existe ningún componente Function activo con ese nombre en el flujo. | Verificar que el nombre sea correcto y que el componente Function correspondiente esté activo. |
| "Failed to execute function '[nombre]': [detalle]" | La función llamada lanzó un error durante su ejecución. | Investigar la causa del error dentro de la lógica de la función llamada, usando el detalle del mensaje. |