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.
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
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
-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