Saltar al contenido principal

Script

1. Visión General​

El componente Script (script) ejecuta un fragmento de código personalizado (en el lenguaje de expresión MVEL) dentro del flujo, permitiendo lógica que los componentes listos de la plataforma no cubren — cálculos específicos, formato de fechas, generación de identificadores, entre otros.

Úsalo cuando la lógica necesaria es demasiado simple para justificar un componente dedicado, pero va más allá de lo que un Add Variable o Choice pueden expresar. Evita abusar de Script para lógica de negocio compleja — eso dificulta el mantenimiento del flujo por parte de quien no conoce el lenguaje MVEL.

2. Prerrequisitos​

Conocimiento básico del lenguaje MVEL (parecido a Java) para escribir la expresión.

3. Autenticación y Conexión​

No aplica — procesamiento local.

4. Configuración / Operaciones Soportadas​

El componente tiene una única operación: ejecutar el código configurado.

CampoObligatorioTipoDescripciónEjemplo
expressionSíTexto (código MVEL)Código que será ejecutado. Dentro de él están disponibles: body (el cuerpo del mensaje, como objeto si es JSON), headers (los headers del mensaje), variables (variables definidas por un Add Variable anterior, si las hay), output (objeto usado para definir el resultado, con output.writeBody(...) y output.addHeader(clave, valor)), y func (funciones utilitarias listas, ver abajo).Un script que calcula un valor y lo escribe en el output

Funciones utilitarias disponibles en func​

FunciónDescripción
func.getCurrentTimestamp() / func.getCurrentTimestamp(zonaHoraria)Devuelve la fecha/hora actual.
func.getCurrentTimeMillis()Devuelve la hora actual en milisegundos.
func.formatDate(timestamp, patron)Formatea una fecha/hora según el patrón informado.
func.addDays(timestamp, dias)Suma días a una fecha.
func.base64Encode(texto) / func.base64Decode(texto)Codifica/decodifica en Base64.
func.md5(texto) / func.sha256(texto)Genera hash MD5/SHA-256 de un texto.
func.generateUuid()Genera un identificador único (UUID).
func.fromStorage(ambito, clave)Lee un valor grabado en el Local Storage.
func.fromEnv(clave)Lee una variable de entorno de la plataforma.

5. Ejemplos Prácticos​

Ejemplo simple: generar un identificador único y agregarlo al cuerpo del mensaje.

Entrada:

{
"pedido": { "cliente": "Maria Silva" }
}

Configuración del componente:

{
"componentName": "script",
"configurations": {
"expression": "output.writeBody([\"pedido\": body.pedido, \"protocolo\": func.generateUuid()]);"
}
}

Respuesta:

{
"pedido": { "cliente": "Maria Silva" },
"protocolo": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

Ejemplo avanzado: calcular la fecha de vencimiento (30 días a partir de hoy) y agregar un header personalizado en la respuesta.

Configuración del 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')]);"
}
}

Respuesta:

{
"pedido": { "cliente": "Maria Silva" },
"vencimento": "19/08/2026"
}

6. Errores Comunes y Troubleshooting​

Error / SíntomaCausa probableCómo resolverlo
Error al iniciar el flujo, relacionado con la compilación del scriptLa sintaxis MVEL de expression es incorrecta.Revisar la sintaxis del código.
Error durante la ejecución, con el mensaje original de MVELEl código intentó acceder a un campo inexistente en body, o a una operación inválida.Revisar los campos usados y probar la lógica con datos de ejemplo.
Las funciones de func devuelven una cadena vacíaAlgún parámetro pasado a la función es inválido (ej.: fecha en formato incorrecto).Revisar los parámetros pasados a la función utilitaria usada.