Correlation is a process that matches incoming messages to a particular BPEL process instance. Synchronous BPEL does not require correlation. Correlation is only required for asynchronous BPEL processes.
Oracle BPEL Process Manager automatically establishes correlation using WS-Addressing. However, manual content-based correlation is required if the asynchronous service doesn't support WS-Addressing or the BPEL message is coming from an external system.
Oracle BPEL Processor Manager has the following two methods for correlating asynchronous callback messages to the calling instance.
WS-Addressing
Correlation sets
One needs to write a manual correlation for the following scenarios:
Calling service does not support WS-Addressing.
When the asynchronous call has multiple layers. For example, Service A calls B, B calls C, and C Calls D. Response comes from D to A (instead of D to C to B to A). Another option in this scenario is to manipulate the replyTo header without implementing custom correlation.
Creating a Correlation set
A correlation set is a set of properties shared by all messages in the correlated group. These properties must be defined in a WSDL file imported into the BPEL process.
The first step is to create a correlation set. In order to create a correlation set, first click on the Correlation icon (up and down green arrow icon) on the JDeveloper, as shown in the following screenshot. Second, click on the green plus sign on the Correlation Sets window, as shown in the following screenshot that will open the Create Correlation Set window. Third, enter the Name and click on OK. Another option to create a correlation set is to create it from Invoke and Receive activities.
Associating the Correlation set
In JDeveloper, double-click on the Receive activity on BPEL on the Design view as shown in step 1 of the preceding screenshot. It will launch the Edit Receive window, as shown in the following screenshot. Click on the Correlations tab and populate the Correlation Set and Initiate values, as shown in steps 2 and 3 of the following screenshot. Click on OK.