Antoine of Intalio comments on yesterday’s post re the need to tweak BPMN diagrams to make them more BPEL-friendly.  One of my complaints had to do with the nasty “interleaving” error that always pops up when you turn on BPEL validation.  He references an Intalio presentation at EclipseCon last year, specifically slide 16.  I copied his BPMN into my tool (ITP Commerce) and sure enough, it gives the interleaving error:

interleave3.png

Getting rid of interleaving errors requires making duplicate copies of some of the diagram nodes so that BPEL’s block structure is happy.  In my tool this has to be done by hand, but Antoine sort of suggests that Intalio does this automatically by turning the BPMN into a “directed acyclic graph” and generating BPEL from that.  More mathematical gobbledygook to me, but I think he is saying “we fix the interleaving thing automatically” by turning BPMN into a “tree”… I assume under certain conditions.  Here is the result from his document:

interleave4.png

As you can see, ‘merge’ and ‘do more things’ have been duplicated, but apparently it’s automatic.  Sweet.  I’m curious, Antoine, does Intalio automatically handle my mixed token diagram from yesterday?  And, since those exclusive merge gateways are really optional in BPMN - uncontrolled merge means the same thing in this case - does Intalio require you to draw them?

Tags:

8 Responses to “Automating the BPMN-BPEL “Interleaving” Solution”

  1. No, I can confirm that Intalio will allow you to draw your first example in BPMN without merge gateways (ie the same as you drew it) and will generate and run bpel as intended. regards David

  2. OK. I guess I really should be paying more attention to that tool. Just like Ismael keeps telling me.
    –Bruce

  3. Bruce,

    This diagram should not have any threading problems, any block problems, if you consider the first XOR splits be two XOR splits: the first one brakes the upper branchs from the lower one, and then the second XOR split splits the upper two, which come back together.

    This would be realized in the block structure as an outer if statement, and then inside the first block having another if statement. If you convert from the BPMN to the block structured language well enough, you will not need to duplicate any blocks. You get the interleaving error because the conversion does not recognize that the upper two paths are special because they come back together sooner than the lower one……I think.

    What you don’t have in this diagram is the “figure 8″ shape. This is a shape that was drawn long ago by W Van der Aalst when discussing the limitations of BPEL. The figure-8 shape is a long rectangle, where the top is one branch, and the bottom the other, and you have an arrow that crosses from the upper to the lower somewhere in the middle (or lower to upper as the diagram in your last post did). The figure-8 can not be handled in a block structured language, and must be resolved by duplicating nodes/paths.

    -Keith

  4. Keith,
    I don’t doubt what you say, but you are still effectively duplicating a diagram node, so let me restate my complaint. Mapping BPMN to BPEL automatically requires smart algorithms that can analyze the topology of a diagram and insert additional gateways (per your example) or activities (Intalio), or else report errors that the modeler has to fix himself (ITP).

  5. By the way folks, why do we have to map BPMN to block-oriented BPEL? BPEL also has a graph-oriented character using links. So how do you motivate that a mapping to block-oriented BPEL is needed?

  6. Point well taken, Sebastian. Again, my point is more about tools and roundtripping than about fundamental capabilities of BPEL. I believe WebSphere Modeler generates link-oriented BPEL from its graph-oriented (not BPMN) models, but I don’t know of any other tools that use the links. Do you? To restate the need, it’s that the tool automatically create the BPEL from BPMN, and - ideally - recover the BPMN from BPEL in the reverse direction. I gave Intalio points for doing some of it. Do you know of tools that do this using links?
    –Bruce

  7. @Bruce: I’m not aware of a single tool transforming to BPEL graph-style. I only know of 2 reasons for that, but I think both reasons are not really convincing:

    1) BPEL graphs are hard to understand and maintain by a human user. –> But why is it easy for people to do graph modelling with BPMN but not with BPEL?

    2) BPEL graphs are not portable. –> I have no proof for that. It might have been true some years ago, but I think now most engines are compliant to the full spec.

    Any other reasons?

  8. About comment #4, Bruce, you are right, you are still duplicating a gateway, which is a lesser sin than duplicating an activity. IMHO.

    About BPEL graphs: the example I saw on graph style had a bunch of parallel activities that used links to coordinate the start and stop of each activity — preventing one activity from starting before another activity ended. Graph-style would be sufficient for representing the drawings, BUT when I last investigated this there were a lot of unanswered questions about how you terminate the process. The precise meaning of certain kinds of transitions (like loops that have links that cross threads) was not clear. ALSO, with the graph-style how can one get any of the advantages of being block structured: exception throwing? nested scopes? transaction boundaries? Seems like all of those would be lost.

Leave a Reply

You must be logged in to post a comment.