- Introduction and getting started
- Maestro landing page
- Process modeling
- Process implementation
- Process operations
- Process monitoring
- Process optimization
- Licensing
- Reference information

Maestro user guide
In Maestro BPMN workflows, subprocesses provide a structured way to encapsulate logic and reuse parts of a process. To ensure smooth data flow between activities and across subprocess boundaries, Maestro uses a scoping model similar to lexical scoping in programming languages.
This section explains how variables are accessed within and across subprocesses—whether you need to pass data between activities in the same subprocess, expose internal outputs to a parent process, or retrieve variable values during debugging and runtime.
To access the output of a previous activity within the same subprocess, no additional configuration is required.
foo
sets an output variable called
foo_op
, and a subsequent activity bar
exists
in the same subprocess, bar
can reference foo_op
directly.
Key rule: Variables defined in an activity are accessible to any downstream activity within the same subprocess, including nested elements. You do not need to pass them explicitly as subprocess inputs.
When a parent process needs access to output data from an activity inside a nested subprocess, you can expose that data using one of two approaches.
- In the inner subprocess, define an output variable—for example,
inner_sp_op
—and assign it the value of the internal activity's output (bar_op
). - In the outer subprocess (or parent process), define another output variable—for
example,
outer_sp_op
—and assign it the value of the inner subprocess output (inner_sp_op
). - Downstream activities (e.g.,
qux
) in the parent process can now referenceouter_sp_op
.
- In the inner subprocess, configure the end event to declare an output
variable such as
ee_inner_op
, and assign it the value ofbar_op
. - In the outer subprocess, configure the corresponding end event to declare an
output variable such as
ee_outer_op
, and assign it the value ofee_inner_op
. - Activity
qux
in the parent process can now referenceee_outer_op
.
You can inspect variable values at design time (via the debug API) or runtime (via the instance API) to verify scoping and data propagation.
GET /v1/debug-instances/{instanceId}/variables?parentElementId=outer_subprocess
GET /v1/debug-instances/{instanceId}/variables?parentElementId=outer_subprocess
foo_op
inner_subprocess_op
ee_outer_op
GET /v1/debug-instances/{instanceId}/variables?parentElementId=inner_subprocess
GET /v1/debug-instances/{instanceId}/variables?parentElementId=inner_subprocess
bar_op
ee_inner_op
GET /v1/instances/{instanceId}/variables?parentElementId=outer_subprocess
GET /v1/instances/{instanceId}/variables?parentElementId=outer_subprocess
foo_op
inner_subprocess_op
ee_outer_op
GET /v1/instances/{instanceId}/variables?parentElementId=inner_subprocess
GET /v1/instances/{instanceId}/variables?parentElementId=inner_subprocess
bar_op
ee_inner_op