Correlate a Message
Correlates a message to the process engine to either trigger a message start event or an intermediate message catching event.
Internally this maps to the engine’s message correlation builder methods MessageCorrelationBuilder#correlateWithResult()
and MessageCorrelationBuilder#correlateAllWithResult()
.
For more information about the correlation behavior, see the Message Events section of the BPMN 2.0 Implementation Reference.
Method
POST /message
Parameters
Request Body
A JSON object with the following properties:
Name | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|
messageName | The name of the message to deliver. | ||||||||
businessKey | Used for correlation of process instances that wait for incoming messages. Will only correlate to executions that belong to a process instance with the provided business key. | ||||||||
tenantId | Used to correlate the message for a tenant with the given id. Will only correlate to executions and process definitions which belong to the tenant. | ||||||||
withoutTenantId | A Boolean value that indicates whether the message should only be correlated to executions and process definitions which belong to no tenant or not. Value may only be true , as false is the default behavior. |
||||||||
processInstanceId | Used to correlate the message to the process instance with the given id. Must not be supplied in conjunction with a tenantId . |
||||||||
correlationKeys | Used for correlation of process instances that wait for incoming messages.
Has to be a JSON object containing key-value pairs that are matched against process instance variables during correlation.
Each key is a variable name and each value a JSON variable value object with the following properties.
Note: Process instance variables are the global variables of a process instance. Local variables of child executions (such as in subprocesses) are not considered! |
||||||||
localCorrelationKeys | Local variables used for correlation of executions (process instances) that wait for incoming messages.
Has to be a JSON object containing key-value pairs that are matched against local variables during correlation.
Each key is a variable name and each value a JSON variable value object with the following properties.
Note: Only variable values that are defined in the execution scope are taken into account, without taking outer (parent) scopes. |
||||||||
processVariables | A map of variables that is injected into the triggered execution or process instance after the message has been delivered.
Each key is a variable name and each value a JSON variable value object with the following properties.
| ||||||||
processVariablesLocal | A map of local variables that is injected into the triggered execution or process instance after the message has been delivered.
Each key is a variable name and each value a JSON variable value object with the following properties.
| ||||||||
all | A Boolean value that indicates whether the message should be correlated to exactly one entity or multiple entities. If the value is set to false , the message will be correlated to exactly one entity (execution or process definition). If the value is set to true , the message will be correlated to multiple executions and a process definition that can be instantiated by this message in one go. |
||||||||
resultEnabled | A Boolean value that indicates whether the result of the correlation should be returned or not. If this property is set to true , there will be returned a list of message correlation result objects.
Depending on the all property, there will be either one ore more returned results in the list.
The default value is |
Result
This method returns no content if the property resultEnabled
is set to false
, which is the default value.
Otherwise, a JSON array of the message correlation results will be returned. Each message correlation result has the following properties:
Name | Value | Description |
---|---|---|
resultType | String |
Indicates if the message was correlated to a message start event or an intermediate message catching event.
In the first case, the resultType is ProcessDefinition and otherwise Execution .
|
processInstance | Object |
This property only has a value if the resultType is set to ProcessDefinition .
The processInstance with the properties as described in the get single instance method.
|
execution | Object |
This property only has a value if the resultType is set to Execution .
The execution with the properties as described in the get single execution method.
|
Response Codes
Code | Media type | Description |
---|---|---|
200 | application/json | Request successful. The property resultEnabled in the request body was true . |
204 | Request successful. The property resultEnabled in the request body was false (Default). |
|
400 | application/json | If no messageName was supplied. If both tenantId and withoutTenantId are supplied.
If the message has not been correlated to exactly one entity (execution or process definition), or the variable value or type is invalid, for example if the value could not be parsed to an Integer value or the passed variable type is not supported. See the Introduction for the error response format. |
Example
Request
POST /message
Request Body:
Variant 1:
{
"messageName" : "aMessage",
"businessKey" : "aBusinessKey",
"correlationKeys" : {
"aVariable" : {"value" : "aValue", "type": "String"}
},
"processVariables" : {
"aVariable" : {"value" : "aNewValue", "type": "String",
"valueInfo" : { "transient" : true } },
"anotherVariable" : {"value" : true, "type": "Boolean"}
}
}
Variant 2:
{
"messageName" : "aMessage",
"businessKey" : "aBusinessKey",
"correlationKeys" : {
"aVariable" : {"value" : "aValue", "type": "String"}
},
"processVariables" : {
"aVariable" : {"value" : "aNewValue", "type": "String",
"valueInfo" : { "transient" : true } },
"anotherVariable" : {"value" : true, "type": "Boolean"}
},
"resultEnabled" : true
}
Response
Variant 1:
Status 204. No content.
Variant 2:
[{
"resultType": "ProcessDefinition",
"execution": null,
"processInstance": {
"links": [],
"id": "aProcInstId",
"definitionId": "aProcDefId",
"businessKey": "aKey",
"caseInstanceId": "aCaseInstId",
"ended": false,
"suspended": false,
"tenantId": "aTenantId"
}
}]