BPEL (Business Process Execution Language) is "a language for describing Web service orchestration in terms of stateful, long-running interactions consisting of synchronous and asynchronous message exchanges," explains Jim Clune of Parasoft. "It supplies a notion of abstract processes to describe externally visible behavior as well as executable processes, which can be run either by some interpreter or by compiling them into some executable form."
Clune goes on to provide a useful hypothetical that revolves around using BPEL to invoke various travel services on the Web. ("For example, we need to get the list of hotels near a given airport in order to request detailed descriptions and rates for the hotels.") He goes on to point out that BPEL can help developers perform the "structural activities" associated with invoking such a service. "It turns out that this notion of activities is exactly what BPEL provides. In BPEL, the aforementioned activities are receive, invoke, assign, sequence, and flow. Fifteen such activities are defined in BPEL along with non-activity elements such as processes, partner links, variables, and correlations."
The piece offers a useful overview for developers that counters some of the established thinking on BPEL. "This view of how BPEL derives its benefits can be contrasted with a portrayal that is sometimes found in the media, namely that the benefit of BPEL is that it provides such a high level of abstraction that business analysts can compose and run executable business processes by pointing and clicking in modeling environments," he writes. "The view presented here is not that BPEL enables analysts to write software, but that the abstractions BPEL provides allow engineers to implement flexible solutions more effectively."