











Signup for Training
- Atlanta, GA Dec 3-5
- Melbourne, AU, Dec 9-11
- New York Dec 10-12
- Brussels, BE, Dec 16-18
- Washington, DC, Dec 17-19
More trainings...
Intalio|BPMS Webinars
- Nov 20, 2008 1 PM EST
- Nov 21, 2008 1PM EST
- Nov 26, 2008 10 AM GMT
- Dec 5, 2008 10 AM PST
- Dec 9, 2008 1 PM EST
- Dec 11, 2008 1 PM EST
- Dec 19, 2008 10 AM PST
- Dec 30, 2008 10 AM PST
- Jan 13, 2009 10 AM PST
- Jan 15, 2009 1 PM EST
- Feb 3, 2009 10 AM PST
- Feb 12, 2009 1 PM EST
- Feb 17, 2009 10 AM PST
- Mar 10, 2009 10 AM PST
- Mar 12, 2009 1 PM EST
- Mar 24, 2009 10 AM PST
Login
Who's online?
- (jloge@ebsco.com)
- Alexander Stuckenholz (alexander.stuckenholz)
- chris robson (chris.robson)
- Deepa Tekumalla (deepa.tekumalla)
- gianni naccio (gianni.naccio)
- Guerman Smirnov (guerman.smirnov)
- Ilo Rivero (ilo.rivero)
- Leonardo Lopes (leonardo.lopes)
- Leonardo Saraiva (leonardo.saraiva)
- manindra mallick (manindra.mallick)
- Marcin Urbanski (marcin.urbanski)
- Milos Vacek (milos.vacek)
- nie pin (nie.pin)
- Oleg Pozdnyakov (o.pozdnyakov)
- Pavel Lekhanov (lehanov)
- Ravinderjit Singh (ravinderjit.singh)
- Tamara Dobrynina (tamara.dobrynina)
- Teo Bon (teo.bon)
- Wael Soliman (wael.soliman)
Samples-5.1
Explicit Correlation Explicit Correlation
explicitcorrelation 04/02/2008,05:33 21.16 Kb
Description:
This use case illustrates the functionality of setting correlation explicitly using correlation sets. In this sample one process invokes the other and both remain in "InProgress" state until and unless their appropriate values are correlated.
Brief Overview Of Correlation:
Correlation: At the start of a Business Process, a new process instance is created and it lives for the lifetime of the business process. Since there might be multiple business-process instances active at the same time in the BPEL Engine, all messages sent to the business process have to be delivered to the correct business process instance. As the multiple business-process instances are active at the same time, business-application-specific data available in the exchanged messages are used to maintain references to specific business process instances. This idea of associating business-application-specific data found in the messages to maintain references to specific business process instances is termed BPEL Correlation.
Or in a single phrase we can also say that Correlation provides a way to associate an arbitrary number of messages with each other,
Now these messages can be provided in two ways i.e.Implicitly (Sequence binding)
Explicitly (Correlation sets)
Implicit Correlation: These are the correlations that are not defined by the user but are created by the Intalio|Bpms Server. The only thing that is required is to associate a unique session identifier with every partner link instance. When a message is sent on a partner link, the session identifier is sent along with the message. The recipient is then able to use the received session identifier in subsequent communications with the process instance. Messages received by the BPEL engine that have a session identifier are routed to the correct instance (and partner link) by that session identifier.
Explicit Correlation: These are the correlations that are defined by the user. The user needs to create the correlation sets for the process. One element of the message is matched against the value in the process instance to ensure that message is routed to the right one.
Three basic requirements to set up explicit correlation are:
1. Message Properties (<bpel:property>): Messages exchanged by the partner services in a BPEL usually contain business-application-specific or application-specific data which are used by the business processes. Message Properties defined in the WSDL file using the WSDL extensibility element mechanism, create an association between relevant business-application-specific data to a name that can have an important role to play in the global context of the business process and can therefore be used for Correlation. Since these message properties are mapped to multiple messages, it makes sense to name them with global property names.
2. Property Alias (<bpel:propertyAlias>): Property Aliases are used to map properties to messages.Message parts contain
business-application-specific properties. A property alias maps a specific property to a specific element or attribute in a message part. Once defined, it is possible to use the property name as an alias for the message part and the location of the property within the message. Property Aliases are defined in the WSDL file using the WSDL extensibility element
mechanism.
3. Correlation Sets: Correlation sets are used to tie together a partner conversation and are used to associate messages
with business processes. A set of properties shared by all exchanged messages and used for correlation is called a
Correlation Set. Each correlation set has a name. A message can be related to one or more correlation sets.
Use case dependencies
Correlation.xsd: Schemas used is of "complex" type.
Requirements
1. Intalio|BPMS Server-5.1.1
2. Intalio|BPMS Designer-5.1.1
Process Download & Import
1. Download 'ExplicitCorrelation.zip'.
2. Go to File > Import...
3. In Import wizard, select 'Existing Projects into Workspace', click on Next >
4. Select the "Select archive file" radio button.
5. Browse to select the downloaded archive file.
6. Click on Finish.
7. Update project builders by right click on project; go to BPMS Designer Tools > Update BPMS Builders.
* Please follow these below instructions to remake the process
Preconditions
-
Make sure Intalio|BPMS Server is up and running fine.
-
Make sure the Process Explorer pane does not contain any Intalio|BPMS Business Process Project with same name.
Steps to remake the process
- Go to File > New, select "Intalio|BPMS Business Process Project".
- Provide project name as "ExpliciCorrelation", click on Finish.
- Right click on the project; go to New > "Business Process Diagram".
- Provide File name as "ExplicitCorrelation", and click to finish.
- A pool with a task is available in BPMN Editor Pane, name default pool as 'Client' and task as 'send1'.
- Right click on Client pool and select "Set pool non executable".
- Focus on send1 task in Client pool, a sequence flow icon will be available on boundary of the task, drag the outgoing sequence flow icon from "send1" task and release mouse control to select the option "Connect to a new Task", name the task as "send2".
- Add new pool by click on BPMN Editor (select "Add Pool" option from pop up menu) and name it as "CallClient".
- Focus on send1 task in Client pool, drag the out going message icon from boundary and release mouse control onto CallClient pool to select the option "Connect to a new Task", name the task as "receive1".
- Focus on receive1 task in CallClient pool, a sequence flow icon will be available on boundary of the task, drag the outgoing sequence flow icon from "receive1" task and release mouse control to select the option "Connect to a new Task", name the task as "send3".
- Focus on send3 task in CallClient pool, a sequence flow icon will be available on boundary of the task, drag the outgoing sequence flow icon from "send3" task and release mouse control to select the option "Connect to a new Task", name the task as "receive2".
- Focus on send2 task in Client pool, drag the out going message icon from boundary and connect to "receive2" task in "CallClient" Pool.
- Repeat step 6, but name the pool as "CallServer".
- Focus on send3 task in CallClient pool, drag the out going message icon from boundary and release mouse control onto CallServer pool to select the option "Connect to a new Task", name the task as "receive3".
- Focus on receive3 task in CallServer pool, a sequence flow icon will be available on boundary of the task, drag the outgoing sequence flow icon from "receive3" task and release mouse control to select the option "Connect to a new Task", name the task as "receive4".
- Repeat step 8 & 6, but name the pool as "Server".
- Focus on pool, a pop menu will be available; select "Add Task" to add onto the Server pool and name the task as "send4".
- Focus on send4 task in Server pool, drag the out going message icon from boundary and connect to "receive4" task in "CallServer" Pool.
- Import schema files from zip file into the project (You can also create your own schema from File > New > Other > XML > XML Schema).
- Drag and drop Correlation.xsd > tns:Message1 schema node on to incoming message flow from "send1" task to "receive1" task.
- A message "Set schema element 'Message1' as the content of the message" will prompt you, click on it.
- Drag and drop Correlation.xsd > tns:Message2 schema node on to incoming message flow from "send2" task to "receive2" task.
- A message "Set schema element 'Message2' as the content of the message" will prompt you, click on it.
- Drag and drop Correlation.xsd > tns:Message3 schema node on to incoming message flow from "send3" task to "receive3" task.
- A message "Set schema element 'Message3' as the content of the message" will prompt you, click on it
- Drag and drop Correlation.xsd > tns:Message4 schema node on to incoming message flow from "send4" task to "receive4" task.
- A message "Set schema element 'Message4' as the content of the message" will prompt you, click on it & save the process model.
Defining Correlation in Data Editor
- Expand "CallClient" dependencies provided in right panel of Data Editor , right click on namespace: xmlns:this="http://thisdiagram/CallClient" and select Create <bpel:property>.
- Change the property name from "prop" to "Name", click to Create.
- Expand CallClient node in left panel of Data Editor, right click on declarations and select "Create CorrelationSet".
- Provide name as "name-corr", click to Create.
- Drop bpel-property 'this:Name' from dependencies onto the correlation set 'name-corr'.
Note: Save your diagram and close if it does not appear under the 'name-corr' node. Reopen. - Expand "$thisReceive1RequestMsg"->body->Name-> text: string, right click on it and select "Create <bpel:propertyAlias>".
- Change bpel:propertyAlias propertyName from "this:prop" to "this:Name".
- Repeat step 7-8 for "$thisReceive2RequestMsg".
- Expand sequence > receive1 >, dnd name-corr correlation set onto "incoming for $thisReceive1RequestMsg(this:receive1Request) node.
- Change the statement <bpel: correlation set="name-corr"></bpel:correlation>, by select Edit and add initiate="yes" to it and click to Apply.
- The statement should be available as: bpel: correlation set="name-corr" initiate="yes"></bpel:correlation>
- Expand sequence > receive2 >, dnd name-corr correlation set onto "incoming for $thisReceive2RequestMsg(this:receive2Request) node.
- Change the statement <bpel: correlation set="name-corr"></bpel:correlation>, by select Edit and add initiate="no" to it and click to Apply.
- The statement should be available as: bpel: correlation set="name-corr" initiate="no"></bpel:correlation>
- Save the process.
- Expand "CallServer" dependencies provided in right panel of Data Editor , right click on
namespace: xmlns:this="http://thisdiagram/CallServer" and select Create <bpel:property>. - Change the property name from "prop" to "Name2", click to Create.
- Expand CallServer node in left panel of Data Editor, right click on declarations and select "Create CorrelationSet".
- Provide name as "name-corr2", click to Create.
- Drop bpel-property 'this:Name2' from dependencies onto the correlation set 'name-corr2'.
- Expand "$thisReceive3RequestMsg"->body->Name-> text: string, right click on it and select "Create <bpel:propertyAlias>".
- Change bpel:propertyAlias propertyName from "this:prop" to "this:Name2".
- Repeat step 7-8 for "$thisReceive4RequestMsg".
- Expand sequence > receive3 >, dnd name-corr2 correlation set onto "incoming for $thisReceive3RequestMsg(this:receive3Request) node.
- Change the statement <bpel: correlation set="name-corr2"></bpel:correlation>, by select Edit and add initiate="yes" to it and click to Apply.
- The statement should be available as: bpel: correlation set="name-corr2" initiate="yes"></bpel:correlation>
- Expand sequence > receive4 >, dnd name-corr correlation set onto "incoming for $thisReceive4RequestMsg(this:receive4Request) node.
- Change the statement <bpel: correlation set="name-corr2"></bpel:correlation>, by select Edit and add initiate="no" to it and click to Apply.
- The statement should be available as: bpel: correlation set="name-corr2" initiate="no"></bpel:correlation>
- Save the process.
Defining Outgoing Mapping
- Make sure Mapper view is visible (go to Windows > Show View > Mapper).
- In the process model select "send3" task.
- Click on "$thisReceive1RequestMsg.body" node in left side of mapper and then click on "$callServerReceive3RequestMsg.body" node in right side of mapper which will make an association.
- Now your process is fully implemented to and is valid to deploy and execute within Intalio|BPMS Server.
Process Deployment & Execution
- Click on Deploy Project to Intalio|BPMS Server button in tool bar.
- Make sure you select all runtime files while exporting to Intalio|BPMS Server.
- Click on Finish button.
- Open a web browser, provide url as: http://localhost:8080/bpms-console which takes to login screen for bpms-console.
Login with the following credentials:
username: 'admin' (without quotes).
password: 'changeit' (without quotes). - In the processes list you should see
"ExplicitCorrelation:CallClient"
"ExplicitCorrelation:CallServer"
processes with a package name "ExplicitCorrelation", select "ExplicitCorrelation:CallClient" and click to Start. - This should generate a form with label "receive1Request", two input fields to map two input data.
- Type 'intalio' in Name field and '21' in Age field then click on Submit button.
- This will replace the page with an output like "ok: ".
Note: State of 'ExplicitCorrelation:CallClient' and 'ExplicitCorrelation:CallServer' changes to 'InProgress' state. - Click on Instances link, select "CallServer[v4]" and click to Invoke.
- This should generate a form with label "receive4Request", two input fields to map two input data.
- Type 'intalio' in Name field and 'present' in Status field then click on Submit button.
- This will replace the page with an output like "ok: ".
Note: State of 'CallServer[v4]' changes to 'Completed' state. - Similarly, you can execute other process "CallClient[v4]" and the process will get Completed.
