Workflow Manual / Version 2512.1
Table Of Contents
Basically a subworkflow is an ordinary workflow started by the task
<ForkSubprocess> within another workflow.
A single <ForkSubprocess> task can start one or multiple subprocesses at once.
Note, that the terms subworkflow and subprocess are used
interchangeably here.
The name of the process to start can be specified either statically in the
subprocess attribute or dynamically as variable in the
subprocessVariable attribute. It is also possible to start multiple
subprocesses in one step, either by specifying an aggregation variable containing
multiple subprocess names or by iterating over an aggregation variable containing
data elements, starting one subprocess per element.
See ForkSubprocess for the full attribute reference.
Subprocesses are always started as separate processes while the main process continues. There are two different modes in which subprocesses may be started:
Attached via
<ForkSubprocess detached="false">(the default)If the main workflow is suspended, resumed or aborted, the subworkflows are suspended, resumed or aborted, too, but it may finish without affecting the subworkflows.
The main workflow may wait for the subprocesses to complete or to be aborted via the
<JoinSubprocess>task. Note, that it is not possible to loop (see Section Section 4.1.5, “Flow Control”) a<ForkSubprocess>and join all subprocesses afterward. Instead, use the ability to start multiple subprocesses in a single<ForkSubprocess>task.Detached via
<ForkSubprocess detached="true">If the main workflow stops, the subworkflows are not affected. Since they are not connected, there is no possibility for the main workflow to wait for the subworkflows to finish.
The <Parameters> child element supports two assignment mechanisms:
<Assign> transfers a single value into a subprocess variable,
while <AssignStruct> assigns multiple values from a
Struct XML. When starting multiple subprocesses, parameter assignments may refer to
the current iteration element or index to pass different values to each subprocess.
See Parameters for details.


