Script
1. Visão Geral
O componente Script (script) executa um trecho de código customizado (na linguagem de expressão MVEL) dentro do fluxo, permitindo lógica que os componentes prontos da plataforma não cobrem — cálculos específicos, formatação de datas, geração de identificadores, entre outros.
Use quando a lógica necessária é simples demais para justificar um componente dedicado, mas vai além do que um Add Variable ou Choice conseguem expressar. Evite abusar do Script para lógica de negócio complexa — isso dificulta a manutenção do fluxo por quem não conhece a linguagem MVEL.
2. Pré-requisitos
Conhecimento básico da linguagem MVEL (parecida com Java) para escrever a expressão.
3. Autenticação e Conexão
Não aplicável — processamento local.
4. Configuração / Operações Suportadas
O componente tem uma única operação: executar o código configurado.
| Campo | Obrigatório | Tipo | Descrição | Exemplo |
|---|---|---|---|---|
expression | Sim | Texto (código MVEL) | Código a ser executado. Dentro dele, ficam disponíveis: body (o corpo da mensagem, como objeto se for JSON), headers (os headers da mensagem), variables (variáveis definidas por um Add Variable anterior, se houver), output (objeto usado para definir o resultado, com output.writeBody(...) e output.addHeader(chave, valor)), e func (funções utilitárias prontas, ver abaixo). | Um script que calcula um valor e escreve no output |
Funções utilitárias disponíveis em func
| Função | Descrição |
|---|---|
func.getCurrentTimestamp() / func.getCurrentTimestamp(fusoHorario) | Retorna a data/hora atual. |
func.getCurrentTimeMillis() | Retorna o horário atual em milissegundos. |
func.formatDate(timestamp, padrao) | Formata uma data/hora conforme o padrão informado. |
func.addDays(timestamp, dias) | Soma dias a uma data. |
func.base64Encode(texto) / func.base64Decode(texto) | Codifica/decodifica em Base64. |
func.md5(texto) / func.sha256(texto) | Gera hash MD5/SHA-256 de um texto. |
func.generateUuid() | Gera um identificador único (UUID). |
func.fromStorage(escopo, chave) | Lê um valor gravado no Local Storage. |
func.fromEnv(chave) | Lê uma variável de ambiente da plataforma. |
5. Exemplos Práticos
Exemplo simples: gerar um identificador único e adicioná-lo ao corpo da mensagem.
Entrada:
{
"pedido": { "cliente": "Maria Silva" }
}
Configuração do componente:
{
"componentName": "script",
"configurations": {
"expression": "output.writeBody([\"pedido\": body.pedido, \"protocolo\": func.generateUuid()]);"
}
}
Resposta:
{
"pedido": { "cliente": "Maria Silva" },
"protocolo": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
Exemplo avançado: calcular a data de vencimento (30 dias a partir de hoje) e adicionar um header customizado na resposta.
Configuração do componente:
{
"componentName": "script",
"configurations": {
"expression": "vencimento = func.addDays(func.getCurrentTimeMillis(), 30); output.addHeader('x-processed-by', 'script'); output.writeBody([\"pedido\": body.pedido, \"vencimento\": func.formatDate(vencimento, 'dd/MM/yyyy')]);"
}
}
Resposta:
{
"pedido": { "cliente": "Maria Silva" },
"vencimento": "19/08/2026"
}
6. Erros Comuns e Troubleshooting
| Erro / Sintoma | Causa provável | Como resolver |
|---|---|---|
| Erro ao iniciar o fluxo, ligado à compilação do script | A sintaxe MVEL da expression está incorreta. | Revisar a sintaxe do código. |
| Erro durante a execução, com a mensagem original do MVEL | O código tentou acessar um campo inexistente em body, ou uma operação inválida. | Revisar os campos usados e testar a lógica com dados de exemplo. |
Funções de func retornam string vazia | Algum parâmetro passado para a função é inválido (ex.: data em formato incorreto). | Revisar os parâmetros passados para a função utilitária usada. |