Javascript
Descripcion
Sección titulada «Descripcion»Este modulo ejecuta codigo JavaScript personalizado con acceso completo al contexto del workflow. El script debe ser una funcion 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 logica de negocio personalizada, permitiendo leer y escribir en la memoria del workflow, manipular datos con lodash, y realizar operaciones asincronas.
Configuracion
Sección titulada «Configuracion»| Parametro | Tipo | Requerido | Descripcion |
|---|---|---|---|
| script | code | Si | Funcion 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 basico
Sección titulada «Caso basico»{ "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 funcion 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 manipulacion de datosctx.parseMarkdownJsonString— utilidad para parsear JSON de markdown
- El timeout de ejecucion 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 codigo PHP)
- pythonRunner (ejecutar codigo Python)
- mapFunction (aplicar funcion a cada elemento de un array)