Enriching and forwarding with the Oracle Enterprise Service Bus – tutorial in AMIS SOA Series
Many integration patterns involve messages being received, transformed, enriched and sent onwards. The Oracle Enterprise Service Bus supports most of these patterns and operations, but not all of them in a very straightforward manner. For enriching a message from an ESB Service and then sending it to another than the enriching adapter service is not a trivial task.
However simple this scenario, the Oracle ESB has no trivial way of implementing the enrichment of an incoming message. There has been some discussion on the OTN Forums (http://forums.oracle.com/forums/thread.jspa?threadID=455872&tstart=0) and there is a sample available on OTN that shows some of the desired end-result, but it is a little unclear how that is put together. In this article, we will look at a detailed implementation of the message enrichment scenario, as described above.
See for the entire tutorial: Enriching and Forwarding with Oracle ESB.
Our organization daily receives many orders for different products from hundreds of customers from all over the country. These orders are sent by our dealers, via FTP, every file containing a single order. The order contains limited information: the customer id, a product id and an indication of the number of specimens of the product the customer wants to receive.
We have to ensure that all orders are received by all potentially
involved departments in our company, among which is the Shipping
Department. They will have to ship the ordered products to the
customer, as expediently as possible – as speed is our middle name!
We use the Oracle Enterprise Service Bus (ESB) to get hold of the
Orders that are received in files, and send them onwards in the
required format. The ESB provides the File Adapter that makes it very
easy to poll for files and turn every file we receive into an ESB
Service instance. The ESB Service can easily transform the message into
a format that we can then deliver to the Shipping Department’s API we
have to invoke for delivering the Order.
Simple enough, you would say.
Piece of cake for the ESB. Our scenario has a little catch though: the order as we receive it only contains three numbers: customer id, product id and quantity. However, the Shipping Department does not deal in Customer Ids. It needs to have a shipping address! So it is our challenge to turn the Customer Id into a set of Customer data, including the Customer’s Shipping Address. After enriching the message with that data, we can forward it to the Shipping Department. We can use a Database View from which we can query the customer data, based on the customer id.
However simple this scenario, the Oracle ESB has no trivial way of implementing the enrichment of an incoming message. There has been some discussion on the OTN Forums (http://forums.oracle.com/forums/thread.jspa?threadID=455872&tstart=0) and there is a sample available on OTN that shows some of the desired end-result, but it is a little unclear how that is put together. In this article, we will look at a detailed implementation of the message enrichment scenario, as described above. The end result will look like this:
Here we have the ESB Service invoke one service to return a piece of information that is added to the message-in-transit that is then sent to another Service.
It is not as simple as it may look at first. The tutorial contains a complete, step by step description of how to get this service implemented .
- AMIS Query on Oracle Enterprise Service Bus, Oracle WebServices Manager, SOA & BPEL. …and not about JBoss
- AMIS Query on WebService Security and Administration using the Oracle WebServices Manager – and sneak preview of the Enterprise Service Bus
- Oracle SOA Suite: further Build and Deployment Automation for Enterprise Service Bus components
- Oracle Enterprise Service Bus (ESB) – A First Impression (and it's not bad at all!)
- Configuring Oracle Enterprise Service and JDeveloper 10.1.3.1 on Windows – Create a JDeveloper connection to the ESB