Correlation is a construct for keeping track of a group of messages that belong together in one particular business partner interaction. Correlation matches messages and interactions with the business process instances they are intended for.
When a BPEL engine receives a message, it determines if it should create either a process instance or match an already-running process. The data within a correlation set is the signature that lets the engine match the message to the process expecting that message. You can add correlation to receive, pick, reply, invoke, and coordinate event handler activities for this purpose.
To use correlation, consider the following:
Determine what activities need to be correlated. These activities should share one or more pieces of common data.
Define one property that identifies the piece of common data.
Define property aliases, a different one for each piece of common data in each activity that needs to be correlated.
Create a correlation set that contains the property and property aliases.
Add the correlation set to the activities being correlated.
As an example, for each correlation set, create a data property, such as
customerId
. For each message being correlated, create a property alias for a message part, such as a Receive's message part named
CustID
, an Invoke's input message part named
customerNum
, and so on.
Alternately, you can use an engine-managed correlation policy assertion, described in
Engine-Managed Correlation
.
The steps for adding correlation to a process are shown in the following illustration.