Invoke Subprocess Activity

This activity is used to invoke an independent subprocess. The activity can also be used to call a remote process (residing in a different MDW application).

If you need to invoke multiple subprocesses (of the same or different process definition), where the number of subprocesses to invoke may be unknown at design time, you can use the Invoke Multiple Subprocesses activity.

Configuration involves specifying the name and version of the subprocess to be invoked, as well as bindings to the input/output parameters of the subprocess.

Smart Subprocess Versioning

With MDW 6 you can use Smart Subprocess Versioning to support greater modularity and encapsulation. This is based on Semantic Versioning rules and conventions. By default MDW Studio automatically infers a Smart Subprocess Version, even if you select a specific version when configuring the caller (although you can turn this off through Window > Preferences > MDW > Process Design > Infer Smart Subprocess/Asset Version Spec).

Here's the way smart versioning works: instead of an exact version you can specify a range of versions that are acceptable to the caller. The syntax is modeled on the OSGi version specifier syntax. Specifically, there are four supported formats:

MDW Studio by default uses the third format behind the scenes. So, for example, if you choose process "SmartProcessChild" and it happens to be version 1.0 as illustrated below, the attribute will be saved as [1.0,2 -- defaulting to an exclusive upper limit of the next major version number.



At runtime the latest process version falling within the designated range will be invoked. If you want to override the default MDW smart version spec, you can type directly into the Asset Selector widget (say, "SmartProcessChild v[1.0" to designate the fourth, or unbounded, version range syntax.

Subprocess Variable Bindings

MDW Studio automatically inspects the parameters defined by the subprocess and pre-populates the variable binding table with parameter names and their modes. Note that the parameter table does not include those variables in the subprocess with "Local" mode.

In general, the binding can be a simple string value, a variable, or a binding expression. A string without '$' or '#' is treated as a static string; otherwise it's treated as an expression (Java Expression would have ${something} or #{something}), with a single variable ('$' followed by variable name) as a special case. The following restrictions apply to specific modes:

See the MDW binding expressions documentation for examples of how to pass input variable values.
Also see Sub-Process Invocations documentation for an explanation of different factors that come into play when invoking a sub process using the InvokeSubProcessActivity activity.