1) A-B-C-D-E => BPEL Sequence ?P1? 2) H-I => BPEL Sequence ?P2? 3) G3-(P2 | J)-G4 => BPEL Flow ?P3? 4) F-P3-K => BPEL Sequence ?P4? 5) G1-(P1 | P4) => BPEL Flow ?P5?
(click image for a clearer view)
With the synchronization links, if you try to use the same technique, you need define an infinite number of patterns (production rules) since there are infinite ways to synchronize your activities. However, if you can identify those synchronization links, you can solve the problem by imaging they do not exist first, then adding the BPEL links to flow ?P5? after pattern matching translation.
We have an algorithm to identify those synchronization links by analyzing the flows. It is much more sophisticated than described in the example above. And it will be incrementally enhanced to cover more cases.
The mapping algorithm is no longer context free. In other words, you cannot figure out G3, H, G6, I, J, and G4 can be mapped to BPEL flow without looking at a larger scope. So flow analysis is necessary.
In BPEL 1.1, the semantics is clear on ?Suppress Join Failure? and ?Dead Path elimination?. But it is not that specific in BPMN 1.0. So we intentionally disabled the translation for some models until the specification is clarified in the future. But the algorithm itself is capable if BPMN can align with BPEL on those concepts.
Our goal is to solve real business integration problems. Some patterns in the research papers are very meaningful from academic point of view, and the conclusion can provide guidance for commercial implementations. However, some in Class 1 can be easily solved by adding BPEL extensions, including discrimination pattern, multiple-instance loop, etc. If there is a real need in today?s business, they will be added to BPEL implementations, and even future BPEL specifications. Oracle BPEL extension ?flowN? and ?exec? are good examples.