BPEL
|
In computer science, the programming language known as Business Process Execution Language (BPEL), as serialized in XML, aims to enable programming in the large. The concepts of programming in the large and programming in the small distinguish between the two aspects of writing the type of long-running asynchronous processes that one typically sees in business processes.
Programming in the large can refer to programming code that represents the high-level state transition logic of a system. This logic encodes information such as when to wait for messages, when to send messages, when to compensate for failed non-ACID transactions, etc. Programming in the small, in contrast, deals with short-lived programmatic behavior. often executed as a single ACID transaction and which allows access to local logic and resources such as files, databases, etc. BPEL's development came out of a realization that programming in the large and programming in the small required two different languages.
As numerous "small" programming languages already existed (for example: C_programming_language, C_Sharp_programming_language, Java_programming_language, etc.), computer scientists felt no need to introduce another. But it turned out that IBM and Microsoft both had their own, fairly similar, 'programming in the large' languages, WSFL and XLang respectively. So IBM and Microsoft decided to combine their languages into a new language, BPEL4WS. In April 2003, BEA Systems, IBM, Microsoft, SAP AG and Siebel Systems submitted BPEL4WS 1.1 to OASIS for standardization via the Web Services BPEL Technical Committee (http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsbpel). Although BPEL4WS appeared as both a 1.0 and 1.1 version, the OASIS WS-BPEL technical committee voted (http://www.choreology.com/external/WS_BPEL_issues_list.html#Issue98) on 14 September 2004 to name their spec WS-BPEL 2.0. This change in name and version number reflects the significant and in many cases incompatible differences between BPEL4WS 1.1 and WS-BPEL 2.0.
Contents |
The BPEL language
BPEL's focus on modern business processes, plus the histories of WSFL and XLANG, led BPEL to adopt web services as its external communication mechanism. Thus BPEL's messaging facilities depend on the use of the web services description language WSDL 1.1 to describe outgoing and incoming messages.
In addition to providing facilities to enable sending and receiving messages, the BPEL programming language also supports:
- A property-based message-correlation mechanism
- XML and WSDL typed variables
- An extensible language plug-in model to allow writing expressions and queries in multiple languages: BPEL supports Xpath 1.0 by default
- Structured-programming constructs including if-then-elseif-else, while, sequence (to enable executing commands in order) and flow (to enable executing commands in parallel)
- A scoping system to allow the encapsulation of logic with local variables, fault-handlers, compensation-handlers and event-handlers
- Serialized scopes to control concurrent access to variables
Adding Programming in the Small Support to BPEL
BPEL's control structures such as 'if-then-elseif-else' and 'while' as well as its variable manipulation facilities depend on the use of 'programming in the small' languages to provide logic. All BPEL implementations must support Xpath 1.0 as a default language. But the design of BPEL envisages extensibility so that systems builders can use other languages as well. BPELJ (http://ftpna2.bea.com/pub/downloads/ws-bpelj.pdf) represents an effort in the process of standardization in JSR 207 (http://www.jcp.org/en/jsr/detail?id=207) to enable Java to function as a 'programming in the small' language within BPEL.
BPEL engines
Implementers of the standard have developed several BPEL engines, including:
- Active Endpoints ActiveWebflow Server - a complete BPEL engine running either on top of a J2EE application server or standalone with a web servlet container (such as Tomcat).
- ActiveBPEL Engine - a comprehensive BPEL runtime environment. Written in Java, ActiveBPEL Engine gets distributed as an open-source technology released under the GPL
- ActiveWebflow Designer - an Eclipse-based visual BPEL designer
- bexee BPEL Execution Engine - an open source, J2EE-based BPEL engine and an environment for further development and experimentation in the area of business process modeling (BPM)
- Biztalk Server - Microsoft's third generation messaging and orchesration engine now is BPEL compliant, following the company's work with IBM (and others) to create BPEL; formerly, the product was based on Microsoft's proprietary XLANG grammar
- Cape Clear Orchestrator - a complete ESB containing an Eclipse-based visual BPEL editor, enterprise BPEL engine (persistent, fault-tolerant, clusterable), web-based management console and data transformation tools (available from Cape Clear (http://www.capeclear.com/products/))
- Collaxa BPEL Orchestration Server - a complete BPEL engine running on top of a J2EE application server. (Oracle Corporation recently acquired this product.) Version 2 has a GUI Designer for BPEL in Eclipse as well as in Oracle's JDeveloper IDE
- FiveSight PXE - a modular BPEL engine with a focus on reliability and flexibility
- IBM BPWS4J - downloadable from the IBM alphaWorks Web site (http://www.alphaworks.ibm.com). Like other alphaWorks software, BPWS4J has the status of emerging technology.
- IBM WebSphere Business Integration Server Foundation (Version 5.1 as of 2004) - a complete BPEL engine running on top of the WebSphere Application Server platform. It includes extensions like support for human interaction and runs on a variety of server platforms such as Linux and z/OS. IBM has corresponding Eclipse (http://www.eclipse.org)-based development tools for BPEL, such as the WBI Modeler and WebSphere Studio Application Developer Integration Edition (to become part of the Rational Application Developer family starting in 2005).
- OpenLink Virtuoso Universal Server - downloadable from the OpenLink Software Web site (http://virtuoso.openlinksw.com/), with an integrated BPEL engine.
- OpenStorm ChoreoServer - a BPEL engine running on top of the Microsoft Windows .NET platform
- Oracle BPEL Process Manager - a BPEL engine running on top of the Oracle Application Server
- Parasoft BPEL Maestro - a BPEL engine which includes a graphical editor
- SeeBeyond eInsight BPM - supports the creation and execution of BPEL-compliant business processes. eInsight leverages the SeeBeyond ICAN framework, based on a J2EE application server, to provide a robust business-process capability that includes a BPMN-compliant graphical process designer, a Java and XSLT IDE, the ability to connect to nearly any system, and more
- Twister - the first open source implementation of the WS-BPEL standard (LGPL). Twister supports the SOA pattern as well as direct human participants' interaction (work list).
External links
Standards
- OASIS WSBPEL TC Webpage (http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsbpel)
- OASIS WSBPEL TC Issues List (http://www.choreology.com/external/WS_BPEL_issues_list.html)
- Latest editor's copies of OASIS WSBPEL TC Specs (http://cvs.sourceforge.net/viewcvs.py/wsbpeltc/)
- The BPEL4WS 1.1 specification (http://www-106.ibm.com/developerworks/webservices/library/ws-bpel/)
Engines and implementations
- Active Endpoints ActiveWebflow Server (http://www.active-endpoints.com/products/activewebflow/index.html?wiki)
- ActiveBPEL Open Source BPEL Engine (http://www.activebpel.org?wikipedia)
- bexee BPEL Execution Engine (http://bexee.sourceforge.net)
- Microsoft Biztalk Server (http://www.microsoft.com/biztalk/default.mspx)
- FiveSight PXE (http://www.fivesight.com/pxe.shtml)
- IBM BPEL4J (http://www.alphaworks.ibm.com/tech/bpws4j)
- IBM WBI Server Foundation (http://www.ibm.com/software/integration/wbisf)
- OpenLink Virtuoso Universal Server (http://virtuoso.openlinksw.com/)
- OpenStorm ChoreoServer (http://www.openstorm.com/)
- Oracle BPEL Process Manager (http://otn.oracle.com/bpel)
- Parasoft BPEL Maestro (http://www.parasoft.com/jsp/products/home.jsp?product=BPEL&itemId=113)
- SeeBeyond eInsight BPM (http://seebeyond.com/software/einsight.asp)
- Twister (http://www.smartcomps.org/twister)
- Cape Clear Orchestration Studio (BPEL Editor and Engine and ESB) (http://www.capeclear.com/products/)
BPEL and business process sites
- Business Process Management Initiative Web Site (http://www.bpmi.org/)
- BPELSource.com BPEL Resource Guide (http://www.bpelsource.com/)
BPEL articles
- Oracle Article: Weaving Web Services Together (http://www.oracle.com/technology/oramag/oracle/04-jul/o44dev_web.html)
- BPEL for Programmers and Architects (http://www.fivesight.com/downloads/BPEL4ProgArchies.pdf)
- A Short BPEL Tutorial (http://www.smartcomps.org/confluence/pages/viewpage.action?pageId=182)
- BPEL Loan Approval Tutorial (http://www.capescience.com/education/tutorials/cc6/BPELLoanApprovalTutorial.pdf)
- The Promise of Portable Business Processes (http://ftpna2.bea.com/pub/downloads/BPEL4WS_WSJ.PDF)
- BPEL and Java (http://www.theserverside.com/news/thread.tss?thread_id=33279)
- Process-centric realization of SOA: BPEL moves into the limelight (http://www.findarticles.com/p/articles/mi_m0MLV/is_11_4/ai_n7071401/pg_1)da:BPEL