Business Process Execution Language

This is an old revision of this page, as edited by 200.27.221.195 (talk) at 20:12, 16 November 2005 (See also). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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 (e.g., C, C#, and Java), 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 and Siebel Systems submitted BPEL4WS 1.1 to OASIS for standardization via the Web Services BPEL Technical Committee. Although BPEL4WS appeared as both a 1.0 and 1.1 version, the OASIS WS-BPEL technical committee voted 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.

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 represents an effort in the process of standardization in JSR 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
  • ADONIS business process management toolkit by BOC GmbH supports the visual modelling of BPEL and provides seamless interfaces eg to the Oracle BPEL Process Manager.
  • 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 orchestration 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. See Microsoft_BizTalk_Server
  • 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)
  • 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
  • Digité Process Composer - a intuitive, scalable, J2EE based WYSIWIG BPEL engine.
  • Fiorano SOA Platform - BPEL Enginge - Fastest way to SOA.
  • FiveSight PXE - an open source, modular BPEL engine with a focus on reliability and flexibility. Downloads and documentation are available at pxe.fivesight.com.
  • FuegoBPM - includes a BPEL engine and BPEL modeling tools as part of its commercial Business Process Management suite.
  • IBM BPWS4J - downloadable from the IBM alphaWorks Web site. 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-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, 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
  • PolarLake Integration Suite - Enterprise Service Bus product includes BPEL engine with graphical editor (available from PolarLake)
  • SAP NetWeaver Exchange Infrastructure - SAP's platform for process integration and enterprise service support. This includes a BPEL engine with graphical editor (available from SAP).
  • 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).

See also

Standards

Engines and implementations

BPEL and business process sites

BPEL articles