Ir al contenido

Programación de Workflows (Schedule)

El sistema de Schedule permite que los workflows se ejecuten automáticamente en intervalos definidos utilizando expresiones cron. Internamente, el sistema utiliza la libreria node-schedule para gestionar los jobs programados.

Esto es útil para tareas recurrentes como generar reportes, sincronizar datos con sistemas externos, enviar correos periodicos o ejecutar procesos de mantenimiento.


  1. En el editor de workflows, activar la propiedad active_schedule: true.
  2. Definir la expresion cron en el campo schedule.
  3. El workflow debe tener un nodo Start como trigger (no un nodo Webhook).
  4. Al guardar el workflow, el workflowManager registra el job automáticamente.

Una vez configurado, el workflow se ejecutará automáticamente según la frecuencia definida en la expresion cron, sin necesidad de intervención manual.


Las expresiones cron se componen de 5 campos separados por espacios:

Formato de expresión cron

CaracterSignificado
*Cualquier valor
,Lista de valores (ej: 9,18 = 9 y 18)
-Rango de valores (ej: 1-5 = lunes a viernes)
/Incremento (ej: */5 = cada 5 unidades)

ExpresionDescripción
* * * * *Cada minuto
*/5 * * * *Cada 5 minutos
*/15 * * * *Cada 15 minutos
0 * * * *Cada hora (en el minuto 0)
0 9 * * *Diario a las 9:00 AM
0 9,18 * * *Dos veces al dia (9:00 AM y 6:00 PM)
0 9 * * 1-5Lunes a viernes a las 9:00 AM
0 0 * * 0Cada domingo a medianoche
0 0 1 * *Primer dia de cada mes a medianoche
0 8 1 1 *1 de enero a las 8:00 AM
30 2 * * *Diario a las 2:30 AM

El sistema proporciona las siguientes funciones para gestionar los workflows programados:

Carga todos los workflows con schedule activo al iniciar el servidor. Se ejecuta automáticamente durante el arranque del sistema.

Recarga un workflow especifico sin necesidad de reiniciar el servidor. Útil cuando se modifica la expresion cron o se activa/desactiva el schedule de un workflow individual.

Obtiene las proximas ejecuciones programadas para uno o varios workflows. Recibe un arreglo de IDs y un limite de resultados. Útil para mostrar al usuario cuando se ejecutará su workflow.

Los jobs programados se almacenan en memoria del proceso de Node.js. Esto significa que no persisten entre reinicios del servidor. Sin embargo, al iniciar el servidor, loadScheduledWorkflows() se encarga de recargar todos los jobs activos desde la base de datos.


  • Cada ejecución programada genera un workflowId único, lo que permite rastrear cada instancia de forma independiente.
  • El workflow se ejecuta como si fuera un trigger manual, es decir, sin query params ni datos de webhook.
  • El nodo Start proporciona los datos iniciales que se hayan configurado en el workflow.
  • Si la ejecución anterior del mismo workflow aun esta en curso cuando llega el siguiente intervalo, se lanza una nueva instancia en paralelo. No se espera a que termine la anterior.

Delay dentro del workflow - Diferencia con Schedule

Sección titulada «Delay dentro del workflow - Diferencia con Schedule»

Es importante no confundir el Schedule con el nodo Delay:

CaracteristicaScheduleDelay
FunciónInicia workflows nuevos periódicamentePausa un workflow en un punto especifico
AlcanceCrea nuevas instancias de ejecuciónAfecta solo la instancia actual
ConfiguraciónExpresion cron en el workflowFecha/hora o duración en el nodo
GestionworkflowManager y node-scheduledelayMonitorService
  • El nodo Delay pausa la ejecución de un workflow en un punto especifico del flujo.
  • Programa la reanudación en una fecha y hora futura.
  • Utiliza el delayMonitorService para gestionar la reanudación del flujo cuando se cumple el tiempo configurado.
  • El estado del workflow se persiste para que pueda reanudarse incluso si el servidor se reinicia.

En resumen: el Delay pausa UN flujo que ya esta en ejecución, mientras que el Schedule INICIA flujos nuevos de forma periodica.


Este ejemplo muestra un workflow que genera y envia un reporte de ventas diario de lunes a viernes a las 9:00 AM:

Start (schedule: "0 9 * * 1-5")
-> SQL Query (obtener datos del dia)
-> DataTransform (formatear reporte)
-> SendMail (enviar reporte)
-> End

Descripción de cada paso:

  1. Start: Se ejecuta automáticamente de lunes a viernes a las 9:00 AM.
  2. SQL Query: Ejecuta una consulta SQL para obtener los datos de ventas del dia anterior.
  3. DataTransform: Formatea los datos en una estructura adecuada para el reporte (tablas, totales, etc.).
  4. SendMail: Envia el reporte por correo electronico a los destinatarios configurados.
  5. End: Finaliza la ejecución del workflow.

Este ejemplo muestra un workflow que consulta una API externa cada 30 minutos y guarda los datos nuevos:

Start (schedule: "*/30 * * * *")
-> HTTP (consultar API externa)
-> Decision (hay datos nuevos?)
-> true: Iterator (procesar cada registro)
-> DataStore (guardar)
-> false: End
-> Merge
-> End

Descripción de cada paso:

  1. Start: Se ejecuta automáticamente cada 30 minutos.
  2. HTTP: Realiza una petición a la API externa para obtener datos actualizados.
  3. Decision: Evalua si la respuesta contiene datos nuevos que deban procesarse.
  4. Iterator: Si hay datos nuevos, itera sobre cada registro individualmente.
  5. DataStore: Guarda cada registro en la base de datos.
  6. Merge: Une las ramas del flujo (true/false) para continuar hacia el final.
  7. End: Finaliza la ejecución del workflow.