public interface MessageCorrelationBuilder
A fluent builder for defining message correlation
Modifier and Type | Method and Description |
---|---|
void |
correlate()
Executes the message correlation.
|
void |
correlateAll()
Executes the message correlation for multiple messages.
|
void |
correlateExclusively()
Behaves like
correlate() , however uses pessimistic locking for correlating a waiting execution, meaning
that two threads correlating a message to the same execution in parallel do not end up continuing the
process in parallel until the next wait state is reached |
ProcessInstance |
correlateStartMessage()
Executes the message correlation.
|
MessageCorrelationBuilder |
processDefinitionId(String processDefinitionId)
Correlate the message such that a process definition with the given id is selected.
|
MessageCorrelationBuilder |
processInstanceBusinessKey(String businessKey)
Correlate the message such that the process instance has a business key with
the given name.
|
MessageCorrelationBuilder |
processInstanceId(String id)
Correlate the message such that a process instance with the given id is selected.
|
MessageCorrelationBuilder |
processInstanceVariableEquals(String variableName,
Object variableValue)
Correlate the message such that the process instance has a
variable with the given name and value.
|
MessageCorrelationBuilder |
processInstanceVariablesEqual(Map<String,Object> variables)
Correlate the message such that the process instance has the given variables.
|
MessageCorrelationBuilder |
setVariable(String variableName,
Object variableValue)
Pass a variable to the execution waiting on the message.
|
MessageCorrelationBuilder |
setVariables(Map<String,Object> variables)
Pass a map of variables to the execution waiting on the message.
|
MessageCorrelationBuilder |
tenantId(String tenantId)
Specify a tenant to deliver the message to.
|
MessageCorrelationBuilder |
withoutTenantId()
Specify that the message can only be received on executions or process
definitions which belongs to no tenant.
|
MessageCorrelationBuilder processInstanceBusinessKey(String businessKey)
Correlate the message such that the process instance has a business key with the given name. If the message is correlated to a message start event then the given business key is set on the created process instance.
businessKey
- the businessKey to correlate on.MessageCorrelationBuilder processInstanceVariableEquals(String variableName, Object variableValue)
Correlate the message such that the process instance has a variable with the given name and value.
variableName
- the name of the process instance variable to correlate on.variableValue
- the value of the process instance variable to correlate on.MessageCorrelationBuilder processInstanceVariablesEqual(Map<String,Object> variables)
Correlate the message such that the process instance has the given variables.
variables
- the variables of the process instance to correlate on.MessageCorrelationBuilder processInstanceId(String id)
Correlate the message such that a process instance with the given id is selected.
id
- the id of the process instance to correlate on.MessageCorrelationBuilder processDefinitionId(String processDefinitionId)
Correlate the message such that a process definition with the given id is selected.
Is only supported for correlateStartMessage()
.
processDefinitionId
- the id of the process definition to correlate on.MessageCorrelationBuilder setVariable(String variableName, Object variableValue)
Pass a variable to the execution waiting on the message. Use this method for passing the message's payload.
Invoking this method multiple times allows passing multiple variables.
variableName
- the name of the variable to setvariableValue
- the value of the variable to setMessageCorrelationBuilder setVariables(Map<String,Object> variables)
Pass a map of variables to the execution waiting on the message. Use this method for passing the message's payload
variables
- the map of variablesMessageCorrelationBuilder tenantId(String tenantId)
processInstanceId(String)
or processDefinitionId(String)
.tenantId
- the id of the tenantMessageCorrelationBuilder withoutTenantId()
processInstanceId(String)
or processDefinitionId(String)
.void correlate()
This will result in either:
MismatchingMessageCorrelationException
- if none or more than one execution or process definition is matched by the correlationAuthorizationException
- Permissions.UPDATE
permission on
Resources.PROCESS_INSTANCE
or no Permissions.UPDATE_INSTANCE
permission on
Resources.PROCESS_DEFINITION
.Permissions.CREATE
permission on
Resources.PROCESS_INSTANCE
and no Permissions.CREATE_INSTANCE
permission on
Resources.PROCESS_DEFINITION
.void correlateExclusively()
Behaves like correlate()
, however uses pessimistic locking for correlating a waiting execution, meaning
that two threads correlating a message to the same execution in parallel do not end up continuing the
process in parallel until the next wait state is reached
CAUTION: Wherever there are pessimistic locks, there is a potential for deadlocks to occur. This can either happen when multiple messages are correlated in parallel, but also with other race conditions such as a message boundary event on a user task. The process engine is not able to detect such a potential. In consequence, the user of this API should investigate this potential in his/her use case and implement countermeasures if needed.
A less error-prone alternative to this method is to set appropriate async boundaries in the process model such that parallel message correlation is solved by optimistic locking.
void correlateAll()
This will result in any number of the following:
Note that the message correlates to all tenants if no tenant is specified using tenantId(String)
or withoutTenantId()
.
AuthorizationException
- Permissions.UPDATE
permission on
Resources.PROCESS_INSTANCE
or no Permissions.UPDATE_INSTANCE
permission on
Resources.PROCESS_DEFINITION
.Permissions.CREATE
permission on
Resources.PROCESS_INSTANCE
and no Permissions.CREATE_INSTANCE
permission on
Resources.PROCESS_DEFINITION
.ProcessInstance correlateStartMessage()
This will result in either:
MismatchingMessageCorrelationException
- if none or more than one process definition is matched by the correlationAuthorizationException
- if one process definition is matched and the user has no
Permissions.CREATE
permission on
Resources.PROCESS_INSTANCE
and no
Permissions.CREATE_INSTANCE
permission on
Resources.PROCESS_DEFINITION
.Copyright © 2017. All rights reserved.