Thursday, January 17, 2013

How to set the service endPoint URI dynamically in SOA Suite 11gR1 :

Use Case :
This example demonstrates how to get the URI of the backend service from a repository and how to set it dynamically to our partnerLink (dynamicPartnerLink).


Implementation steps :
1. Create a dvm file.
2. Create a BPEL component
3. Add the endPointURI variable and assign the uri
4. Set the endpointURI property in the invoke activity


1. Create a DVM file :

In order to define our repository, we are going to use DVM (Data Value Maps) :




For more explanation regarding DVM, you should read this :
http://docs.oracle.com/cd/E14571_01/integration.1111/e10224/med_dvm.htm



2. Create a BPEL Component :

First you need to implement the simple bpel process like this :
- The AssignPayload is used to set the inputvariable of our invoke activity.
- The AssignEndpointURI is used to dynamically set the endPointURI variable from our DVM repository
- The invoke activity to call the external service


3. Add the endPointURI variable and assign the URI :


Then you need to add the endPointURI variable in our BPEL process :


The AssignEndpointURI activity should be like this:



After the AssignEndpointURI step, our endPointURI is populated and we are going to use it on the invoke1 activity :


4. Set the endpointURI property in the invoke activity

The Invoke activity offers a property named "endpointURI". Set our $endPointURI variable previously created as value.



And now you just have to test it with OEM.

Thanks

2 comments:

  1. Thanks a lot for this post.....

    ReplyDelete
  2. We implemented a solution very similar to this about 18 months ago.

    This has been very helpful in managing the environment without requiring redeployment of services.

    ReplyDelete


View Sylvain Grosjean's profile on  LinkedIn