- Overview
- Process modeling
- BPMN
- Process implementation
- Process operations
- Process monitoring
- Process optimization
- Reference information

Maestro user guide
Sub-processes and modularity
Sub-processes support model clarity by grouping related activities into a single reusable structure. They help reduce diagram complexity, isolate business logic, and encourage reuse.
- Only call activities are supported.
- The sub-process must be modeled as a separate diagram.
- The calling process passes input and receives output via defined parameters.
A call activity references a sub-process defined elsewhere in the project or environment. It behaves like a reusable function. call activities improve process modeling by:
- Reducing duplication across diagrams
- Isolating reusable logic (e.g., approvals, validations, dispatching)
- Keeping the main diagram concise
- Supporting consistent behavior across process variants.
- Model the sub-process as its own standalone diagram.
- In the parent diagram, insert a call activity.
- Link the call activity to the sub-process.
- Configure input and output variables to exchange data.
Use case: An onboarding workflow uses the same Collect Documents sub-process in both employee and vendor onboarding processes. Instead of duplicating steps, a call activity is added in each parent process referencing the same sub-process.
- Give sub-processes meaningful business names (e.g., Verify Contract Terms).
- Document input/output parameters and their expected usage.
- Keep sub-processes focused on a single responsibility or outcome.
- Avoid designing sub-processes with assumptions about the parent context.
Sub-process and call activity names should:
- Use business language, not technical terms
- Describe the outcome (e.g., Collect Customer Data, not Form Step 2)
- Reflect what the sub-process accomplishes, not how.
- Expanded sub-processes (i.e., inline sub-processes) are not supported. All sub-processes must be modeled as separate diagrams and invoked using Call Activities.
- Ad-hoc sub-processes are not supported.
- Implicit variable sharing is not supported. Data must be explicitly mapped through input/output bindings.
Sub-processes support multi-instance markers, where each element is executed multiple times. The elements that can be marked as multi-instance are all task types except for sub-processes.
Category | Attributes | How to use/access |
---|---|---|
OuterSP - Get Contact Information for each user | InputCollection | var.GetUsers |
OuterSP - Get Contact Information for each user | Iterator Item | iterator.item.gid |
InnerSP - Get all emails for each contact | InputCollection | iterator[0].item.contactArray |
InnerSP - Get all emails for each contact | Iterator Item | iterator[1].item.ContactId |
Send Email | InputCollection | iterator[1].item.EmailArray |
Send Email | Iterator Item | iterator[2]item.emailAddress |
For more details about the BPMN elements supported in Maestro, see BPMN support.