Javascript
Descripción
Sección titulada «Descripción»Este modulo ejecuta código JavaScript personalizado con acceso completo al contexto del workflow. El script debe ser una función asincrona que recibe data (datos de entrada) y ctx (contexto). El contexto incluye acceso a la memoria persistente del workflow (ctx.memory), logger (ctx.logger), moment.js (ctx.moment), lodash (ctx._), y utilidades de parseo JSON. El script se ejecuta en un sandbox vm con un timeout de 10 segundos. Es el modulo mas flexible para lógica de negocio personalizada, permitiendo leer y escribir en la memoria del workflow, manipular datos con lodash, y realizar operaciones asincronas.
Configuración
Sección titulada «Configuración»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| script | code | Si | Función JavaScript asincrona. Formato: async function(data, ctx) { ... return data; }. Tiene acceso a ctx.memory, ctx.logger, ctx.moment, ctx._ (lodash). |
{ "nextModule": "siguiente_modulo", "data": { "count": 3, "timestamp": "2024-01-15T10:30:00+01:00", "processed": true }}Ejemplo de Uso
Sección titulada «Ejemplo de Uso»Caso básico
Sección titulada «Caso básico»{ "script": "async function(data, ctx) {\n const count = await ctx.memory.load('counter') || 0;\n const now = ctx.moment().format();\n await ctx.memory.save('counter', count + 1);\n ctx.logger.info(`Iteracion ${count + 1} a las ${now}`);\n return { count: count + 1, timestamp: now };\n}"}- El script debe ser una función asincrona:
async function(data, ctx) { ... } - Contexto disponible (
ctx):ctx.memory.load(key)— cargar valor de memoria del workflowctx.memory.save(key, value, persistent)— guardar valor en memoriactx.memory.update(key, value)— actualizar valor existentectx.memory.delete(key)— eliminar valor de memoriactx.logger— logger del workflowctx.moment— libreria moment.js para fechasctx._— lodash para manipulación de datosctx.parseMarkdownJsonString— utilidad para parsear JSON de markdown
- El timeout de ejecución es de 10 segundos
- Si el script retorna un objeto con propiedad
data, se usa esa propiedad como salida - Los metadatos
_meta_del input se preservan y se fusionan con los del script - Para expresiones simples sin acceso a contexto, usar evaluateExpression
Nodos Relacionados
Sección titulada «Nodos Relacionados»- evaluateExpression (expresiones simples en sandbox vm2)
- phpRunner (ejecutar código PHP)
- pythonRunner (ejecutar código Python)
- mapFunction (aplicar función a cada elemento de un array)