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
!

Hi,
This is Edwin Khodabakchian from the Oracle BPEL team (ex co-founder of Collaxa). I hope that you will not find this too defensive: Just wanted to add some context to some of the points you are making.
In the order of your post:
Pricing: Oracle BPEL PM costs 40K per CPU. It embeds the Oracle Application Server but can also be used with JBoss, WebLogic and WebSphere. It is freee for development and can be downloaded from OTN. The pricing is competitive if you compare with MSFT BizTalk, BEA WLI or WebSphere WBI.
Commitment to other application servers: Since the Collaxa acquisition, we have released 3 new versions of Oracle BPEL PM. Each time, we have released concurrently OAS, JBoss and WebLogic. This is a strategic direction for us. This is not new for Oracle: TopLink has been offering cross platform support for more than 3 years so does ADF (our struts framework).
Regarding Agile development, I am not sure I understand your point. BPEL make it very easy to start with a process that invokes only a couple of service and then iteratively add more services, more exception management, turns things that were done in sequence into parallel branches, etc. The other key aspect of BPEL is that when you integrate multiple services, the resulting composite is also a service and it can easily be integrated into a larger process. Could you please clarify what prevented you from starting with a simple process and then over a couple of weeks through iterations and use feedback extend this to a full end-to-end flow which would include a set of BPEL processes?
Regarding user interactions, you are correct in that Oracle BPEL PM includes a TaskManager service to allow the addition of user steps into a process flow. But it is not a proprietary extension. If you look at the design, you will notice that the TaskManager is a web service and that a BPEL process interacts with that service using standard BPEL invoke and receive activities (invoke to initiate a task for a user, receive to subscribe to the event fired when the user completes the task or the task has expired). In the 10.1.2 release, the TaskManager service is scale up into a full human workflow service with LDAP integration, approvals, expiration, escalation, worklist UI. There is NO PROPRIETARY BPEL EXTENSION to achieve this. This is just a service within a SOA world.
Regarding retries, you are correct in that BPEL does not include the notion of the retry. The reason for this is that retry gets into the realm of reliable delivery of messages and is therefore more a binding attribute of the WSDL or a protocol problem than a BPEL problem. One of the nice attributes of BPEL is the composability with other XML and Web services standards. (It would be foolish to claim that BPEL is mature/complete, BPEL is now where HTML 3.0 was. Dynamic parallel branching, early completion are two good examples of things missing that will be either addressed in BPEL 2.0 or BPEL 3.0. But would you rather us a dead proprietary abstraction or get on the standard train?)
Regarding transactions, our experience is that mixing BPEL and atomic transaction is a bad idea (I am saying this although we have support for this in the product). The point of BPEL is to offer course coupling between component. The compensating transaction model built into BPEL is a much more effective approach to addressing coordination.
Regarding complexity, I would have to agree that BPEL is complex. Some of the complexity is inherited from XML and XML Schema. Some of the complexity is inherited from the fact that it support both synchronous and async/event-driven message exchange patterns. Async opens a hole can of worm (parallel processing, timeout management, compensation, reliable delivery, retry, side-by-side versioning, etc..). Unfortunately, I think that the history of computing has showns that everytime someone has tried to hide those complexe concept into a container and simplify the abstraction, he or she ended ended up over simplifying (great demoware but ends up as what I call a Mikey Mouse tool). BPEL is taking a different approach: let’s make all those concepts first class citizen of the abtraction/language and let the tooling specialize/simplify the experience when possible.
Good luck with your project!
Edwin
——–
Edwin Khodabakchian
VP Product Development
Oracle BPEL Process Manager
edwin.khodabakchian@oracle.com
Edwin, I’m kind of snowed under at work at the moment. I’ll definitely reply to your comments later on!
Hi I am looking for a Oracle Consultant with experience of Oracle BPEL for a client of mine in the netherlands. Please advise if there are any contractors out there looking for work
Regards
Paul Flynn
European Staffing Solutions
+44 (0)8701696970
Alef,
It’s been more than two years now since you stated you will definetely reply Edwin’s comments.
I understand you’re snowed under work as you said, but two years… ? can you provide an ETA for your reply as it’s of interest to me.
I don’t think I’m in the position to actually answer to Edwin’s comments anymore. I haven’t touched any BPEL related products for the last 18 months, and have also not really kept up with all the development in this space.
My sincere apologies!
A kind of valuabled discussion even 4 years pass. Yes or No, let it be reader’s idea.
Thank you for all of you to share your valuable experience.
Hi, thanks for the post? Is your site a free theme or paid? I am interested by your site. Is it feasible to include this article on one of my sites?, i will of course link to this blog. regards