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. | 
| List<MessageCorrelationResult> | correlateAllWithResult()Executes the message correlation for multiple messages and returns a list of message correlation results. | 
| 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. | 
| MessageCorrelationResult | correlateWithResult()Executes the message correlation and returns a  MessageCorrelationResultobject. | 
| MessageCorrelationBuilder | localVariableEquals(String variableName,
                   Object variableValue)Correlate the message such that the execution has a local variable with the given name and value. | 
| MessageCorrelationBuilder | localVariablesEqual(Map<String,Object> variables)Correlate the message such that the execution has the given variables as local variables. | 
| 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 localVariableEquals(String variableName, Object variableValue)
Correlate the message such that the execution has a local variable with the given name and value.
variableName - the name of the local variable to correlate on.variableValue - the value of the local variable to correlate on.MessageCorrelationBuilder localVariablesEqual(Map<String,Object> variables)
Correlate the message such that the execution has the given variables as local variables.
variables - the local variables of the execution 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()
#correlateWithResult()}MessageCorrelationResult correlateWithResult()
MessageCorrelationResult object.
 The call of this method will result in either:
MessageCorrelationResult.getResultType().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()
#correlateAllWithResult()}List<MessageCorrelationResult> correlateAllWithResult()
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 © 2018. All rights reserved.