Friday 14 October 2011

What is Oracle ESB - Enterprise Service Bus

n real life, a bus makes people travel. A bus helps people reach from one place to another. In similar way, ESB facilitates messages/data to move from one system to another.
Note:- This article is my understanding of how Oracle ESB could add value to your business, hence this is not a statement of direction of product.
A real life bus does not discriminate between the race, cast or the age of the person, all the passengers and their luggage is classified as physical entity that can be carried from one place to another.
Similarly, an ESB does not discriminate between different type of systems that wish to send or receive messages, regardless of whether their interfaces are file based(csv etc), xml based or database tables, or message driven. It means a bus can receive data in any/most formats/technologies.

Having said so, a real life bus doesn't transform its passengers, but in case of ESB, it can transform the message format from one format to another. Accordingly, you can say that ESB provides some additional services in comparison to a real life bus.

The real life bus operates on a route, similarly ESB has its own boundaries, which is the enterprise. All internal systems within enterprise and external systems(trading partners) can connect to ESB server(subject to firewall & security etc), in order to send and receive messages.

So, now we know that ESB, is a bus, that provides services and it operates at enterprise level. Lets do some common Q&A.

I find BPEL and ESB to be confusing and overlapping in functionalities, as to where they fit in?
Lets look at the current model in Oracle EBS, whereby documents are sent and received via XML Gateway.
Following happens currently in Apps World
  1. Your trading partner posts a payables invoice - to XML Gateway Server [using one of the supported protocols]
  2. XML Gateway transforms the message using XML Message Map[this tool is proprietary technology]
  3. Invoice is then loaded using api and approved with help of Oracle Workflow
In my opinion, steps 1 &2 above fit into ESB layer, whereas step 3 will fit into BPEL.

Still some Confusion?
Nothing stops you to achieve all the steps 1,2 &3 in BPEL itself. For example, you can have a bpel process in which the first step publishes a WSDL[service] to which payables invoices can be posted. However, BPEL is heavyweight and ESB is lightweight. Think of it with current mindset, would you use Oracle Workflows to merely send a message from one system to another?. Hence we need to recognise how ESB and BPEL can compliment one another.


Isn't it a tedious process to define message mappings between two message formats? Can't we simply write program to transform formats?
Its not tedious when done with Oracle ESB. If you design all your systems to use a common naming convention, then most of the mappings can be generated automatically. What impressed about Oracle ESB was that automated mapping in Oracle ESB works at nested level too.


So lets see how Oracle ESB may integrate with fusion applications:-
1. System A and system b will not exchange data directly. This will happen via ESB. For example A-->ESB-->B
2. Transformation of messages will happen within ESB
3. As of today's date, there is no publish-subscription model in ESB(may be I am mistaken). But one can hope that Oracle will integrate its current Business Event/Subscriptions within ESB layer.
4. The current widespread practice of writing message transformation routines in PL/SQL will become a thing of past. Why program it when the tool does this for you. Hence all XML message maps(thoseXGM files of xml gateway) will be replaced by routing rules/mappings of Oracle ESB.


What will not happen in ESB?
1. Just as we think ESB will replace XML Gateway, it appears obvious that BPEL will replace Oracle Workflow. Hence approval processes will be designed in BPEL.
2. Although ESB will still be used to integrate point-to-point services,but service orchestrations will happen in BPEL. Which means, if you have a process that involves various different services to be integrated within a business process, then BPEL will be used to design and implement such process.


BPEL and ESB overlap is still confusing, can we have some example where both ESB and BPEL fit together?Lets take a scenario, whereby a new employee joins
1. You have Oracle HRMS, whereby a person joins your Organization
2. A business event is raised and a message of employee information is transmitted to the ESB Server.
3. ESB transmits the message to different systems within enterprise, like computer network security, mail server, gate-security(for security pass), restaurant discount system etc. Just making the other systems aware of a message can be done within ESB, as all we are doing is transmitting the message securely over enterprise bus.
4. This ESB process, could also integrate with a BPEL process which will coordinate the following
     A. This person gets registered on the purchasing system for say approval limits. If required, their GL Security codes could also be set.
     B. Consumes the service of pension department
     C. Manages/approves security card access to certain buildings/areas within organization.
     D. Registers the individual with company's benefits like accidental insurance policies and health insurance. Approval process can be in place to define and approve the levels for insurance cover.

As you can see, a persons termination could also involve various different systems within the enterprise.


A question on this scenario. Big deal, all this can be co-ordinated by Oracle Workflow notification process.
Well, not really. At the best it can send notifications, receive responses, update oracle tables, raise events, and may be even update different systems via java stored procedures.But there won't be much visibility as integration with other systems is limited.
This is where BPEL fits in, as it can interact with all the different systems using web-services, which are open standard. Once a web-service is consumed, it then becomes headache of the third party system to either use JDBC or PL/SQL or COBOL or whatever to amend their system.


Well, this works only if all the other systems are service enabled?
True to an extent, but remember ESB provides different adaptors. Just having an ESB/BPEL may not be enough to service enable your Enterprise.
But in ideal world, enterprises should be moving to service enable all their systems for easy integration with the bus.

No comments:

Post a Comment

xslt padding with characters call template for left pad and right pad

  Could a call-template be written that took two parameters ?   a string, and a   number) return the string with empty spaces appended t...