Business Process Execution Language
From Free net encyclopedia
In computing, Business Process Execution Language BPEL, (pronounced 'bipple'), is a business process language that grew out of of WSFL and XLANG, is serialized in XML, and aims to enable programming in the large. The concepts of programming in the large and programming in the small distinguish between two aspects of writing the type of long-running asynchronous processes that one typically sees in business processes.
Programming in the large generally refers to the high-level state transition interactions of a process—BPEL refers to this concept as an Abstract Process. A BPEL Abstract Process represents a set of publicly observable behaviors in a standardized fashion. An Abstract Process includes 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 involving access to local logic and resources such as files, databases, etc. BPEL's development came out of the notion that programming in the large and programming in the small required different types of language.
While numerous "small" programming languages already exist (e.g., COBOL, C, C#, and Java), there have so far been few languages targeted specifically at programming in the large. IBM and Microsoft had each defined their own, fairly similar, 'programming in the large' languages, WSFL and XLANG, respectively. IBM and Microsoft decided to combine these 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. If you are not discussing a specific version, “BPEL” is sufficient.
There is no standard graphical notation for WS-BPEL, as the OASIS technical committee decided this was out of scope. Some vendors have invented their own notations. An informal mapping from BPMN to BPEL 1.1 is also available.
Contents |
BPEL Design Goals
There were ten original design goals associated with BPEL:
- Goal 1: Define business processes that interact with external entities through Web Service operations defined using WSDL 1.1, and that manifest themselves as Web services defined using WSDL 1.1. The interactions are “abstract” in the sense that the dependence is on portType definitions, not on port definitions.
- Goal 2: Define business processes using an XML based language. Do not define a graphical representation of processes or provide any particular design methodology for processes.
- Goal 3: Define a set of Web service orchestration concepts that are meant to be used by both the external (abstract) and internal (executable) views of a business process. Such a business process defines the behavior of a single autonomous entity, typically operating in interaction with other similar peer entities. It is recognized that each usage pattern (i.e. abstract view and executable view) will require a few specialized extensions, but these extensions are to be kept to a minimum and tested against requirements such as import/export and conformance checking that link the two usage patterns.
- Goal 4: Provide both hierarchical and graph-like control regimes, and allow their use to be blended as seamlessly as possible. This should reduce the fragmentation of the process modeling space.
- Goal 5 : Provide data manipulation functions for the simple manipulation of data needed to define process data and control flow.
- Goal 6: Support an identification mechanism for process instances that allows the definition of instance identifiers at the application message level. Instance identifiers should be defined by partners and may change.
- Goal 7: Support the implicit creation and termination of process instances as the basic lifecycle mechanism. Advanced lifecycle operations such as "suspend" and "resume" may be added in future releases for enhanced lifecycle management.
- Goal 8: Define a long-running transaction model that is based on proven techniques like compensation actions and scoping to support failure recovery for parts of long-running business processes.
- Goal 9: Use Web Services as the model for process decomposition and assembly.
- Goal 10: Build on Web services standards (approved and proposed) as much as possible in a composable and modular manner.
The BPEL language
BPEL is an orchestration language, not a choreography language. The primary difference between orchestration and choreography is scope. A choreography model provides a larger scope, encompassing all parties and their associated interactions (e.g. a peer to peer model). An orchestration model is between two participants (specifically focusing on the view of one participant).
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
What's new in WS-BPEL 2.0
- New activity types (if-then-else, repeatUntil, validate, forEach, extensionActivity)
- Completion condition in forEach activity
- Variable initialization
- XSLT for variable transformations (New XPath extension function bpws:doXslTransform)
- XPath access to variable data (XPath variable syntax $variable[.part]/location)
- XML schema variables in Web service activities (for WS-I doc/lit style service interactions)
- Locally declared messageExchange (internal correlation of receive and reply activities)
- Clarification of Abstract Processes (syntax and semantics)
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 is an effort related to JSR 207 that may enable Java to function as a 'programming in the small' language within BPEL.
See also
- List of BPEL engines
- Business Process Modeling Notation
- WSCL (Web Services Conversation Language (WSCL) 1.0)
- WS-CDL (Web Services Choreography Description Language Version 1.0)
- WSFL
- XPDL
- YAWL (Yet Another Workflow Language)
External links
Standards
- OASIS WSBPEL TC Webpage
- OASIS WSBPEL TC Issues List
- Latest editor's copies of OASIS WSBPEL TC Specs
- The BPEL4WS 1.1 specification
BPEL and business process sites
- Business Process Management Initiative Web Site
- Service Interaction Patterns (with BPEL code samples)
- BPELmentor.com BPEL training and consulting
BPEL articles
- Description of the upcoming changes from BPEL 1.1 to BPEL 2.0
- Oracle Article: Weaving Web Services Together
- BPEL for Programmers and Architects
- A Short BPEL Tutorial
- BPEL Loan Approval Tutorial
- The Promise of Portable Business Processes
- BPEL and Java
- Process-centric realization of SOA: BPEL moves into the limelight
- Validating BPEL Specifications using OCL
- IBM Article: Business Process Choreography in WebSphere: Combining the Power of BPEL and J2EE
- BPEL Primer
- WS-BPEL Extension for Sub-processes, BPEL-SPE
- WS-BPEL Extensions for People—BPEL4People
- Analysis of Web Services Composition Languages: The Case of BPEL4WSda:BPEL