Wednesday, July 30, 2008

SOA: Content Based Router Using Mediator

The Content-Based Router examines the message content and routes the message onto a different channel based on data contained in the message. The routing can be based on a number of criteria such as existence of fields, specific field values etc. When implementing a Content-Based Router, special caution should be taken to make the routing function easy to maintain as the router can become a point of frequent maintenance. In more sophisticated integration scenarios, the Content-Based Router can take on the form of a configurable rules engine that computes the destination channel based on a set of configurable rules.

More information on Content Based Router(CBR) can be found here.

The CBR can be implemented either using a Mediator or a BPEL process. Mediator approach would be recommended as it is a light weight component and uses the SOAComposite's runtime unlike BPEL which starts its own runtime. So unless the functionality can't be achieved using a mediator do not go for a BPEL process.

This post explains the implementation of CBR using a Mediator. Will put a separate post on the BPEL implementation later.

Use-case prototyped:
Based on the location where the employee joins the corresponding OnboardingProcess has to be initiated. Say if the employee's location is US then USOnboarding BPEL process has to be initated. If location is US then USOnboardingProcess.

Implementation:

The Employee.xsd schema file is as follows:
In the composite.xml, drag and drop a mediator component.

Select EmpPayload as the input and check the Create Composite Service with SOAP Bindings option. Only when this is enabled you can initiate the mediator component for a SOAP endpoint. Select One-way Interface to make the implementation simple.

Create two BPEL process, one for the US Onboarding and the other for the UK. Link the BPEL processes to the mediator.

Double click and open the CBRouter mediator component.


Set the Filter condition for each of the routing rules by clicking the funnel icon.



















In the expression builder, expand the payload node in the variables section and double click on 'Location'. This is populate the corresponding expression. Then complete the expression by adding ='US' or something appropriate. Then press OK. Repeat the same for the other routing. Now when the mediator is invoked, it will first inspect the payload and evaluate the filter condition. If satisfied, it will route else it will skip.

When you run this Composite with the Location field of the Payload set to US, then the first routing rule in the mediator will be executed resulting in the invocation of the USOnboarding BPEL Process.

You can download the sample application from here.

Please post your queries in the comments section.

Jdeveloper TP4 and integrated SOA Server


Download Jdeveloper Technology Preview 4 from OTN. Unzip the package in your system in such a way that there are no spaces in the path.

For ex. c:\Softwares\Jdeveloper 11g\ ------ this is incorrect
Make sure that java is also installed in a location where there is no spaces in the path.

Download and install Oracle Database XE if don't have one running on your system. You dont require a database if you are not going to configure SOA in the integrated oc4j server.

Follow the instructions mentioned in this pdf to set up the Integrated oc4j server with SOA configured. Before doing this edit \jdev\bin\jdev.conf and remove or comment the last AddVMOption. If you dont do this you wont be able to see the Configure SOA option in the Tools menu.

Sunday, July 27, 2008

EAI Patters in Oracle SOA 11g

Bogi and me are planning to implement some of the EAI Patterns in Oracle SOA Suite 11g. We will be using Oracle Jdeveloper 11g Technology Preview 4 to develop the samples and the SOA configured integrated OC4J server to test the same.

We will be starting with the Message Routing patterns. Bogi has already started working on the Message Filter pattern and he would be writing a post very shortly. I am planning to work on the Content-Based router. Currently I am facing some problem setting up the integrated SOA server on my Leopard OS. Once I am through with that I will also write a post on how to make the SOA server work on a Mac for the Mac users out there. BFN!

What are we up to?

Yep! Yet another blog on technology. For now we are mainly focusing on SOA, ADF Faces and Java. We might move to other technologies as well. This wont be a Complete Reference kind of blog. We are just planning to have simple how to do stuff posts with examples.

Wish us luck! ;)