Wednesday, February 13, 2013

BPEL for dummies

In no time there will be a book in this title. Since it's not there yet, I thought may be I should write a blog post.

Folks at our office were discussing about how wonderful it'd be to have faster merchant provisioning. The most irritating thing about the vendors who have products and services to sell via other on-line traders is they have varying needs with regard to the information they need once a sale is done. One might want to know customer's name. Address and product he bought and another might want to know customer's wedding anniversary date since they like to send a card! Well, things are not that extreme, but you get the point. In other words, vendors have different APIs and we have to feed the information accordingly. When a vendor comes to us with his loads of goods and his API, we need to first wire our system with his API so that we can start selling his goods. The little problem here is it takes more time than we like to do the wiring. Can we do it in a faster way?

Using a ESB can be the solution of having to deal with different technologies.

Enterprise Service Bus (ESB)

ESB makes it possible to connect services implemented in different technologies (such as EJBs, messaging systems, CORBA components, and legacy applications) in an easy way. An ESB can act as a mediator between different, often incompatible protocols and middleware products.

But still, how can we speed up the process of giving the vendors what they want?

A little reading on the subject had me thinking BPEL. Can it solve our problem?


What is BPEL?

As per Wikipedia, Business Process Execution Language (BPEL), short for Web Services Business Process Execution Language (WS-BPEL) is an OASIS standard executable language for specifying actions within business processes with web services.

In other words as “Business Process Execution Language for Web Services” put it, BPEL (Business Process Execution Language for Web Services, also WS-BPEL, BPEL4WS) is a language used for composition, orchestration, and coordination of web services. It provides a rich vocabulary for expressing the behavior of business processes.

The main goal of BPEL is to standardize the process of automation between web services.

Say company A purchasing something from company B. BPEL allows this interaction to be described easily such that company B can provide a Web Service and company A can use it with a minimum of compatibility issues.

Within enterprises, BPEL is used to standardize enterprise application integration and extend the integration to previously isolated systems. Between enterprises, BPEL enables easier and more effective integration with business partners. BPEL stimulates enterprises to further define their
business processes, which in turn leads to business process optimization, reengineering, and the selection of the most appropriate processes, thus further optimizing the organization. Definitions of business processes described in BPEL do not influence existing systems. BPEL is the key technology in environments where functionalities already are or will be exposed via web services.
With increases in the use of web service technology, the importance of BPEL will rise further.

“BPEL Cookbook” has this to say about BPEL.
BPEL was created to address the requirements of composition of web services in a service-oriented environment. It is one of the key standards accelerating the adoption of SOA.
BPEL is not only commoditizing the integration market, but it is also offering organizations a whole new level of agility—the ability to rapidly change applications as per changing business landscape. BPEL enables organizations to automate their business processes by orchestrating services within and
across the firewall. It forces organizations to think in terms of services. Existing functionality is exposed as services. New applications are composed using services. Communication with external vendors and partners is done through services. Services are reused across different applications.

With BPEL we can define simple and complex business processes. To a certain extent, BPEL is similar to traditional programming languages. It offers constructs, such as loops, branches, variables, assignments, etc. that allow us to define business processes in an algorithmic way.
BPEL is a specialized language focused on the definition of business processes. Therefore, on one hand it offers constructs, which make the definition of processes relatively simple. On the other hand, it is less complex than traditional programming languages, which simplifies learning.

To see how the code actually looks like visit the specification of the standard at http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html

History

BPEL4WS was first conceived in 2002 with the release of the BPEL4WS 1.0 specification, a joint effort by IBM, Microsoft, and BEA. This document proposed an orchestration language inspired by previous variations, such as IBM’s Web Services Flow Language (WSFL) and Microsoft’s XLANG specification.
Joined by other contributors from SAP and Siebel Systems, version 1.1 was released less than a year later, in 2003. WS-BPEL 2.0 was released in 2007 as an OASIS standard.


BPEL Servers

BPEL servers provide a run-time environment for executing BPEL business processes. Some of the known names are,
Commercial
  • Oracle BPEL Process Manager
  • Microsoft BizTalk
  • Cape Clear Orchestration Studio
Open-source
  • Apache ODE
  • Open ESB

Apache ODE
Apache ODE (Orchestration Director Engine) executes business processes written following the WS-BPEL. It talks to web services, sending and receiving messages, handling data manipulation and error recovery as described by the process definition.

Open ESB
Project Open ESB implements an Enterprise Service Bus (ESB) runtime using Java Business Integration (JBI) as the foundation. This allows easy integration of web services to create loosely coupled enterprise class composite applications.

After Oracle and Sun Microsystems merging, OpenESB Community has been created to maintain, improve, promote and support OpenESB.

BPEL design and development tools

These tools enable graphical development of BPEL processes. Some tools come bundled with the BPEL servers.
I find these tools to be the best part. They provide a nice canvas for us to draw our process on without messing around with boring XMLs.
Eg: Eclipse Plugin :BPEL Designer


For some not-for-dummies details visit “BPEL or ESB: Which should you use?”

-References
  • BPEL Cookbook: Best Practices for SOA-based integration and composite applications development , 2006, Packt Publishing
  • Business Process Execution Language for Web Services, Second Edition , 2006, Packt Publishing , Matjaz B. Juric
  • Web Services Business Process Execution Language Version 2.0 , OASIS Standard , 2007


No comments:

Post a Comment