Matt asked if anybody had done any projects with BPEL. Well here are some experiences.
I recently did a project where I had to present a couple of technologies that would be the basis for a new provisioning system for a large company. The company already implemented about 10 to 20 SOAP services (either based on Java or simply wrapping a Perl system) so one of the requirements was for it to be working together with SOAP as easy as possible.
I ended up with jBPM and BPEL and we finally went the WS-* route and decided BPEL was going to be it. We had the choice between Oracle Business Process Manager (based on Collaxa, taken over by Orace I think last June–could also have been June 2003) and ActiveBPEL (by ActiveEndpoints–some of the guys there originally worked for SilverStream). The latter is a new product and still has some bugs and glitches, but I think it’s getting there. Oracle is pricy and they couldn’t really convince me of them not dropping the compatibility with other application server than just Oracle. So we went for ActiveBPEL. I won’t talk about the product itself right now too much. All I’d like to say is that apart from the glitches and tiny bugs they ActiveBPEL has a pretty good designer application. It’s really easy to get a simple flow up-and-running. If you need a tool to do BPEL modeling, definitely check this one out! By the way, the ActiveBPEL engine itself (which does exactly what it’s supposed to do and performs quite well) is open source (GPL licensed) and there’s a commercial version as well (also one based on JBoss but who needs that
), the designer costs a bit of money (can’t remember really, but it’s nothing compared to what Oracle charges).
About BPEL itself….. errr….. well, let’s say that I think it’s all rather complex! You have to think really carefully how to design your system and services and there’s a lot of SOAP going on there. Then theres the usual complexity you’re getting when using SOAP. Then there is for example the partner links which you have to add to your descriptors. Axis doesn’t support those (AFAIK) so I created a special Servlet filter to add them to the WSDL (so now I have a http://server.com/services/Service?bpel URL filtering the ?wsdl variant.
As far as XP or agile is concerned, BPEL doesn’t exactly facilitate iterative development. You’ll have to do a lot of upfront planning. Dragging and dropping a process together is not something you’re going to do in like five minutes (yes of course, if you have a small example with a service returning Hello World, not if you have 10 to 20 services and a process that has a lot of asynchronous activities, parallel processing and fail over).
Then the issue of the specification in general. I don’t think it’s mature enough yet. A lot of the things you’d expect from a business process management solution aren’t there yet. The first version of the spec doesn’t have retries or failover yet (it’s probably going to be included in the second version of the spec). Some vendors offer features like this (but those are proprietary) and you can of course get something in place that does this yourself. Then there’s the issue of an action manager or a task manager (whatever you call it). Business process management always involves notification, rescheduling, the creation of tasks, etcetera. BPEL doesn’t provide something here. Oracle has its proprietary addition (I think it’s called task manager).
Last but not least there’s the issue of the incomplete set of standard related to web services. There’s a lot of things that still need to be resolved and then there are no really mature tools that provide implementations for all the standards (security, atomic transaction, business transaction, federation, etcetera).
I had an interesting chat with Simon Phipps back in September or October about BPEL and other integration standards. He mentioned UBL and was questioning whether we should focus on standardizing the infrastructural issues (security, transport, etcetera) or the language we are talking. Why not leaving the transport and security issues as they are and standardize on what we actually want to say to eachother. UBL (I think it’s ebXML related) is an example of this.
Maybe BPEL can be useful if you already have a dozen SOAP services and need to create several business processes and customize small bits of them easily. Don’t think however that it’s the best thing that has happened to mankind since the invention of matches–BPEL sure is a lot more complex
!