Saltar al contenido principal

Freemarker

1. Visión General​

El componente Freemarker (freemarker) arma un texto a partir de una plantilla (template) en el lenguaje FreeMarker, que soporta condiciones, bucles y formato de datos — más potente que Message Formatter para textos complejos (por ejemplo, generar un cuerpo de correo en HTML con una lista de ítems de un pedido).

Úsalo cuando necesites lógica de plantilla (condiciones, repeticiones) al armar un texto. Para sustituciones simples de variables, Message Formatter es más directo.

2. Prerrequisitos​

No hay credenciales ni accesos externos — procesamiento local.

3. Autenticación y Conexión​

No aplica.

4. Configuración / Operaciones Soportadas​

El componente tiene una única operación: renderizar una plantilla FreeMarker. La plantilla se compila una única vez al iniciar el flujo (no se recompila en cada ejecución).

CampoObligatorioTipoDescripciónEjemplo
templateSí, en la prácticaTexto (plantilla FreeMarker)La plantilla que será procesada. Dentro de ella, el cuerpo del mensaje de entrada está disponible como body (interpretado como JSON, cuando es posible) y los headers como headers. También están disponibles las funciones UPPERCASE(texto) y LOWERCASE(texto)."¡Hola ${body.cliente.nome}!"
encodingNoTextoCodificación de caracteres de la plantilla. Valor por defecto: "UTF-8"."UTF-8"
localeNoTextoLocalidad usada en el procesamiento de la plantilla (formato de números, fechas). Valor por defecto: "en-US"."es-ES"
timeZoneNoTextoZona horaria usada en el procesamiento de la plantilla. Valor por defecto: "America/Sao_Paulo"."America/Sao_Paulo"
versionNoTextoVersión del lenguaje FreeMarker. Valor por defecto: "2.3.33"."2.3.33"

5. Ejemplos Prácticos​

Ejemplo simple: armar un saludo personalizado usando datos del cuerpo del mensaje.

Entrada:

{
"cliente": { "nome": "Maria Silva" }
}

Configuración del componente:

{
"componentName": "freemarker",
"configurations": {
"template": "Hola ${body.cliente.nome}, ¡bienvenida!",
"locale": "es-ES"
}
}

Respuesta (el cuerpo del mensaje se convierte en el texto procesado):

"Hola Maria Silva, ¡bienvenida!"

Ejemplo avanzado: armar un resumen de pedido con una lista de ítems, usando un bucle de la plantilla.

Entrada:

{
"pedidoId": 981,
"itens": [
{ "nome": "Producto A", "quantidade": 2 },
{ "nome": "Producto B", "quantidade": 1 }
]
}

Configuración del componente:

{
"componentName": "freemarker",
"configurations": {
"template": "Pedido ${body.pedidoId}:\n<#list body.itens as item>- ${item.nome} (x${item.quantidade})\n</#list>",
"locale": "es-ES"
}
}

Respuesta:

"Pedido 981:\n- Producto A (x2)\n- Producto B (x1)\n"

6. Errores Comunes y Troubleshooting​

Error / SíntomaCausa probableCómo resolverlo
La plantilla renderiza vacía o con errorLa sintaxis FreeMarker es incorrecta, o la expresión hace referencia a un campo que no existe en el body.Revisar la sintaxis de la plantilla y comprobar los nombres de los campos usados.
Error de procesamiento de la plantillaFalla interna de FreeMarker al interpretar la plantilla (sintaxis inválida) o al interpolar los datos.Verificar la sintaxis de la plantilla FreeMarker y el formato del cuerpo de entrada.
body disponible como texto plano en lugar de objetoEl cuerpo de entrada no es un JSON válido; en ese caso se pone a disposición como cadena en bruto.Garantizar que el mensaje de entrada sea un JSON válido, si la plantilla espera acceder a campos de body.