SubWorkflow
Descripcion
Sección titulada «Descripcion»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.
Configuracion
Sección titulada «Configuracion»Parametros
Sección titulada «Parametros»| Parametro | Tipo | Requerido | Descripcion |
|---|---|---|---|
| workflow_id | workflow_selector | Si | Selecciona el workflow que se ejecutara como sub-proceso. |
| execution_mode | select | Si | Modo de ejecucion: sync (esperar resultado), async (fire & forget), parallel (multiples instancias). Por defecto: sync. |
| pass_state | boolean | No | Pasa el workflowState actual al sub-workflow. Por defecto: true. |
| input_data | code_editor | No | Datos JSON o variables a enviar como input al sub-workflow. Soporta variables dinamicas. |
| timeout_ms | number | No | Tiempo maximo de espera en modo sincronico (0 = sin limite). Por defecto: 30000. |
Modo sync
Sección titulada «Modo sync»{ "nextModule": "siguiente_modulo", "data": { "resultado_del_subworkflow": "valor" }}Modo async
Sección titulada «Modo async»{ "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" }}Modo parallel
Sección titulada «Modo parallel»{ "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" } ] }}Ejemplo de Uso
Sección titulada «Ejemplo de Uso»Caso basico
Sección titulada «Caso basico»{ "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 consetImmediate. - 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_statees true, el workflowState del padre se hereda al sub-workflow. - Si
input_dataesta vacio, se usa el data de entrada del nodo actual. - Cada instancia hija se registra en la tabla
workflowinstancescon 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.