There has been a lot of talk about BPEL, but mostly it is being focused on its technical features, such as how compensation handling works.
Particularly, I have not seen a lot of emphasis on the use-cases that BPEL helps to solve.
So, as an attempt to understand where one can use BPEL (in the context of integration) and what are the most valuable BPEL features, I’ve tried to come up with a (incomplete) list of scenarios where BPEL is able to help with:
- Intelligent dynamic routing based upon message content and process state;
- Compensation of non-transactional work and long-running processes;
- Sequential and concurrent splitter and aggregation of messages;
- Content enrichment and message filtering;
- Support for process instances with complex exception/fault paths;
- Support for process instances with multiple on-going conversations;
I would be very interested in knowing if anyone else has had experience implementing integration scenarios using BPEL. What were you trying to solve? What was easy to do and what was hard to do? How was it better (or worse) than using some other technology, such as XSLT?