Professional Documents
Culture Documents
BPMN 2.0 Message Events vs. Message Tasks
BPMN 2.0 Message Events vs. Message Tasks
Message Tasks
By Gregor Polančič - May 6, 2014
Before the BPMN 2.0 specification, there was never any confusion
between tasks and events. ‘Tasks’ were treated as atomic activities in a
process flow which could not be broken down into finer detail, whereas
‘events’ represented something that happened during the process and
required a reaction.
However, since BPMN 2.0 was released, different BPMN task types can
now be defined, enabling modelers to represent more types of behavior.
Among these, the new send and receive types have now blurred the
line between BPMN message tasks and events. In this article, we will
discuss the differences between message events and the send and
receive tasks.
With the introduction of BPMN 2.0’s send and receive tasks, we can
define that a task in the process always sends or receives a message.
After the message is sent or received, the task is considered complete
and no other work can be performed.
While there are certain specifics, there are fundamentally no differences
between message events and send or receive tasks. Bother have their
advantages and disadvantages, which we will look at now:
The above example shows a user activity of writing a report, which can
be interrupted by receiving an important update. In this case, updating
the files is performed and writing a report is instantiated anew.
However, in case of receiving an invitation to a meeting, a note is
written by the performer of the activity while the main activity of
writing a report is not interrupted. Such behavior could not be
represented by using only send and receive tasks.
Common Mistakes
A common mistake when using send or receive activities is their
labeling. As already stated, send activities explicitly define that a
message should be sent, and no further task can be performed in the
scope of such activity. Figure 6 demonstrates a common mistake when
labeling send message activities.
The correct solution would be to split the ‘Prepare an answer and notify
the user’ into two separate tasks, one for preparing an answer and the
other for sending it.
In this case, the first activity in Pool 1 performs a certain task (i.e.,
‘Prepare an answer’) and the second activity actually sends this answer
to Pool 2, where it is received in the form of a receive task named
‘Receive the message’. After the message is received, the task ‘Analyze
the content’ performs the corresponding work.
Gregor Polančič
Gregor received his PhD in 2008 in the fields of software engineering and
information systems and has nearly a decade of experience in BPMN, starting to
investigate and actively use BPMN since its introduction in 2004. In addition, he
has participated in the development of one of the first BPMN modeling utilities - a
package of plugins for Visio, which were introduced early in 2005 and is the main
author of the first BPMN poster (bpmn.itposter.net), which has been translated into
several languages and already exceeded 50.000 downloads.