The BPMN specification presents lots of technical definitions
and rules, but it does not teach you how to create process models
that are effective in their primary mission - maximizing shared
understanding of the as-is or to-be process. To do process modeling
effectively, you need to go beyond the spec and learn a basic
methodology, best practices, and specific diagram patterns to
use in common situations. Thats what we teach in our Process
Modeling with BPMN course, available online at BPMEssentials.com
in public classes and at BPM Institute events. To illustrate the
point, here are ten tips for effective modeling in BPMN.
1.Make the process logic visible in the diagram. This
is absolutely fundamental, but is routinely ignored by beginning
modelers. The BPMN spec describes various shapes and connectors
that print in the diagram, plus supplementary detail in attributes
visible only through the modeling tool or in the detailed documentation
that can be generated using the tool. But maximizing shared understanding
doesnt come from individuals privately examining your model
through the tool, nor from digging through 100 pages of documentation.
It comes from a group sitting around the table looking at a printout
of the diagram, discussing it, usually thinking about how it could
be better.
Effectively that means two things: First, label everything in
your diagrams - not just activities, but subprocesses, intermediate
events, gateways, sequence flows, end events and message flows.
Some required attributes, like the duration of a timer event,
may not be displayed in the diagram. If not, add a label to the
event that replicates that information. If you cant see
it in the diagram, it doesnt really count.
Second, show exception handling logic explicitly in the diagram.
Unlike many traditional notations, BPMN gives you the tools to
do that even if youre not a developer.
2.Make your models valid. While the diagram is the key
output, a process model is more than a drawing, and a modeling
tool is more than a drawing tool. A real modeling tool has the
semantics and rules of BPMN baked in, and gives you a Validate
button that can display a list of errors when you violate the
spec. A free BPMN stencil in Visio cant do that. If you
want others to understand your models, you need to start by making
them valid, so you should use that Validate button and learn to
fix the errors.
3.Make your models hierarchical. What makes BPM different
from traditional management disciplines is its emphasis on viewing
the business from a cross-functional end-to-end perspective. Capturing
processes in flat models that take up thirty feet of wall space
does not allow that end-to-end perspective to be consumed all
at once. Instead, we teach a top-down methodology in which the
top-level diagram shows the whole process on a single page, and
uses subprocesses to expand process detail at nested diagram levels,
so you can zoom in and out of your model to describe any level
of detail. It may print out as multiple pages, but internally
the integrity of a single model is maintained.
4.Label process activities VERB-NOUN. BPMN describes processes
in terms of activity flows, where activities are actions. They
represent work done in the process. Activities are not states,
not business functions, not use case interactions. To reinforce
that, we ask students to consistently name their activities using
the Verb-Noun construction, like Check Credit or Validate Order,
not Credit Check (a function) or Valid Order (a state). A resource
is going to be performing each activity, and the name of the activity
should describe what action is performed.
5.Specify task types. One of the BPMN attributes with
no standardized representation in the diagram is the task type.
The spec defines several task types, but there are really two
that are important to distinguish: user (human task) and service
(automated task). Fortunately, most BPMN tools distinguish task
types with icons inside the activity shape - but you need to specify
which type you mean.
6.Dont use a task to route work. Another common
beginner mistake is to insert tasks like Send to Manager, followed
by a sequence flow to a task in the managers swimlane. That
sequence flow is already routing work to the manager, so the Send
to Manager task is redundant. Just get rid of it.
Theres a second problem here as well. Best practice is to
reserve the keywords "Send" and "Receive"
in task names to send and receive task types, which are equivalent
to message events. In BPMN a "message" means a signal
between the process and some external entity. Here manager is
not an external entity, but a participant in the process. So its
not a message and should not be labeled Send. If you want to communicate
something to the manager without routing the work itself, you
could use a task called Notify Manager. Practices like this may
seem petty at first, but in the end they make it easier for everyone
in your organization to understand immediately from the diagram
what is going on.
7.Distinguish success and failure end states in a subprocess
with separate end events. Each path in a subprocess that is
enabled must reach an end event before the subprocess is complete.
You can draw a single end event for the subprocess and route all
paths to it, or you can draw multiple end events and route specific
paths to each one. Since there is an implied "join"
of all the end events, technically it doesnt matter. But
there is benefit in drawing and labeling separate end events for
each distinct end state of the subprocess, particularly if some
end states represent "success" and others represent
"failure" or some type of exception.
You can follow the subprocess with a gateway that tests the end
state to see whether to continue the process or do something else,
like end it or loop back to a previous step. Matching the label
on the gateway to that of the end event makes that linkage clear
in the diagram. Alternatively, an end event on an exception path
inside the subprocess can rethrow the error, which is caught by
an attached error event on the subprocess boundary. This also
can end the process or follow some other exception flow. Again,
matching the labels of the throwing and catching events makes
the connection obvious from the diagram.
8.Use subprocesses to scope attached events. Intermediate
events attached to a process activity mean if the event occurs
while that activity is running, abort the activity and proceed
down the sequence flow out of the event, called the exception
flow. A neat trick is to wrap a sequence of activities with a
subprocess for the sole purpose of defining that scope for the
event. For example, if you have an order handling process with
steps A through Z and you want to allow the customer to cancel
or change the order without penalty any time between steps B and
G, you can wrap the sequence from B to G in a subprocess and attach
a message event and particular handler exception flow to that.
9.Standardize on specific diagram patterns to distinguish
types of exceptions. BPMN provides a business-friendly notation
for describing exception-handling behavior. Even though the BPMN
spec gives the modeler great freedom, best practice is to learn
specific diagram patterns to distinguish each type of exception,
and use them consistently. In our course, for example, we teach
distinct patterns for modeling internal business exceptions, system
faults, timeouts, solicited response exceptions, unsolicited events,
and others. Again, the key principle is understanding exactly
what is meant just from the diagram itself.
10.Use message flows consistently to show business context.
In addition to the activity flow of your own process, BPMN
lets you show the interactions between your process and external
processes as dashed connectors called message flows. Message flows
typically represent requests, responses, and unsolicited events
exchanged with the external process. In your own process, message
flows connect to specific activities and events that indicate
exactly how your process responds to an incoming message flow
or generates an outgoing message flow. Since you do not control
or even know the internals of the external process, it is common
to just attach the message flows to the boundary of the pool representing
that process.
Message flows can add valuable business context to your diagram,
but it is important to use them consistently. For example, if
you are going to show any message flows from and to a requester
of your process, you really should show all of them, and show
them consistently in each level of your model. That is, if a particular
message flow is shown in a subprocess nested three levels down,
it should also be shown in the top-level diagram, and labeled
the same at every level.
None of these ten tips are mandated by the BPMN spec, but if
you learn to apply them consistently throughout your organization,
you will find it much easier for others to understand your models
- and for you to understand theirs - immediately just from the
printed diagram. And isnt that the real goal?
Bruce Silver is an independent industry analyst covering BPMS
technology and the author of the 2006 BPMS Report series on bpminstitute.org.
|