Saltearse al contenido

Javascript

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.

ParametroTipoRequeridoDescripcion
scriptcodeSiFuncion 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
}
}
{
"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 workflow
    • ctx.memory.save(key, value, persistent) — guardar valor en memoria
    • ctx.memory.update(key, value) — actualizar valor existente
    • ctx.memory.delete(key) — eliminar valor de memoria
    • ctx.logger — logger del workflow
    • ctx.moment — libreria moment.js para fechas
    • ctx._ — lodash para manipulacion de datos
    • ctx.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
  • evaluateExpression (expresiones simples en sandbox vm2)
  • phpRunner (ejecutar codigo PHP)
  • pythonRunner (ejecutar codigo Python)
  • mapFunction (aplicar funcion a cada elemento de un array)