Pular para o conteúdo principal

Freemarker

1. Visão Geral

O componente Freemarker (freemarker) monta um texto a partir de um modelo (template) na linguagem FreeMarker, que suporta condições, laços de repetição e formatação de dados — mais poderoso que o Message Formatter para textos complexos (por exemplo, gerar um corpo de e-mail em HTML com uma lista de itens de pedido).

Use quando precisar de lógica de template (condições, repetições) na montagem de um texto. Para substituições simples de variáveis, o Message Formatter é mais direto.

2. Pré-requisitos

Não há credenciais ou acessos externos — processamento local.

3. Autenticação e Conexão

Não aplicável.

4. Configuração / Operações Suportadas

O componente tem uma única operação: renderizar um template FreeMarker. O template é compilado uma única vez ao iniciar o fluxo (não recompila a cada execução).

CampoObrigatórioTipoDescriçãoExemplo
templateSim, na práticaTexto (template FreeMarker)O modelo a ser processado. Dentro do template, o corpo da mensagem de entrada fica disponível como body (interpretado como JSON, quando possível) e os headers como headers. Também estão disponíveis as funções UPPERCASE(texto) e LOWERCASE(texto)."Olá ${body.cliente.nome}!"
encodingNãoTextoCodificação de caracteres do template. Valor padrão: "UTF-8"."UTF-8"
localeNãoTextoLocalidade usada no processamento do template (formatação de números, datas). Valor padrão: "en-US"."pt-BR"
timeZoneNãoTextoFuso horário usado no processamento do template. Valor padrão: "America/Sao_Paulo"."America/Sao_Paulo"
versionNãoTextoVersão da linguagem FreeMarker. Valor padrão: "2.3.33"."2.3.33"

5. Exemplos Práticos

Exemplo simples: montar uma saudação personalizada usando dados do corpo da mensagem.

Entrada:

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

Configuração do componente:

{
"componentName": "freemarker",
"configurations": {
"template": "Olá ${body.cliente.nome}, seja bem-vinda!",
"locale": "pt-BR"
}
}

Resposta (o corpo da mensagem vira o texto processado):

"Olá Maria Silva, seja bem-vinda!"

Exemplo avançado: montar um resumo de pedido com uma lista de itens, usando um laço de repetição do template.

Entrada:

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

Configuração do componente:

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

Resposta:

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

6. Erros Comuns e Troubleshooting

Erro / SintomaCausa provávelComo resolver
Template renderiza vazio ou com erroA sintaxe FreeMarker está incorreta, ou a expressão faz referência a um campo que não existe no body.Revisar a sintaxe do template e conferir os nomes dos campos usados.
Erro de processamento do templateFalha interna do FreeMarker ao interpretar o template (sintaxe inválida) ou ao interpolar os dados.Verificar a sintaxe do template FreeMarker e o formato do corpo de entrada.
body disponível como texto puro em vez de objetoO corpo de entrada não é um JSON válido; nesse caso ele é disponibilizado como string bruta.Garantir que a mensagem de entrada seja um JSON válido, se o template espera acessar campos de body.