Help with BPMN loop, encountering Infinite Loop error

bpmn

#1
  1. I am having a problem with a model that I am currently working on. I am wondering if I am not following good BPMN practice as I am still very new to BPMN 2.0.

  2. I am trying to model a delivery and acceptance process for goods and services. In the scenario that I am trying to animate:
    a) first the contractor tenders a Deliverable for Acceptance;
    b) the Customer checks the deliverable and rejects it
    c) the Contractor has to redo the work and re-produce the Deliverable for Acceptance
    d) the Customer checks the deliverable and accept / reject (depending on whether the Deliverable meets the pass criteria)
    e) if the Deliverable fails the criteria then item c) and item d) loops until the criteria is passed.

  3. I have tried modelling this and it is telling me that I am creating an infinite loop when I proceed to animate it. Based on this, I am wondering if it is not good practice to model the “loop” the way that I am currently doing and is there a better way to model the loop?

  4. Any general advice/tip on how to better improve my process model is also appreciated.

I have attached the process model highlighting in purple the loop that I was talking about.

Any help is greatly appreciated.

Thank you.


#2

Well, the most obvious problem is that you have an Intermediate event which would normally end the process but instead it immediately continues without direct reason.

It’s a bit hard to read but I assume that the event should be about the notification? In that case it would make more sense to use a message event. A message end event would be a good choice: it would indicate that the process has ended by sending a message to a participant. Then add a message start event to receive and process the message and you should be all good.

Another problem which I see is when your task in the middle suddenly “splits” for no apparent reason. Don’t. At the least use a message task to indicate that you’re informing the customer. Then use a time intermediate event to indicate that your client is waiting for confirmation, which it should get through a message task.

I set up a diagram of my own, applied animation to it and I don’t get any errors about infinite loops: it simply runs indefinitely :wink:

Please ignore the crude setup, I simply slapped something together roughly based on what you had.

But if you let this run through an animation (which is a good idea, I always forget that Visual Paradigm can actually do this!) then you’ll notice that when I sent the results to my customer the process will run in parallel. It will perform the inspection while the contractor transfers the deliverance (?). And then this happens:

As you can see 2 things are happening here. If I click forward then it will all come together: the customer performs the inspection, waits for confirmation which will be sent through the end message event after which the message will be received, (and processed of course) after which the process continues at the customers end.

No more error messages.

Hope this can help!


#3

Thank you so much for the help! I clearly was not using the intermediate events properly and using incorporating send/receive activities helped resolve the issues on my model. Your example really helped. Thanks again.