# Constraint List of Extended (EXT) Constraints

Click on the Rule Name to see a detailed description of each rule!

For each rule a short description, the affected BPMN element and attribute and a quoted statement from a source document (mainly the specification, v.2.0) is provided.

All constraints have been published in a Technical Report:

Geiger, M.: BPMN 2.0 Process Model Serialization Constraints
Bamberger Beiträge zur Wirtschaftsinformatik und Angewandten Informatik Nr. 92, Bamberg University, May 2013. ISSN 0937-3349.

Further Material:

The referenced file must be present in the given location and must be compatible to the defined type in order to be processed.

implicit

The ID must be unique.

implicit

Spec., Chap. 8.2.1, pg. 56
An ID must be present if the element may be referenced.

"The id is REQUIRED if this element is referenced or intended to be referenced by something else.

Spec., Chap. 8.2.1, pg. 56
The Value of the attribute must be a valid mime-type.

"It MUST follow the mime-type format. The default is 'text/plain."'

Spec., Chap. 8.2.2, pg. 56
Any non-standard artifact must respect the standard flow connection rules.

"A modeler or modeling tool MAY extend a BPMN diagram and add new types of Artifacts to a Diagram.

Spec., Chap. 8.3.1, pg. 66
An Artifact MUST NOT be a target for a Sequence Flow.

"An Artifact MUST NOT be a target for a Sequence Flow."

Spec., Chap. 8.3.1, pg. 67
An Artifact MUST NOT be a source for a Sequence Flow.

"An Artifact MUST NOT be a source for a Sequence Flow."

Spec., Chap. 8.3.1, pg. 67
An Artifact MUST NOT be a target for a Message Flow.

"An Artifact MUST NOT be a target for a Message Flow."

Spec., Chap. 8.3.1, pg. 67
An Artifact MUST NOT be a source for a Message Flow.

"An Artifact MUST NOT be a source for a Message Flow."

Spec., Chap. 8.3.1, pg. 67
The Value of the attribute must be a valid mime-type.

"It MUST follow the mimetype format. The default is 'text/plain."'

Spec., Chap. 8.3.1, pg. 72
An escalationCode must be present if the escalation is used in an EndEvent or in an intermediate Event if the trigger is an Escalation.

"For an End Event: If the Result is an Escalation, then the escalationCode MUST be supplied [...] For an Intermediate Event within normal flow: If the trigger is an Escalation, then the escalationCode MUST be entered [...] For an Intermediate Event attached to the boundary of an Activity: If the trigger is an Escalation, then the escalationCode MAY be entered."

Spec., Chap. 8.3.4, pg. 83
If natural-language expressions are used the process is not executable.

"The Expression class is used to specify an Expression using natural-language text. These Expressions are not executable."

Spec., Chap. 8.3.6, pg. 84
body

-

Spec., Chap. 8.3.6, pg. 86
Value must conform to URI format specification.

"The language MUST be specified in a URI format."

Spec., Chap. 8.3.6, pg. 86
Choreographies and SubChoreographies must not contain LaneSets

"LaneSets are not used for Choreographies or Sub-Choreographies."

Spec., Chap. 8.3.8, pg. 89
A unspecified Gateway may have any number of incoming and outgoing sequence flows.

"Unspecified: There are no constraints. The Gateway MAY have any number of incoming and outgoing Sequence Flows." (Table 8.46)

Spec., Chap. 8.3.9, pg. 91
A converging Gateway must not have more than one outgoing Sequence Flow.

"Converging: This Gateway MAY have multiple incoming Sequence Flows but MUST have no more than one (1) outgoing Sequence Flow." (Table 8.46)

Spec., Chap. 8.3.9, pg. 91
A diverging Gateway must not have more than one incoming Sequence Flow.

"Diverging: This Gateway MAY have multiple outgoing Sequence Flows but MUST have no more than one (1) incoming Sequence Flow." (Table 8.46)

Spec., Chap. 8.3.9, pg. 91
A mixed Gateway must have more than one incoming and outgoing Sequence Flow.

"Mixed: This Gateway contains multiple outgoing and multiple incoming Sequence Flows." (Table 8.46)

Spec., Chap. 8.3.9, pg. 91
A CollectionItem must be used if the ItemDefinition is declared as a Collection

"In cases where the data structure represents a collection, the multiplicity can be projected into the attribute isCollection."

Spec., Chap. 8.3.10, pg. 92
Only FlowNodes are allowed as source of a Sequence Flow. (REF.019; additional Restrictions see quotation)

"For a Process: Of the types of FlowNode, only Activities, Gateways, and Events can be the source. For a Choreography: Of the types of FlowNode, only Choreography Activities, Gateways, and Events can be the source." (Table 8.51)

Spec., Chap. 8.3.13, pg. 99
Only FlowNodes are allowed as target of a Sequence Flow. (REF.020; additional

"For a Process: Of the types of FlowNode, only Activities, Gateways, and Events can be the target. For a Choreography: Of the types of FlowNode, only Choreography Activities, Gateways, and Events can be the target." (Table 8.51)

Spec., Chap. 8.3.13, pg. 99
The source and target element of the sequence flow must reference the SequenceFlow definition using their incoming/outcoming attributes.

implicit

Spec., Chap. 8.3.13, pg. 99
The optional attribute must not be false for executable processes.

"An optional boolean value specifying whether Activities or Choreography Activities not in the model - For an executable Processes no value has the same semantics as if the value were true. - For executable Processes, the attribute MUST NOT be false." (Table 8.51)

Spec., Chap. 8.3.13, pg. 99
An Activity must not have only one outgoing conditional sequence flow.

"If a conditional Sequence Flow is used from a source Activity, then there MUST be at least one other outgoing Sequence Flow from that Activity."

Spec., Chap. 8.3.13, pg. 97
If an activity or gateway references a sequenceFlow as default flow - the referenced sequence flow must reference the activity/the gateway as a sourceRef.

implicit

Spec., Chap. 8.3.13, pg. 98
A choreography or a GlobalConversation must not reference a choreography.

"Note that this attribute is not applicable for Choreography or GlobalConversation"

Spec., Chap. 9, pg. 110
A Sequence Flow must not cross the border of a Pool (i.e., a Sequence flow must link to elements of a single process)

"The Sequence Flows can cross the boundaries between Lanes of a Pool [...], but cannot cross the boundaries of a Pool.

Spec., Chap. 9.2, pg. 112
int value >= 0

implicit

Spec., Chap. 9.2.1, pg. 118
minimum

"The value of maximum MUST be one or greater, AND MUST be equal or greater than the minimum value."

Spec., Chap. 9.2.1, pg. 118
A message flow must connect 'InteractionNodes' from different Pools.

"A Message Flow MUST connect two separate Pools. They connect either to the Pool boundary or to Flow Objects within the Pool boundary.

Spec., Chap. 9.3, pg. 120
see quotation

"A GlobalConversation is a restricted type of Collaboration, it is an 'empty Collaboration'. A GlobalConversation MUST NOT contain any ConversationNodes.

Spec., Chap. 9.4.5, pg. 132
The value of isClosed must be equal in the collaboration and its contained choreography.

"If a Collaboration contains a Choreography, then the value of the isClosed attribute MUST be the same in both."

Spec., Chap. 9.4.8, pg. 137
Flow Elements contained in a Lane which represents a

"When a Lane (in a Process) represents a Conversation, the Flow Elements in the Lane (or elements nested or called in them)

Spec., Chap. 9.5, pg. 137
A Public process may not be marked as executable.

"For public Processes, no value has the same semantics as if the value were false. The value MAY not be true for public Processes."

Spec., Chap. 10, pg. 148
A Process must not contain Choreography Activities (derived rule from FlowElementsContainer)

"Choreography Activities MUST NOT be included as a flowElement for a Process."

Spec., Chap. 8.3.8, pg. 89
int value >= 1

"The default value is 1. The value MUST NOT be less than 1."

Spec., Chap. 10.2, pg. 152
int value >= 1

"The default value is 1. The value MUST NOT be less than 1."

Spec., Chap. 10.2, pg. 153
Either a resourceRef XOR a resourceAssignmentExpression should be used.

"resourceRef: Should not be specified when resourceAssignmentExpression is provided. [...] resourceAssignmentExpression: Should not be specified when a resourceRef is provided."\\

Spec., Chap. 10.2.1, pg. 155
resourceParameterBindings are only allowed if a resourceRef is specified.

"Is only applicable if a resourceRef is specified."

Spec., Chap. 10.2.1, pg. 155
A Task must not have a Loop and a Multi-Instance marker.

"BPMN specifies three types of markers for Task: a Loop marker or a Multi-Instance marker and a Compensation marker. The loop Marker MAY be used in combination with the compensation marker. [...] The multi-instance marker MAY be used in combination with the compensation marker. [...] The Compensation Marker MAY be used in combination with the loop marker or the multi-instance marker."\\

Spec., Chap. 10.2.3, pg. 156-157
Exactly one SubElement <ioSpecification><InputSet> must be present

"The Service Task has exactly one inputSet [...]"

Spec., Chap. 10.2.3.1, pg. 158
At most one Subelement <ioSpecification><OutputSet>

"The Service Task has [...] at most one outputSet."

Spec., Chap. 10.2.3.1, pg. 158
Referenced item must be declared as InputMessage item

"It has a single Data Input with an ItemDefinition equivalent to the one defined by

Spec., Chap. 10.2.3.1, pg. 158
Referenced item must be declared as OutputMessage item.

"If the Operation defines output Messages, the Service Task

Spec., Chap. 10.2.3.1, pg. 158
At most one SubElement <ioSpecification><InputSet> must be present

"[...] constraints apply when the Send Task references a Message: The Send Task has at most one inputSet and one Data Input." (p.160)

Spec., Chap. 10.2.3.1, pg. 160
At most one SubElement <ioSpecification><DataInput> must be present

"[...] constraints apply when the Send Task references a Message: The Send Task has at most one inputSet and one Data Input."

Spec., Chap. 10.2.3.1, pg. 160
An Item must be referenced which must be declared in referenced Message definition

"If the Data Input is present, it MUST have an ItemDefinition equivalent to the one defined by the associated Message."

Spec., Chap. 10.2.3.1, pg. 160
A ReceiveTask with attribute instantiate set to true must not have any incoming sequence flow.

"This attribute MAY be set to true if the Task is the first Activity (i.e., there are no incoming Sequence Flows)." (p.162)

Spec., Chap. 10.2.3.1, pg. 162
At most one SubElement <ioSpecification><OuputSet> must be present

Spec., Chap. 10.2.3.1, pg. 162
At most one SubElement <ioSpecification><DataOutput> must be present

Spec., Chap. 10.2.3.1, pg. 162
An Item must be referenced which must be declared in referenced Message definition

"If the Data output is present, it MUST have an ItemDefinition equivalent to the one defined by the associated Message."

Spec., Chap. 10.2.3.1, pg. 162
If a script is present the script type must be defined.

"[...] And it MUST be specified if a script is provided."

Spec., Chap. 10.2.3.1, pg. 165
At most three Markers (SubProcess Marker, Loop, Multi-Instance, Compensation, Ad-Hoc) may be used.

"A collapsed Sub-Process MAY have one to three of these other markers, in all com\-binations except that loop and multi-instance cannot be shown at the same time."

Spec., Chap. 10.2.5, pg. 175
Loop and MultiInstance markers must not be used in the same SubProcess.

"A collapsed Sub-Process MAY have one to three of these other markers, in all com\-binations except that loop and multi-instance cannot be shown at the same time."

Spec., Chap. 10.2.5, pg. 175
A Process must not contain Choreography Activities (derived rule from FlowElementsContainer)

"Choreography Activities MUST NOT be included as a flowElement for a Process."

Spec., Chap. 8.3.8, pg. 89
An Event Sub-Process MUST NOT have any incoming or outgoing Sequence Flows.

"An Event Sub-Process MUST NOT have any incoming or outgoing Sequence Flows."

Spec., Chap. 10.2.5, pg. 177
An Event Sub-Process MUST have exactly one Start Event.

"An Event Sub-Process MUST have one and only one Start Event."

Spec., Chap. 10.2.5, pg. 177
An Event Sub-Process MUST define at least of the following EventDefinitions:

"The Start Event of an Event Sub-Process MUST have a defined trigger. \textbf{problematic:parallel multiple also allowed on pg. 260} \\

Spec., Chap. 10.2.5, pg. 177
The Transaction method SHOULD refer to a concrete technology using a specific URI.

"For executable Processes, it SHOULD be set to a technology specific URI"

Spec., Chap. 10.2.5, pg. 180
At least one Activity must be contained in an AdHocSubProcess

"The list of BPMN elements that MUST be used in an Ad-Hoc Sub-Process: Activity."

Spec., Chap. 10.2.5, pg. 182
Start Event, End Event, Conversations, Conversation Links

"The list of BPMN elements that MUST NOT be used in an Ad-Hoc Sub-Process:

Spec., Chap. 10.2.5, pg. 182
see quotation

"A Call Activity MUST fulfill the data requirements, as well as return the data

Spec., Chap. 10.2.6, pg. 185
At least one InputOutputBinding must be defined as the Callable Element is exposed as a Service.

"When a CallableElement is exposed as a Service, it has to define one or more InputOutputBinding elements."

Spec., Chap. 10.2.6, pg. 187
see quotation

"An InputOutputBinding element binds one Input and one Output of the InputOutputSpecification to an Operation of a Service Interface."

Spec., Chap. 10.2.6, pg. 187
Constraints defined for Tasks must also be fulfilled by the corresponding global variants.

Spec., Chap. 10.2.7, pg. 188
Either a loopCardinality or a loopDataInputRef must be present.

"In order to initialize a valid multi-instance, either the loopCardinality Expression or the loopDataInput MUST be specified."

Spec., Chap. 10.2.8, pg. 192
Reference must be resolvable to a DataInput defined in the InputOutputSpecification of the Task.

"For Tasks it is a reference to a Data Input which is part of the Activity's InputOutputSpecification."

Spec., Chap. 10.2.8, pg. 192
Type of DataInput must be the scalar of the loopDataInput type.

"The type of this Data Input MUST the scalar of the type defined for the loopDataInput."

Spec., Chap. 10.2.8, pg. 192
Type of DataOutput must be the scalar of the loopDataOutput type.

"The type of this Data Output MUST the scalar of the type defined for the loopDataOutput."

Spec., Chap. 10.2.8, pg. 192
Expression must evaluate to a boolean.

"This attribute defines a boolean Expression [...]"

Spec., Chap. 10.2.8, pg. 193
Expression must evaluate to a boolean.

"This attribute defines a boolean Expression [...]"

Spec., Chap. 10.2.8, pg. 195
DataObjects may not be used outside of a (Sub-)Process.

"Data Object elements MUST be contained within Process or Sub-Process elements."

Spec., Chap. 10.3.1, pg. 205
DataObjects cannot specify states. \emph{\textbf{Issues:XSD allows that explicitly, sections States on p.206 also mentions the ability of defining

"Data Objects cannot specify states."

Spec., Chap. 10.3.1, pg. 205
Data Object Reference cannot specify item definitions \emph{\textbf{Issues:XSD allows that explicitly, sections States on p.206 also mentions the ability of defining

"Data Object Reference cannot specify item definitions"

Spec., Chap. 10.3.1, pg. 205
Naming Convention: name = <Data Object Name> [<Data Object Reference State>]

"The names of Data Object References are derived by concatenating the name of the referenced Data Data Object the state of the Data Object Reference in square brackets as follows: <Data Object Name> [ <Data Object Reference State> ]."

Spec., Chap. 10.3.1, pg. 205
The value of isCollection must be equal to the value in the referenced ItemDefinition.

"If an itemDefinition is referenced, then this attribute MUST have the same value as the isCollection attribute of the referenced itemDefinition."

Spec., Chap. 10.3.1, pg. 206
A Property is only allowed within a Process, Activity or Event.

"Certain flow elements MAY contain properties, in particular only Processes, Activities, and Events MAY contain Properties. [...] Property elements MUST be contained within a FlowElement."\\

Spec., Chap. 10.3.1, pg. 210
InputOutputSpecifications are not allowed in SubProcesses.

"Certain Activities and CallableElements contain a InputOutputSpecification element to describe their data requirements.

Spec., Chap. 10.3.1, pg. 211
DataInputs of a top-level process must not be target of a DataAssociation.

"Data Inputs MAY have incoming Data Associations:

Spec., Chap. 10.3.1, pg. 213
The value of isCollection must be equal to the value in the referenced ItemDefinition.

"If an itemDefinition is referenced, then this attribute MUST have the same value as the isCollection attribute of the referenced itemDefinition."

Spec., Chap. 10.3.1, pg. 215
DataOutputs of a top-level process must not be source of a DataAssociation.

"Data Outputs MAY have outgoing DataAssociations.

Spec., Chap. 10.3.1, pg. 215
The value of isCollection must be equal to the value in the referenced ItemDefinition.

"If an itemDefinition is referenced, then this attribute MUST have the same value as the isCollection attribute of the referenced itemDefinition."

Spec., Chap. 10.3.1, pg. 217
A DataInput must be referenced by at least one InputSet.

"A single DataInput MAY be associated with multiple InputSet elements, but it MUST always be referenced by at least one InputSet."

Spec., Chap. 10.3.1, pg. 218
An optionalInputRef must be listed as dataInputRef.

"This association MUST NOT reference a DataInput that is not listed in the dataInputRefs."

Spec., Chap. 10.3.1, pg. 219
A whileExecutingInputRef must be listed as dataInputRef.

"This association MUST NOT reference a DataInput that is not listed in the dataInputRefs."

Spec., Chap. 10.3.1, pg. 219
Definition of an Input/Output rule: cross referencing between InputSet and OutputSet

"Specifies an Input/Output rule that defines which OutputSet is expected to be created by the Activity when this InputSet became valid.

Spec., Chap. 10.3.1, pg. 219
A DataOutput must be referenced by at least one OutputSet.

"A single DataOutput MAY be associated with multiple OutputSet elements, but it MUST always be referenced by at least one OutputSet."

Spec., Chap. 10.3.1, pg. 219
An optionalOutputRef must be listed as dataOutputRef.

"This association MUST NOT reference a DataOutput that is not listed in the dataOutputRefs."

Spec., Chap. 10.3.1, pg. 221
A whileExecutingOutputRef must be listed as dataOutputRef.

"This association MUST NOT reference a DataOutput that is not listed in the dataOutputRefs."

Spec., Chap. 10.3.1, pg. 221
sourceRef and targetRef must have the same ItemDefinition or a transformation must be present.

"The ItemDefinition from the souceRef and targetRef MUST have the same ItemDefinition or the DataAssociation MUST have a

Spec., Chap. 10.3.1, pg. 221
A single sourceRef must be present.

"If there is no transformation defined or referenced, then only one source MUST be defined [...]"

Spec., Chap. 10.3.1, pg. 222
For each eventDefinition a DataInput or DataOutput must be defined (depending on the type of the event)

"If the Event is associated with multiple EventDefinitions, there MUST be one Data Input (in the case of throw Events)

Spec., Chap. 10.4.1, pg. 235
An itemDefinition must be present for each eventDefintion with its corresponding Data Input/Output.

"For each EventDefinition and Data Input/Output pair, if the Data Input/Output is present, it MUST have an ItemDefinition

Spec., Chap. 10.4.1, pg. 235
EventDefinitions defined in a throw event are only valid within these element.

"These EventDefinitions are only valid inside the current Event."

Spec., Chap. 10.4.1, pg. 237
A Start Event must not have an incoming sequence flow.

"[...] the Start Event [...] will not have any incoming Sequence Flows"

Spec., Chap. 10.4.2, pg. 238
A Start event must be present when an End event is used in the same process level.

"If there is an End Event, then there MUST be at least one Start Event."

Spec., Chap. 10.4.2, pg. 239
Only messageEventDefininitions, timerEventDefinitions, conditionalEventDefinitions and signalEventDefinition are allowed for top-level process start events.

"There are seven (7) types of Start Events for top-level Processes in BPMN (see Table 10.84): None, Message, Timer,

Spec., Chap. 10.4.2, pg. 240
Referenced process must have at least one None Start Event.

"A top-level Process that has at least one None Start Event MAY be called by a Call Activity in another Process.

Spec., Chap. 10.4.2, pg. 240
No EventDefinition is allowed for Start Events in Sub-Process definitions.

"There is only one type of Start Event for Sub-Processes in BPMN (see Figure 10.82): None."

Spec., Chap. 10.4.2, pg. 241
A Start Event MUST be a source for a Sequence Flow.

"A Start Event MUST be a source for a Sequence Flow."

Spec., Chap. 10.4.2, pg. 245
A Start Event MUST NOT be a source for a message flow.

"A Start Event MUST NOT be a source for a Message Flow; it MUST NOT have outgoing Message Flows."

Spec., Chap. 10.4.2, pg. 245
If a Start Event is target of a MessageFlow definition, at least one messageEventDefinition must be present.

implicit

Spec., Chap. 10.4.2, pg. \$constraint.extended.getSource().get(0).page
An End Event must not have an outgoing sequence flow.

"[...] the End Event [...] will not have any outgoing Sequence Flows" (p.246) & \newline

Spec., Chap. 10.4.3, pg. 249
An end event must be present when a start event is used in the same process level.

"If there is a Start Event, then there MUST be at least one End Event."

Spec., Chap. 10.4.3, pg. 247
A cancel EndEvent is only allowed in a transaction sub-process.

"This type of End is used within a Transaction Sub-Process."

Spec., Chap. 10.4.3, pg. 248
An End Event MUST have at least one incoming Sequence Flow.

"An End Event MUST be a target for a Sequence Flow. An End Event MAY have multiple incoming Sequence Flows."

Spec., Chap. 10.4.3, pg. 249
An End Event MUST NOT be a target for a message flow.

"An End Event MUST NOT be the target of a Message Flow; it can have no incoming Message Flows."

Spec., Chap. 10.4.3, pg. 249
If an end event is source of a MessageFlow definition, at least one messageEventDefinition must be present.

"The Result attribute of the End Event MUST be set to Message or Multiple if there are any outgoing Message Flows.

Spec., Chap. 10.4.3, pg. 249
omg2011bpmn

Table 10.92

Spec., Chap. 10.4.4, pg. 258
The Transaction attribute of a Sub-Process with an attached CancelBoundaryEvent must be true.

"An Intermediate Event with a Cancel trigger MAY be attached to a Sub-Process boundary only if the Transaction attribute of the Sub-Process is set to true."

Spec., Chap. 10.4.4, pg. 259
A boundary event must not be target of a Sequence Flow.

"If the Intermediate Event is attached to the boundary of an Activity:

Spec., Chap. 10.4.4, pg. 259
A boundary event must be a source of at least a SequenceFlow.

"[If the Intermediate Event is attached to the boundary of an Activity:] An exception to this: an Intermediate Event with a Compensation trigger MUST NOT have an outgoing Sequence Flow (it MAY have an outgoing Association)."\\

Spec., Chap. 10.4.4, pg. 259
A compensation boundary event MUST NOT have an outgoing Sequence Flow (it MAY have an outgoing Association).

"[If the Intermediate Event is attached to the boundary of an Activity:] The Intermediate Event MUST be a source for a Sequence Flow. [...] An exception to this: an Intermediate Event with a Compensation trigger MUST NOT have an outgoing Sequence Flow (it MAY have an outgoing Association)."\\

Spec., Chap. 10.4.4, pg. 259
Intermediate Events MUST be a target of at least a Sequence Flow.

"If the Intermediate Event is used within normal flow: Intermediate Events MUST be a target of a Sequence Flow. [...]

Spec., Chap. 10.4.4, pg. 259
Intermediate Events MUST be a source of at least a Sequence Flow.

"An Intermediate Event MUST be a source for a Sequence Flow. Multiple Sequence Flows MAY originate from an Intermediate Event.

Spec., Chap. 10.4.4, pg. 259
A Link Intermediate Event MUST NOT be both a target and a source of a Sequence Flow.

"A Link Intermediate Event MUST NOT be both a target and a source of a Sequence Flow." \newline

Spec., Chap. 10.4.4, pg. 259
For each source Link there must exist a correspondig target. There may be multiple sources for one target.

"If there is a source Link, there MUST be a matching target Link (they have the same name).

Spec., Chap. 10.4.4, pg. 259
A Message Intermediate Event MAY have an incoming Message Flow or an outgoing Message Flow, but not both.

"- A Message Intermediate Event MAY be the target for a Message Flow; it can have one incoming Message Flow. - A Message Intermediate Event MAY be a source for a Message Flow; it can have one outgoing Message Flow. - A Message Intermediate Event MAY have an incoming Message Flow or an outgoing Message Flow, but not both."

Spec., Chap. 10.4.4, pg. 260
A cancel Intermediate Event must be attached to a Transaction Sub-Process.

"The catch Cancel Intermediate Event MUST only be attached to the boundary of a Transaction Sub-Process and, thus, MAY NOT be used in normal flow."

Spec., Chap. 10.4.5, pg. 263
A compensation start event is only allowed for Event Sub-Processes.

"The Compensation Start Event MAY NOT be used for a top-level Process. The Compensation Start Event MAY be used for an Event Sub-Process."

Spec., Chap. 10.4.5, pg. 263
The catch Compensation Intermediate Event MUST only be attached to the boundary of an Activity and, thus, MAY NOT be used in normal flow. The throw Compensation Intermediate Event MAY be used in normal flow.\\

"The catch Compensation Intermediate Event MUST only be attached to the boundary of an Activity and, thus, MAY NOT be used in normal flow. The throw Compensation Intermediate Event MAY be used in normal flow."\\

Spec., Chap. 10.4.5, pg. 263
For executable Processes (isExecutable = true), if the trigger is Conditional, then a FormalExpression MUST be entered.

"For executable Processes (isExecutable = true), if the trigger is Conditional, then a FormalExpression MUST be entered."

Spec., Chap. 10.4.5, pg. 265
A LinkEventDefinition in a Catch Event must have at least one source Element.

http://www.omg.org/issues/bpmn2-rtf.open.html\#Issue15739)

Spec., Chap. 10.4.5, pg. 270
A LinkEventDefinition in a Throw Event must have exactly one target Element.

http://www.omg.org/issues/bpmn2-rtf.open.html\#Issue15739)

Spec., Chap. 10.4.5, pg. 270
Links are only allowed to a target in the same process and process level.

"The use of Link Events is limited to a single Process level (i.e., they cannot link a parent Process with a Sub-Process)."

Spec., Chap. 10.4.5, pg. 267
A messageRef must be present if the process should be executable.

"The Message MUST be supplied (if the isExecutable attribute of the Process is set to true)."

Spec., Chap. 10.4.5, pg. 271
An operationRef must be present if the process should be executable.

"It MUST be specified for executable Processes."

Spec., Chap. 10.4.5, pg. 271
The None Start Event MAY NOT be used for an Event Sub-Process. (i.e. there must exist at least one EventDefinition)

"The None Start Event MAY NOT be used for an Event Sub-Process."

Spec., Chap. 10.4.5, pg. 272
A catch None BoundaryEvent is not allowed.

"The catch None Intermediate Event MUST only be used in normal flow and, thus, MAY NOT be attached to the boundary of an Activity."

Spec., Chap. 10.4.5, pg. 272
Timer attributes are mutually exclusive, i.e., only one of the Attributes timeDate, timeCycle and timeDuration might be set for executable processes.

"Timer attributes are mutually exclusive [...] (if the isExecutable attribute of the Process is set to true)"

Spec., Chap. 10.4.5, pg. 273
The return type of the attribute timeDate MUST conform to the ISO-8601 format for date and time representations.

"The return type of the attribute timeDate MUST conform to the ISO-8601 format for date and time representations."

Spec., Chap. 10.4.5, pg. 273
The return type of the attribute timeCycle MUST conform to the ISO-8601 format for date and time representations.

"The return type of the attribute timeCycle MUST conform to the ISO-8601 format for date and time representations."

Spec., Chap. 10.4.5, pg. 273
The return type of the attribute timeDuration MUST conform to the ISO-8601 format for date and time representations.

"The return type of the attribute timeDuration MUST conform to the ISO-8601 format for date and time representations."

Spec., Chap. 10.4.5, pg. 273
A Gateway MUST have either multiple incoming Sequence Flows or multiple outgoing Sequence Flows.

"A Gateway MUST have either multiple incoming Sequence Flows or multiple outgoing Sequence Flows (i.e., it MUST merge or split the flow)."

Spec., Chap. 10.5.1, pg. 290
An Event Gateway MUST have two or more outgoing Sequence Flows.

"An Event Gateway MUST have two or more outgoing Sequence Flows."

Spec., Chap. 10.5.6, pg. 297
The outgoing Sequence Flows of the Event Gateway MUST NOT have a conditionExpression.

"The outgoing Sequence Flows of the Event Gateway MUST NOT have a conditionExpression."

Spec., Chap. 10.5.6, pg. 297
An eventBasedGateway may only be connected to an ReceiveTask or one of the following intermediate Events:

"Event-Based Gateways are configured by having outgoing Sequence Flows target an Intermediate Event or a Receive Task in any combination

Spec., Chap. 10.5.6, pg. 298
If Message Intermediate Events are used in the configuration, then Receive Tasks MUST NOT be used in that configuration and vice versa.

"If Message Intermediate Events are used in the configuration, then Receive Tasks MUST NOT be used in that configuration and vice versa."

Spec., Chap. 10.5.6, pg. 298
Receive Tasks used in an Event Gateway configuration MUST NOT have any attached Intermediate Events.

"Receive Tasks used in an Event Gateway configuration MUST NOT have any attached Intermediate Events."

Spec., Chap. 10.5.6, pg. 298
Targets of an EventBasedGateway must not have any other incoming SequenceFlow.

"Target elements in an Event Gateway configuration MUST NOT have any additional incoming Sequence Flows (other than that from the Event Gateway)."

Spec., Chap. 10.5.6, pg. 298
When an EventBasedGateway is used to instantiate a process instance no Incoming Sequence Flow is allowed.

"In order for an Event Gateway to instantiate a Process, it MUST not have any incoming Sequence Flows."

Spec., Chap. 10.5.6, pg. 299
A compensateBoundaryEvent must be connected with an Association to a Compensation Activity.

"This compensation is modeled with a specialized Compensation Activity, which is connected to the boundary Event through an Association"

Spec., Chap. 10.6.1, pg. 303
The associated Activity must be a Task or a Sub-Process which is marked for compensation (i.e., isForCompensation=true)

"The Compensation Activity, which can be either a Task or a Sub-Process, has a marker to show that it is used for compensation only and is

Spec., Chap. 10.6.1, pg. 303
The value must be in mime-type format.

"This attribute value MUST be specified with a mime-type format."

Spec., Chap. 10.2.3.1, pg. 165
Only messageEventDefininitions, escalationEventDefinitions, errorEventDefinitions, cancelEventDefinitions, compensationEventDefinitions, signalEventDefinitions and terminateEventDefinitions are allowed for end events.

"There are nine types of End Events in BPMN: None, Message, Escalation, Error, Cancel, Compensation, Signal, Terminate, and Multiple." & Table 10.88

Spec., Chap. 10.4.3, pg. 247-249
Only messageEventDefininitions, timerEventDefinitions, escalationEventDefinitions, errorEventDefinitions,

(Table 10.90)

Spec., Chap. 10.4.4, pg. 254-257
Only messageEventDefininitions, timerEventDefinitions, conditionalEventDefinitions,

(Table 10.89)

Spec., Chap. 10.4.4, pg. 251-254
Only messageEventDefininitions, escalationEventDefinitions, compensationEventDefinitions, linkEventDefinitions and

(Table 10.89)

Spec., Chap. 10.4.4, pg. 251-254
If a start event is used to initiate a process, all flow nodes (besides start events, boundary events and catching Link events, compensation activies and event subprocesses) must have an incoming sequence flow.

"A Start Event is OPTIONAL: a Process level [...] MAY (is NOT REQUIRED to) have a Start Event." (p.238) \newline

Spec., Chap. 10.4.2, pg. 238-239
If end events are used, all flow nodes other (besides end events, throwing Link events, compensating activities and event subprocesses) must have an outgoing sequence flow.

"An End Event is OPTIONAL: a given Process level [...] MAY (is NOT REQUIRED to) have this shape [...]

Spec., Chap. 10.4.3, pg. 246-247
A Sequence Flow must not cross the border of a SubProcess, but must link to the SubProcess itself (i.e., a Sequence flow must not to elements within a subprocess)

Silver2011