BPMN question

Recently I learned how to model business processes with BPMN 2.0, the Business Process Modeling Notation. Following, a very, very brief introduction.

Using the BPM standard allows technical and business engineers (and everybody else) to better understand one another by using a process-oriented approach to modeling, while keeping the advantage of having executable (automatable) process models. It is highly recommendend to pre-define certain patterns and guidelines for usage, especially when working cross-departmental and cross-functional or rolling out company wide.

The great thing about BPMN is that it is really simple. This process obviously doesn’t do anything useful, it’s only to show some of the tasks, events etc.:

Now, a problem. Let’s say asynchronous service calls are modeled like like this:

How do you model synchronous service calls? You could do it like this:

But is that really 100% unambiguous? Sure, there would also be notes about the details (and objects used) of the process. But wouldn’t this be better?

There’s been quite some discussion about this; if anybody here has an opinion or best practise advice, let me know.


Tobias is a Software Quality person. He likes movies and games, as well as sailing and swimming.

Tagged with:
Posted in Tools
2 comments on “BPMN question
  1. Bruce Silver says:

    Generic task labeled ‘service call’ is indeed ambiguous. In BPMN 2.0 serviceTask is synchronous. To model async call use sendTask or throwing message event, and wait for response in downstream receiveTask or catching message event. Task types are distinguished by their icons (your diagram doesn’t show any). The third example is definitely incorrect. If ‘service call’ is serviceTask, synchronous response is implied; no need for the event. (Also ‘service call’ needs normal flow exit; you just have exception flow.)

  2. Tobias says:

    Hi Bruce, you are right about the third example being syntactically incorrect, or at least incomplete (you’d need an alternative sequence flow out of the task as you say), I just wanted to focus on the problem.

    The program I used to make these examples didn’t let me set the type of the tasks…however the convention I have on my hands says I should only use generic tasks anyway. In the end I guess using a message throw and catch like you suggested would be a working solution, I will suggest changing the convention. Thanks!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: