2. 2
Sequence Flow
1. A sequence flow must connect to a flow node (activity,
gateway, or event) at both ends.
2. All flow nodes other than start events, boundary
events, and catching Link events must have an incoming
sequence flow.
3. All flow nodes other than end events and throwing Link
events must have an outgoing sequence flow
4. A sequence flow may not cross a pool (process)
boundary.
3. 3
5. A sequence flow may not cross a process level (subprocess) boundary.
6. A conditional sequence flow may not be used, if it is the only outgoing sequence
flow.
7. Sequence flow out of a parallel gateway or event gateway may not be conditional.
8. An activity or gateway may have at most one default flow.
Sequence Flow
4. 4
Message Flow
9. A Message Flow may not connect nodes in the same process (pool).
10. The source of a message flow must be either a Message or Multiple end event or
throwing intermediate event; an activity; or a black-box pool.
11. The target of a message flow must be either a Message or Multiple start event, catching
intermediate event, or boundary event; an activity; or a black-box pool.
12. Both ends of a message flow require a valid connection.
5. 5
Start Event
13. A start event may not have an incoming sequence flow.
14. A start event may not have an outgoing message flow.
15. A start event with incoming message flow must have a Message
16. A start event may not have an Error trigger.
17. A start event in a subprocess must have a None trigger.
6. 6
End Event
18. An end event may not have outgoing sequence flow.
19. An end event may not have incoming message flow.
20. An end event with outgoing message flow must have Message.
7. 7
Boundary Event
21. A boundary event must have exactly one outgoing sequence flow.
22. A boundary event trigger may include only Message, Timer, Signal, Error, Escalation, Conditional, or
Multiple.
23. A boundary event may not have incoming sequence flow.
24. An Error boundary event on a subprocess requires a matching Error throw event.
25. An Error boundary event may not be non-interrupting.
26. An Escalation boundary event on a subprocess requires a matching Escalation throw event.
8. 8
Throwing or Catching Intermediate Event
27. An intermediate event with incoming message flow must be catching
type with Message or Multiple trigger.
28. An intermediate event with outgoing message flow must be throwing
type with Message or Multiple trigger.
29. A throwing intermediate event result may include only Message,
Signal, Escalation, Link, or Multiple.
30. A catching intermediate event trigger may include only Message,
Signal, Timer, Link, Conditional, or Multiple.
31. A throwing Link event may not have outgoing sequence flow.
32. A catching Link event may not have incoming sequence flow.
intermediate event
9. 9
Gateway
33. A gateway may not have incoming message flow.
34. A gateway may not have outgoing message flow.
35. A splitting gateway must have more than one gate.
36. Gates of an event gateway may include only a catching intermediate event or Receive
task.
10. 10
Process (Pool)
37. A process must contain at least one activity.
38. Elements of at most one process may be contained in a single pool.
39. A pool may not contain another pool. If a child-level subprocess expansion is enclosed in a pool, that
pool must reference the same participant and its associated process as the parent level.
child-level subprocess
parent level process
11. 11
Labeling
1. An activity should be labeled with VERB-NOUN.
2. Two activities in the same process should not have the same name, unless they are both Call Activities.
3. A triggered start event should be labeled to indicate the trigger condition.
a. A Message start event should be labeled “Receive [message name]“.
b. A Timer start event should be labeled to indicate the Process Schedule.
c. A Signal start event should be labeled to indicate the Signal name.
d. A Conditional start event should be labeled to indicate the Trigger Condition.
Cancel
evaluation
12. 12
End Event
15. Two end events in a process level should not have the same name. If they signify the
same end state, combine them; otherwise give them distinct names.
16. If a subprocess is followed by a yes/no gateway, at least one end event of the
subprocess should be labeled to match the gateway label.
13. 13
Subprocess Expansion
17. Only one start event should be used in a subprocess.
18. A child-level expansion should not be enclosed in an expanded subprocess shape if
parent and child process levels are represented by separate diagrams.
15. 15
Message Flow
19. A message flow should be labeled directly with the name of the message.
20. A Send task should have an outgoing message flow.
21. A Receive task should have an incoming message flow.
22. A Message start event should have an incoming message flow.
23. A catching Message event should have incoming message flow.
24. A throwing Message event should have outgoing message flow.