I’m now in the final session of the day, with John Evdemon talking about BPEL. He’s dealing with a number of interesting points, such as name (WS-BPEL versus BPEL versus BPEL4WS), pronunciation (he doesn’t care, as long as you use it), the lack of graphical notation, and orchestration versus choreography. I particularly like his description of orchestration versus choreography, which is crystal clear: orchestration has the concept of a controlling party, even if other external organizations are involved in a process, and is concerned with the process from the viewpoint of that party includes its internal activities; choreography is at a higher level and looks at a process as message-passing between peers, without delving into the processes internal to any of the participants. BPEL is an orchestration language, and you can think of choreographing between the BPELs at each organization (sort of).
The motivation behind BPEL was application integration both within and between organizations — EAI and B2B — where everything is described as a service. It covers both non-programmers implementing flows by assembling components with flow logic, and programmers implementing the granular services using function logic that will make up those processes. There’s also the idea of being able to model both executable processes and abstract processes using BPEL, although most of the excitement around BPEL has been due to the platform-independent nature of it as an execution language, that is, the logic for how messages actually get processed. Abstract BPEL, on the other hand, can be used to describe an organization’s services at a deeper level than can be done via WSDL, without concern for execution.
Evdemon showed a diagram of how BPEL fits together with the rest of the WS-* stack, and shows how business process models and choreography models need to still be layered on top of BPEL to provide full capabilities.
Something that I didn’t really think about before, but which came up in response to the questions “where does BPEL live?” is that Microsoft doesn’t run BPEL directly, but translates it into BizTalk (unlike a product like Oracle BPEL Process Manager, which executes BPEL directly).
BPEL 2.0 is scheduled to go out for public review next month. New since v1.1:
- 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)
- XPath access to variable data (XPath variable syntax)
- XML schema variables in web service activities (usability enhancements for WS-I compliant doc/lit-style WS interactions)
- Locally declared messageExchange
- Abstract processes (common base/syntax and profiles/semantics)
Evdemon’s recommendation and predictions about BPEL shocked me: it’s still under development, so don’t use it yet in production and the portability of executable BPEL will be low to non-existent. He sees that many organizations implementing BPEL are using it like a programming language, which he implies is an inappropriate usage since it’s missing some core capabilities, but that it’s more of an orchestration modelling language. If that’s the case, and the vendors are going to just translate it into their own proprietary execution language, then there seems to be little advantage to adopting BPEL over something like XPDL that can capture everything that BPMN can model, except possibly for better WS handling.