loading table of contents...

4.1.10. Subworkflows

Basically a subworkflow is an ordinary workflow started by the task <ForkSubprocess> within another workflow. The subworkflow may be passed parameters via the subelements of the <Parameters> element.

A subworkflow is always started as a separate process, while the main process continues. There are two different ways in which a subworkflow may be started:

  • Synchronously via <ForkSubprocess detached="false">

  • If the main workflow is suspended, resumed or aborted, the subworkflow is suspended, resumed or aborted, too, but it may finish without affecting the subworkflow.

  • The main workflow may wait for the subprocess 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 afterwards. Use recursion in this case so that each subworkflow starts exactly one subworkflow.

  • Asynchronously via <ForkSubprocess detached="true"> or simply <ForkSubprocess>

  • If the main workflow stops, the subworkflow is not affected. Since they are not connected, there is no possibility for the main workflow to wait for the subworkflow to finish.