Overview
Inside a BPMN process, every node, including subprocess, integration workflow, AI agent, business rule, and user task, reads from and writes to a shared store of process variables (also called process instance data in code). This page explains the mental model: where each node type’s output lands, and how the next node, or a user task screen, reads it. For the configuration syntax of any specific mapping, follow the links to the dedicated pages.The mental model
A process variable is a key on the process instance data store. Every node configures:- Input mapping: which existing process variables to send into the node, or how to compute them.
- Output mapping or key name: where the node’s output is written back into the process variables.
Choose the right pattern
The Receive Message Task pattern (workflows)
This is the part most people miss the first time. When a process triggers an integration workflow with Start Integration Workflow, the process must wait for the workflow to finish before reading its output. To wait, place a Receive Message Task after the Send Message Task that triggers the workflow.Add a Send Message Task
Add a Receive Message Task immediately after
Read the result downstream
Reading process variables downstream
Once a value is in process variables, the way you reference it depends on where you are reading from:- In another node’s input mapping (Send Message Task action, agent input, etc.): use the placeholder syntax documented on that node’s page. Example for workflow input mapping: select
customer.idas the source path in Input Mapping, or write${customer.id}with Legacy mapping turned on (see Start Integration Workflow → Input mapping). - In a subprocess’s Data Mapper: use
${variableName}against the subprocess’s defined Input Parameters. The Data Mapper is the canonical interface for parent ↔ subprocess data flow (see Data mappers). - In a business rule script: read from
input(the keys you mapped in) and write tooutputviaoutput.put("keyName", value). See Business rule action. - In a gateway condition: reference the same process variables to choose a path.
- In a user task screen: bind UI components to process data. The value flows automatically once the variable exists in process instance data.
End-to-end example
A loan-onboarding process that uses an integration workflow to fetch a credit score, then an AI agent to extract data from an uploaded document, then a user task to confirm the final summary.User uploads document on a user task
loan.documentId.Send Message Task triggers a credit-check integration workflow
loan.customerId.Receive Message Task waits for the workflow
creditCheck. When the workflow completes, the response lands there in process variables.Service Task calls the document-extraction agent
loan.documentId. Output mapping writes the extracted fields to loan.extracted.Final user task displays the summary
creditCheck and loan.extracted. They render automatically because both keys now exist in process variables.Common pitfalls
Reading a workflow result before the Receive Message Task
Reading a workflow result before the Receive Message Task
Output key collision
Output key collision
creditCheck, addressVerification) instead of generic ones (result, data).Wrong placeholder prefix
Wrong placeholder prefix
${processInstanceData.customer.id} resolves to nothing at runtime: placeholders in an action’s JSON message read process data from its root, so write ${customer.id}. Subprocess Data Mappers use ${variableName}. Follow the syntax shown on each node’s page.Expecting a synchronous result back to an external HTTP caller
Expecting a synchronous result back to an external HTTP caller
Related resources
Data mappers
Start Integration Workflow
BPMN integration with agents
Business rule action
input and write to output
