Receive tasks are tasks which references a message. They are used to wait until a proper message is received.
When a receive task is entered then a corresponding message subscription is created. The process instance stops at this point and waits until the message is correlated.
A message can published using one of the Zeebe clients. When the message is correlated, the receive task gets completed and the process instance continues.
An alternative to receive tasks are message intermediate catch events which behaves the same but can be used together with event-based gateways.
A message can be referenced by one or more receive tasks. It must define the name of the message (e.g.
Money collected) and the
correlationKey expression (e.g.
Usually, the name of the message is defined as a static value (e.g.
order canceled), but it can also be defined as expression (e.g.
= "order " + awaitingAction). The expression is evaluated on activating the receive task and must result in a
correlationKey is an expression that usually accesses a variable of the process instance that holds the correlation key of the message. The expression is evaluated on activating the receive task and must result either in a
string or in a
In order to correlate a message to the receive task, the message is published with the defined name (e.g.
Money collected) and the value of the
correlationKey expression. For example, if the process instance has a variable
orderId with value
"order-123" then the message must be published with the correlation key
By default, all message variables are merged into the process instance. This behavior can be customized by defining an output mapping at the receive task.
A receive task with message definition: