For example consider the integration scenario illustrated in the figure below.
The integration features mentioned in the above diagram can be achieved by Oracle Service Bus and also Oracle BPEL. So which one to chose depends on multiple factors.
a. Does application B changes its end points frequently?
b. Do you need a extensive transformation capabilities between xml files , binaries and texts or across each of them ?
c. Are you looking for a Asynchronous two way communication between your service and applications.?
d. Are you in need of automatic service load balancing ( note : just not node lode balancing given by cluster)?
e. How is the integration between these systems change in the future? Is the logic going to change too dynamically or is it going to get too detailed ( complex) or does it going to expand by interacting with many more applications.?
f. and Of course the licensing details.
The below table illustrates the features of integration that OSB is better than BPEL. If your integration scenario has priority over the below features then you should prefer OSB.
Oracle Service Bus offers additional ( specific features that BPEL does not) features such as
1. Built in features to generate reports and dashboards.
2. Define SLA's and trigger alerts based on them.
3. Service-artifacts dependancy tracking.
4. Ability to use MFL and Xquery.
5. Developing the orchestration at the run time using console.
Lets now see the features that Oracle BPEL is expert at -
As described above,you should tend to using BPEL when your focus in on orchestration ( ahh this same old thing every blog said but just true !!) and on more back and forth interaction with SCA components and SOAP services.
The following are the features which both Oracle BPEL and OSB provides ( although each of them provides few features in better ways than the other)
1. Support to various transport/message protocols
such as - HTTP, SOAP, REST, JMS, File, FTP, SMTP, IMAP, POP
Note : OSB has an minor edge in protocol support in two way
a. More protocols are supported.
b. OSB exposes JMS, File, FTP as direct transport versus via adapter which (probably) offers higher performance as adapters is another level of logic to access the same.
2. Support to Technology/Application/Packaged adapters.
3. Interaction with Message oriented middleware ( Queues, Topics etc)
4. Cluster support.
5. Content / Header based routing.
6. Transformation ( XSLT in BPEL , XQUERY/XSLT/MFL in OSB.)
7. Calling Java code. ( Java embedding in BPEL and Java callout in OSB)
8. Dynamic routing based on business logic.
-via ws addressing changes to partner links in BPEL and dynamic Routing node in OSB
9.Calling external services ( Business services / service callout in OSB , partner links in BPEL)
The features you want to enable in your integration may seem to be achieved by using either of the components -OSB or BPEL. However a thin line can be drawn when you have a detailed look at the additional capabilities that you want to have along with the basic features.Those features may not be a part of current requirements but may be in the future. A true architect should be able to visualize those and make sure that the right component is picked in the first go.