Saltearse al contenido

SubWorkflow

El modulo SubWorkflow permite ejecutar otro workflow como un sub-proceso dentro del flujo actual. Soporta tres modos de ejecucion: sincronico (espera el resultado antes de continuar), asincronico (lanza y continua sin esperar) y paralelo (ejecuta multiples instancias si el input es un array). Puede heredar el estado del workflow padre (workflowState) para compartir contexto entre flujos. Cada ejecucion genera una instancia hija con trazabilidad completa, registrando la relacion padre-hijo en la base de datos. Es ideal para reutilizar logica de workflow, dividir flujos complejos en sub-procesos manejables o ejecutar operaciones en lote.

ParametroTipoRequeridoDescripcion
workflow_idworkflow_selectorSiSelecciona el workflow que se ejecutara como sub-proceso.
execution_modeselectSiModo de ejecucion: sync (esperar resultado), async (fire & forget), parallel (multiples instancias). Por defecto: sync.
pass_statebooleanNoPasa el workflowState actual al sub-workflow. Por defecto: true.
input_datacode_editorNoDatos JSON o variables a enviar como input al sub-workflow. Soporta variables dinamicas.
timeout_msnumberNoTiempo maximo de espera en modo sincronico (0 = sin limite). Por defecto: 30000.
{
"nextModule": "siguiente_modulo",
"data": {
"resultado_del_subworkflow": "valor"
}
}
{
"nextModule": "siguiente_modulo",
"data": {
"child_instance_id": "sub_workflow123_abc123",
"workflow_id": 456,
"workflow_name": "Proceso de envio",
"status": "launched",
"message": "Sub-workflow lanzado en modo asincronico"
}
}
{
"nextModule": "siguiente_modulo",
"data": {
"mode": "parallel",
"total": 3,
"success_count": 2,
"error_count": 1,
"results": [
{ "index": 0, "success": true, "instance_id": "sub_wf_abc_0", "data": {} },
{ "index": 1, "success": true, "instance_id": "sub_wf_abc_1", "data": {} }
],
"errors": [
{ "index": 2, "success": false, "instance_id": "sub_wf_abc_2", "error": "mensaje" }
]
}
}
{
"label": "Sub Workflow",
"workflow_id": "123",
"execution_mode": "sync",
"pass_state": true,
"input_data": "",
"timeout_ms": 30000
}
  • En modo sync, el flujo padre espera a que el sub-workflow termine antes de continuar.
  • En modo async, el flujo padre continua inmediatamente. El sub-workflow se ejecuta en background con setImmediate.
  • En modo parallel, si el input es un array, se lanza una instancia del sub-workflow por cada elemento. La concurrencia se limita a 5 instancias simultaneas por defecto.
  • Si pass_state es true, el workflowState del padre se hereda al sub-workflow.
  • Si input_data esta vacio, se usa el data de entrada del nodo actual.
  • Cada instancia hija se registra en la tabla workflowinstances con referencia al padre.
  • El estado de cada instancia hija se actualiza automaticamente (completed/failed).
  • Si el workflow especificado no existe o no pertenece al mismo cliente, se retorna un error.
  • Soporta variables dinamicas en input_data.
  • Iterator - alternativa para procesamiento paralelo de arrays
  • Decision - para decidir que sub-workflow ejecutar
  • End - nodo final del sub-workflow