Pascal On BPMS

BPMN, BPEL, SOAP and all those things

Pascal On BPMS header image 4

Looping Backward

February 8th, 2007 · 3 Comments

A fairly common thing you want to do in your process is to loop back.

Consider this process, for example, which illustrates a simple approval Proposal Review and Approval.

Simple Loop

What happens during that process is quite self-explanatory: you submit a proposal till it gets approved.

Some BPMN Modelers don’t support loopback (hint: Intalio|BPMS Designer CE does not, at least not yet). If it something easy to do at modeling time, it can get fairly complex to generate an equivalent BPEL process that conveys the same thing since BPEL does not support out of sequence flow changes (What some people would call GO TO). BPEL execution model likes well structured, nested sequences (sub processes, conditional code and while loops).

So, if the modeler does not let you model the process as above, how can you model that process?

Fortunately, BPMN provides a looping sub-process shape. So you could model your process this way:

Simple Loop with a Looping subprocess

Maybe not as intuitive, but it expresses exactly the same thing. And it has its benefits too. For example, you can collapse the subprocess to unclutter your diagram, tasks inside the subprocess get their own scope.

In fact, absent of parallel flows, Böhm and Jacopini proved over 40 years ago that:

“any logic problem can be solved with only sequence, choice (IFTHENELSE), and repetition (DOWHILE) structures)”

in “Flow Diagrams, Turing Machines and Languages with Only Two Formation Rules”,Communications of the ACM, No. 5, May 1966, pp 366-371.

The same approach can be used for more complex processes and nesting more than one looping sub-process.

However, some processes may not be valid:

Invalid Loop?

Anyone wants to venture why?

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Tags:

3 responses so far ↓

  • 1 Aaron Donovan // Feb 21, 2007 at 6:35 pm

    What is the recommended approach if the two tasks that contain the loopback are in different lanes? A looping subprocess can’t span lanes can it?

  • 2 Pascal // Feb 28, 2007 at 4:30 pm

    In this case, it may make sense to model it as one single lane so you can use the technique I described. Lanes are only used for organization purposes and have no meaning at execution time.

  • 3 Marlon Dumas // Apr 23, 2007 at 5:52 pm

    There is an algorithm that can translate the simple repeat-until loop-back found in the first diagram:
    http://eprints.qut.edu.au/archive/00005266/01/5266.pdf
    http://eprints.qut.edu.au/archive/00006810/01/6810.pdf

    And there’s a open-fully source tool called BPMN2BPEL that implements this algorithm:
    http://www.bpm.fit.qut.edu.au/projects/babel/tools/

    The last of the processes in this posting is valid in BPMN (assuming you add the appopriate start and end events, etc.). However it is not “safe”, meaning that it is possible for the same activity in this process to execute multiple times concurrently. In this scenario, task “Request funding” will be executed multiple times (each time “Review Proposal” is completed). And these “multiple instances” of activity “Request funding” may potentially execute concurrently. The above BPMN2BPEL tool can deal with such process models, but it would generate horrible BPEL code (for such unsafe processes, the tool relies on BPEL event handlers).

    As for the theorems that state that all programs with unstructured loops can be translated to equivalent programs with structured loops, they do not apply to languages such as BPMN which include parallel splits and joins.

Leave a Comment