ID |
NameU |
Category |
Description |
RuleTarget |
RuleFilter |
RuleTest |
1 |
ImproperAssociation |
Association |
An Association must not connect Data Objects, Data Stores or Messages. |
|
AND(HASCATEGORY("Connecting Object"),Actions.Association.Checked) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(3), "OR(HASCATEGORY(""Data Object""),HASCATEGORY(""Data Store""),HASCATEGORY(""Message""))") ) <2 |
2 |
CancelOutsideOfTransaction |
Intermediate Events |
An Intermediate Cancel Event must be attached to the boundary of a Transaction. |
|
AND(HASCATEGORY("Event"),Actions.Cancel.Checked, Actions.Intermediate.Checked) |
OR(AGGCOUNT(FILTERSET(OnBoundaryOf(),"Prop.BpmnIsATransaction")) > 0,AGGCOUNT(FILTERSET(GLUEDSHAPES(5),"Prop.BpmnIsATransaction")) > 0) |
3 |
SequenceFlowCrossingPoolBoundary |
Sequence Flow |
Sequence Flow must not cross a Pool boundary. |
|
AND(HASCATEGORY("Connecting Object"),Actions.SequenceFlow.Checked) |
IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""CFF List"")"))=0,AGGCOUNT(FILTERSET(GLUEDSHAPES(3), "AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""CFF List"""")""))>0"))=0 , TRUE) |
4 |
MessageFlowSamePool |
Message Flow |
Message Flow must not connect elements that are in the same Pool. |
|
AND(HASCATEGORY("Connecting Object"),Actions.MessageFlow.Checked) |
AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""CFF List"")"))=0 |
5 |
StartEventTarget |
Start Events |
A Start Event must not have incoming Sequence Flow unless it is on the boundary of an Expanded Sub-Process. |
|
AND(HASCATEGORY("Event"),OR(Actions.Start.Checked, Actions.StartNonInterrupting.Checked)) |
OR(AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.SequenceFlow.Checked"))=0,AGGCOUNT(FILTERSET(OnBoundaryOf(),"HASCATEGORY(""Expanded Sub-Process"")")) > 0) |
6 |
MissingEndEvent |
End Events |
If a Start Event is used in the top-level Process, then an End Event must also be used in the top-level Process. |
|
AGGCOUNT(FILTERSET(ThePage!SHAPESONPAGE(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))>0 |
AGGCOUNT(FILTERSET(ThePage!SHAPESONPAGE(),"AND(Actions.End.Checked,AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))>0 |
7 |
MissingEndEventInTask |
End Events |
If a Start Event is used in an Expanded Sub-Process, then an End Event must also be used in the Expanded Sub-Process. |
|
HASCATEGORY("Expanded Sub-Process") |
IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=0, OR(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked), AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=1,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))=0, AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),Actions.End.Checked,AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=1,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))>0),IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=1, OR(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked), AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=2,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))=0, AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),Actions.End.Checked,AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=2,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))>0),IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=2, OR(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked), AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=3,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))=0, AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),Actions.End.Checked,AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=3,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))>0), TRUE))) |
8 |
MissingEndEventOnBoundary |
End Events |
If a Start Event is attached to an Expanded Sub-Process boundary, then an End Event must also be attached to the boundary. |
|
HASCATEGORY("Expanded Sub-Process") |
IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=0, OR(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked), AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=1,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))>0)"))=0, AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),Actions.End.Checked,AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=1,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))>0)"))>0),IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=1, OR(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked), AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=2,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))>0)"))=0, AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),Actions.End.Checked,AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=2,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))>0)"))>0),IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=2, OR(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked), AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=3,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))>0)"))=0, AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),Actions.End.Checked,AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=3,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))>0)"))>0), TRUE))) |
9 |
MissingStartEvent |
Start Events |
If an End Event is used in the top-level Process, then at least one Start Event must also be used in the top-level Process. |
|
AGGCOUNT(FILTERSET(ThePage!SHAPESONPAGE(),"AND(HASCATEGORY(""Event""),Actions.End.Checked,AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))>0 |
AGGCOUNT(FILTERSET(ThePage!SHAPESONPAGE(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))>0 |
10 |
MissingStartEventInTask |
Start Events |
If an End Event is used in an Expanded Sub-Process, then a Start Event must also be used in the Expanded Sub-Process. |
|
HASCATEGORY("Expanded Sub-Process") |
IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=0, OR(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),Actions.End.Checked, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=1,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))=0, AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=1,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))>0),IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=1, OR(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),Actions.End.Checked, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=2,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))=0, AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=2,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))>0),IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=2, OR(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),Actions.End.Checked, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=3,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))=0, AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=3,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))>0), TRUE))) |
11 |
MissingStartEventOnBoundary |
Start Events |
If an End Event is attached to an Expanded Sub-Process boundary, then an Start Event must also be attached to the boundary. |
|
HASCATEGORY("Expanded Sub-Process") |
IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=0, OR(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),Actions.End.Checked, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=1,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))>0)"))=0, AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=1,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))>0)"))>0),IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=1, OR(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),Actions.End.Checked, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=2,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))>0)"))=0, AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=2,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))>0)"))>0),IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=2, OR(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),Actions.End.Checked, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=3,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))>0)"))=0, AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=3,AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))>0)"))>0), TRUE))) |
12 |
SequenceFlowCrossingSubProcessBoundary |
Sequence Flow |
Sequence Flow must not cross an Expanded Sub-Process boundary. |
|
AND(HASCATEGORY("Connecting Object"),Actions.SequenceFlow.Checked) |
IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=0,AGGCOUNT(FILTERSET(GLUEDSHAPES(3), "AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))<>AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")""))"))=0 , IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=1,AGGCOUNT(FILTERSET(GLUEDSHAPES(3), "AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")"")) - AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")"")) > 1"))=0 , IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=2,AGGCOUNT(FILTERSET(GLUEDSHAPES(3), "OR(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")"")) - AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")"")) > 2, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")"")) - AGGCOUNT(FILTERSET(ONBOUNDARYOF(),""HASCATEGORY(""""Expanded Sub-Process"""")"")) = 0)"))=0 , TRUE))) |
13 |
SequenceFlowFromGateways |
Gateways |
When Start and End Events are used, a Gateway must have outgoing Sequence Flow. |
|
HASCATEGORY("Gateway") |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"Actions.SequenceFlow.Checked"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=0, AGGCOUNT(FILTERSET(ThePage!SHAPESONPAGE(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked), AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=1, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(HASCATEGORY(""""Event""""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=1)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=2, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(HASCATEGORY(""""Event""""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=2)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=3, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(HASCATEGORY(""""Event""""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=3)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,TRUE)))),TRUE) |
14 |
SequenceFlowToGateways |
Gateways |
When Start and End Events are used, a Gateway must have incoming Sequence Flow. |
|
HASCATEGORY("Gateway") |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.SequenceFlow.Checked"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=0, AGGCOUNT(FILTERSET(ThePage!SHAPESONPAGE(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked), AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=1, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(HASCATEGORY(""""Event""""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=1)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=2, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(HASCATEGORY(""""Event""""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=2)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=3, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(HASCATEGORY(""""Event""""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=3)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,TRUE)))),TRUE) |
15 |
SequenceFlowFromActivities |
Activities |
When Start and End Events are used, a Task or Collapsed Sub-Process must have outgoing Sequence Flow unless it is a Compensation Activity. |
|
AND(NOT(Prop.BpmnIsForCompensation),NOT(HASCATEGORY("Expanded Sub-Process"))) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"Actions.SequenceFlow.Checked"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=0, AGGCOUNT(FILTERSET(ThePage!SHAPESONPAGE(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked), AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=1, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(HASCATEGORY(""""Event""""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=1)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=2, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(HASCATEGORY(""""Event""""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=2)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=3, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(HASCATEGORY(""""Event""""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=3)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,TRUE)))),TRUE) |
16 |
WrongNumberOfOutgoingSequenceFlows |
Intermediate Events |
An Intermediate Event must have exactly one outgoing Sequence Flow unless it has the Compensation Trigger/Result. |
|
AND(HASCATEGORY("Event"),Actions.Intermediate.Checked,NOT(Actions.Compensation.Checked)) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(2), "Actions.SequenceFlow.Checked")) = 1 |
17 |
WrongNumberOfOutgoingSequenceFlows2 |
Intermediate Events |
An Intermediate (Throwing) Event must have exactly one outgoing Sequence Flow unless it has the Link Trigger/Result. |
|
AND(HASCATEGORY("Event"),Actions.IntermediateThrowing.Checked,NOT(Actions.Link.Checked)) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(2), "Actions.SequenceFlow.Checked")) = 1 |
18 |
NoSequenceFlowFromStartEvent |
Start Events |
A Start Event must have outgoing Sequence Flow. |
|
AND(HASCATEGORY("Event"),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked)) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"Actions.SequenceFlow.Checked"))>0 |
19 |
SequenceFlowToActivities |
Activities |
When Start and End Events are used, a Task or Collapsed Sub-Process must have incoming Sequence Flow unless it is a Compensation Activity. |
|
AND(NOT(Prop.BpmnIsForCompensation), NOT(HASCATEGORY("Expanded Sub-Process"))) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.SequenceFlow.Checked"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=0, AGGCOUNT(FILTERSET(ThePage!SHAPESONPAGE(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked), AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=1, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(HASCATEGORY(""""Event""""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=1)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=2, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(HASCATEGORY(""""Event""""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=2)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=3, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(HASCATEGORY(""""Event""""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=3)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,TRUE)))),TRUE) |
20 |
SequenceFlowToEvents |
Intermediate Events |
When Start and End Events are used, an Intermediate Event must have incoming Sequence Flow unless it is attached to the boundary of an Activity or has the Link Trigger/Result. |
|
AND(HASCATEGORY("Event"),Actions.Intermediate.Checked,NOT(OR(Actions.Link.Checked,Actions.NoTriggerResult.Checked, Actions.Compensation.Checked,Actions.Error.Checked,Actions.Cancel.Checked)),AND(AGGCOUNT(FILTERSET(OnBoundaryOf(),"HASCATEGORY(""Expanded Sub-Process"")")) = 0, AGGCOUNT(FILTERSET(GLUEDSHAPES(5),"OR(HASCATEGORY(""Task""),HASCATEGORY(""Collapsed Sub-Process""))")) = 0)) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.SequenceFlow.Checked"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=0, AGGCOUNT(FILTERSET(ThePage!SHAPESONPAGE(),"AND(OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked), AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=1, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=1)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=2, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=2)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=3, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=3)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,TRUE)))),TRUE) |
21 |
SequenceFlowToEvents2 |
Intermediate Events |
When Start and End Events are used, an Intermediate (Throwing) Event must have incoming Sequence Flow. |
|
AND(HASCATEGORY("Event"),Actions.IntermediateThrowing.Checked, NOT(OR(Actions.NoTriggerResult.Checked, Actions.Compensation.Checked))) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.SequenceFlow.Checked"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=0, AGGCOUNT(FILTERSET(ThePage!SHAPESONPAGE(),"AND(OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked), AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=1, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=1)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=2, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=2)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,IF(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))=3, AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(AGGCOUNT(FILTERSET(CONTAINERMEMBERS(),""AND(OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""""HASCATEGORY(""""""""Expanded Sub-Process"""""""")""""))=3)""))>0, HASCATEGORY(""Expanded Sub-Process""))"))=0,TRUE)))),TRUE) |
22 |
NoSequenceFlowToEndEvent |
End Events |
An End Event must have incoming Sequence Flow. |
|
AND(HASCATEGORY("Event"),Actions.End.Checked) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.SequenceFlow.Checked"))>0 |
23 |
WrongNumberOfIncomingSequenceFlowsIntermediateThrowing |
Intermediate Events |
An Intermediate (Throwing) Event with the None or Compensation Trigger/Result must have exactly one incoming Sequence Flow. |
|
AND(HASCATEGORY("Event"),Actions.IntermediateThrowing.Checked,OR(Actions.NoTriggerResult.Checked, Actions.Compensation.Checked)) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(1), "Actions.SequenceFlow.Checked")) = 1 |
24 |
WrongNumberOfIncomingSequenceFlowsIntermediate1 |
Intermediate Events |
An Intermediate Compensation Event must have exactly one incoming Sequence Flow unless it is on the boundary of an Activity. |
|
AND(HASCATEGORY("Event"),Actions.Intermediate.Checked,Actions.Compensation.Checked) |
IF(AND(AGGCOUNT(FILTERSET(OnBoundaryOf(),"HASCATEGORY(""Expanded Sub-Process"")"))=0,AGGCOUNT(FILTERSET(GLUEDSHAPES(5), "OR(HASCATEGORY(""Task""),HASCATEGORY(""Collapsed Sub-Process""))"))=0),AGGCOUNT(FILTERSET(GLUEDSHAPES(1), "Actions.SequenceFlow.Checked")) = 1, TRUE) |
25 |
WrongNumberOfIncomingSequenceFlowsIntermediate2 |
Intermediate Events |
An Intermediate Event with the None Trigger/Result must have exactly one incoming Sequence Flow. |
|
AND(HASCATEGORY("Event"),Actions.Intermediate.Checked,Actions.NoTriggerResult.Checked) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(1), "Actions.SequenceFlow.Checked")) = 1 |
26 |
WrongNumberOfOutgoingSequenceFlows3 |
Intermediate Events |
An Intermediate (Non-Interrupting) Event must have exactly one outgoing Sequence Flow. |
|
AND(HASCATEGORY("Event"),Actions.IntermediateNonInterrupting.Checked) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(2), "Actions.SequenceFlow.Checked")) = 1 |
27 |
CompensationOutgoingFlow |
Intermediate Events |
An Intermediate Compensation Event must not have outgoing Sequence Flow if it is on the boundary of an Activity. |
|
AND(HASCATEGORY("Event"),Actions.Intermediate.Checked,Actions.Compensation.Checked) |
IF(OR(AGGCOUNT(FILTERSET(OnBoundaryOf(),"HASCATEGORY(""Expanded Sub-Process"")"))>0,AGGCOUNT(FILTERSET(GLUEDSHAPES(5), "OR(HASCATEGORY(""Task""),HASCATEGORY(""Collapsed Sub-Process""))"))>0),AGGCOUNT(FILTERSET(GLUEDSHAPES(2), "Actions.SequenceFlow.Checked")) = 0,TRUE) |
28 |
SequenceFlowToBoundaryEvent |
Intermediate Events |
An Intermediate or Intermediate (Non-Interrupting) Event on an Activity boundary must not have incoming Sequence Flow. |
|
AND(HASCATEGORY("Event"),OR(Actions.Intermediate.Checked,Actions.IntermediateNonInterrupting.Checked)) |
IF(OR(AGGCOUNT(FILTERSET(OnBoundaryOf(),"HASCATEGORY(""Expanded Sub-Process"")"))>0,AGGCOUNT(FILTERSET(GLUEDSHAPES(5), "OR(HASCATEGORY(""Task""),HASCATEGORY(""Collapsed Sub-Process""))"))>0),AGGCOUNT(FILTERSET(GLUEDSHAPES(1), "Actions.SequenceFlow.Checked")) = 0,TRUE) |
29 |
CancelButNoTransaction |
End Events |
An End Cancel Event must not occur outside a Transaction Expanded Sub-Process. |
|
AND(HASCATEGORY("Event"),Actions.End.Checked, Actions.Cancel.Checked) |
AND(AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(HASCATEGORY(""Expanded Sub-Process""),Prop.BpmnIsATransaction)"))>0, AGGCOUNT(FILTERSET(OnBoundaryOf(),"AND(HASCATEGORY(""Expanded Sub-Process""),Prop.BpmnIsATransaction)"))=0) |
30 |
SequenceFlowFromEndEvent |
End Events |
An End Event must not have outgoing Sequence Flow unless it is on the boundary of an Expanded Sub-Process. |
|
AND(HASCATEGORY("Event"),Actions.End.Checked) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(2), "Actions.SequenceFlow.Checked"))>0,OR(AGGCOUNT(FILTERSET(OnBoundaryOf(),"HASCATEGORY(""Expanded Sub-Process"")")) > 0, AGGCOUNT(FILTERSET(GLUEDSHAPES(5),"HASCATEGORY(""Expanded Sub-Process"")")) > 0), TRUE) |
31 |
LinkOrNoneOnBoundary |
Intermediate Events |
An Intermediate Event attached to the boundary of an Activity must not have the None or Link Trigger/Result. |
|
AND(HASCATEGORY("Event"),Actions.Intermediate.Checked,OR(Actions.NoTriggerResult.Checked, Actions.Link.Checked)) |
AND(AGGCOUNT(FILTERSET(OnBoundaryOf(),"HASCATEGORY(""Expanded Sub-Process"")")) = 0,AGGCOUNT(FILTERSET(GLUEDSHAPES(5),"OR(HASCATEGORY(""Task""),HASCATEGORY(""Collapsed Sub-Process""))")) = 0) |
32 |
LinkTargetAndSource |
Intermediate Events |
A Link Event must not have both incoming and outgoing Sequence Flow. |
|
AND(HASCATEGORY("Event"),Actions.Link.Checked,OR(Actions.Intermediate.Checked, Actions.IntermediateThrowing.Checked)) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(1), "Actions.SequenceFlow.Checked")) >0, AGGCOUNT(FILTERSET(GLUEDSHAPES(2), "Actions.SequenceFlow.Checked")) =0,TRUE) |
33 |
ReceiveTaskOutgoingFlow |
Tasks |
A Receive Task must not have outgoing Message Flow. |
|
AND(HASCATEGORY("Task"), Actions.Receive.Checked) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(2), "Actions.MessageFlow.Checked")) = 0 |
34 |
SendIncomingMessageFlow |
Tasks |
A Send Task must not have incoming Message Flow. |
|
AND(HASCATEGORY("Task"), Actions.Send.Checked) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(1), "Actions.MessageFlow.Checked")) = 0 |
35 |
ScriptManualMessageFlow |
Tasks |
A Script or Manual Task must not have incoming or outgoing Message Flow. |
|
AND(HASCATEGORY("Task"),OR(Actions.Script.Checked,STRSAME(Prop.BpmnTaskType,INDEX(7,Prop.BpmnTaskType.Format)))) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(0), "Actions.MessageFlow.Checked")) = 0 |
36 |
TooFewGates |
Gateways |
A Gateway with fewer than two incoming Sequence Flows must have at least two outgoing Sequence Flows. |
|
HASCATEGORY("Gateway") |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.SequenceFlow.Checked")) < 2,AGGCOUNT(FILTERSET(GLUEDSHAPES(2), "Actions.SequenceFlow.Checked")) >1,TRUE) |
37 |
InconsistentGateIndicator |
Gateways |
A diagram should be consistent in the use of the "X" internal indicator on Exclusive Data Gateways. |
|
AGGCOUNT(FILTERSET(SHAPESONPAGE(),"AND(HASCATEGORY(""Gateway""),Actions.ExclusiveDataWithMarker.Checked)"))>0 |
AGGCOUNT(FILTERSET(SHAPESONPAGE(),"AND(HASCATEGORY(""Gateway""), Actions.ExclusiveData.Checked)"))=0 |
38 |
InvalidGatewayTarget |
Gateways |
The outgoing Sequence Flow of an Exclusive Event Gateway must connect to a Receive Task or an Intermediate Event with the Message, Timer, or Signal Trigger/Result. |
|
AND(HASCATEGORY("Connecting Object"),Actions.SequenceFlow.Checked) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(4),"AND(HASCATEGORY(""Gateway""), Actions.ExclusiveEvent.Checked)"))>0,OR(AGGCOUNT(FILTERSET(GLUEDSHAPES(5), "Actions.Receive.Checked"))>0,AGGCOUNT(FILTERSET(GLUEDSHAPES(5),"AND(OR(Actions.Intermediate.Checked, Actions.IntermediateThrowing.Checked),OR(Actions.Message.Checked, Actions.Timer.Checked, Actions.Signal.Checked))"))>0),TRUE) |
39 |
InconsistentGatewayTargets |
Gateways |
An Exclusive Event Gateway must not have outgoing Sequence Flow to both Tasks and Intermediate Events with the Message Trigger/Result. |
|
AND(HASCATEGORY("Gateway"), Actions.ExclusiveEvent.Checked) |
IF(AGGCOUNT(FILTERSET(CONNECTEDSHAPES(2), "HASCATEGORY(""Task"")"))>0,AGGCOUNT(FILTERSET(CONNECTEDSHAPES(2),"AND(OR(Actions.Intermediate.Checked, Actions.IntermediateThrowing.Checked),Actions.Message.Checked)"))=0,TRUE) |
40 |
OutgoingConditionalSequenceFlow |
Activities |
If an Activity has outgoing Conditional Sequence Flow, then it must have at least one other outgoing Sequence Flow. |
|
OR(HASCATEGORY("Expanded Sub-Process"),HASCATEGORY("Task"),HASCATEGORY("Collapsed Sub-Process")) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"AND(Actions.SequenceFlow.Checked, Actions.ConditionExpression.Checked)")) >0,AGGCOUNT(FILTERSET(GLUEDSHAPES(2), "Actions.SequenceFlow.Checked")) >1,TRUE) |
41 |
DataObjectNoAssociation |
Artifacts |
A Data Object or Data Store must be connected to at least one Association. |
|
OR(HASCATEGORY("Data Object"),HASCATEGORY("Data Store")) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(0),"Actions.Association.Checked"))>0 |
42 |
ImproperAssociation2 |
Association |
An Association must connect to a Data Object, Data Store, Message or Text Annotation, unless it connects a Compensation Event to a Compensation Activity. |
|
AND(HASCATEGORY("Connecting Object"),Actions.Association.Checked) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(3), "OR(HASCATEGORY(""Data Object""),HASCATEGORY(""Text Annotation""),HASCATEGORY(""Message""),HASCATEGORY(""Data Store""))"))=0, OR(AND(AGGCOUNT(FILTERSET(GLUEDSHAPES(4),"AND(HASCATEGORY(""Event""),Actions.Compensation.Checked)"))>0,AGGCOUNT(FILTERSET(GLUEDSHAPES(5),"Prop.BpmnIsForCompensation"))>0),AND(AGGCOUNT(FILTERSET(GLUEDSHAPES(5),"AND(HASCATEGORY(""Event""),Actions.Compensation.Checked)"))>0,AGGCOUNT(FILTERSET(GLUEDSHAPES(4),"Prop.BpmnIsForCompensation"))>0)),TRUE) |
43 |
CompensationActivitySequenceFlow |
Activities |
A Compensation Activity must not have incoming or outgoing Sequence Flow. |
|
Prop.BpmnIsForCompensation |
AGGCOUNT(FILTERSET(GLUEDSHAPES(0),"Actions.SequenceFlow.Checked"))=0 |
44 |
SameSourceAndTarget |
Sequence Flow, Message Flow |
The source and target must not be the same. |
|
OR(Actions.MessageFlow.Checked, Actions.SequenceFlow.Checked) |
NOT(AND(AGGCOUNT(GLUEDSHAPES(3))=1,AGGCOUNT(GLUEDSHAPES(4))=1, AGGCOUNT(GLUEDSHAPES(5))=1)) |
45 |
NoTargetOrSource |
Sequence Flow, Message Flow |
The flow must have a source and target. |
|
OR(Actions.MessageFlow.Checked, Actions.SequenceFlow.Checked) |
AND(AGGCOUNT(GLUEDSHAPES(4))=1,AGGCOUNT(GLUEDSHAPES(5))=1) |
46 |
NoTargetOrSourceAssociation |
Association |
An Association must have a source and a target. |
|
AND(HASCATEGORY("Connecting Object"),Actions.Association.Checked) |
AND(AGGCOUNT(GLUEDSHAPES(4))=1,AGGCOUNT(GLUEDSHAPES(5))=1) |
47 |
SequenceFlowBetweenNonFlowObjects |
Sequence Flow |
A Data Object, Data Store, Lane, Message, Pool, Text Annotation or Group must not have incoming or outgoing Sequence Flow. |
|
OR(HASCATEGORY("Text Annotation"), HASCATEGORY("Data Object"), HASCATEGORY("Group"),HASCATEGORY("Swimlane"), HASCATEGORY("Pool"),HASCATEGORY("Message"),HASCATEGORY("Data Store")) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(0),"Actions.SequenceFlow.Checked"))=0 |
48 |
ImproperMessageFlowConnection |
Message Flow |
A Gateway, Data Object, Data Store, Lane, Text Annotation or Group must not have incoming or outgoing Message Flow. |
|
OR(HASCATEGORY("Gateway"), HASCATEGORY("Text Annotation"), HASCATEGORY("Data Object"), HASCATEGORY("Group"),HASCATEGORY("Swimlane"),HASCATEGORY("Data Store")) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(0), "Actions.MessageFlow.Checked"))=0 |
49 |
MessageFlowToStartEvent |
Start Events |
A Start Event with incoming Message Flow must have the Message or Multiple Trigger/Result. |
|
AND(HASCATEGORY("Event"),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked)) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.MessageFlow.Checked"))> 0,OR(Actions.Message.Checked, Actions.Multiple.Checked), TRUE) |
50 |
MessageFlowFromStartEvent |
Start Events |
A Start Event must not have outgoing Message Flow. |
|
AND(HASCATEGORY("Event"),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked)) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(2), "Actions.MessageFlow.Checked"))=0 |
51 |
MessageFlowToIntermediateEvent |
Intermediate Events |
An Intermediate Event with incoming Message Flow must have the Message or Multiple Trigger/Result. |
|
AND(HASCATEGORY("Event"),Actions.Intermediate.Checked) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.MessageFlow.Checked"))> 0,OR(Actions.Message.Checked, Actions.Multiple.Checked), TRUE) |
52 |
MessageFlowFromIntermediateEvent |
Intermediate Events |
An Intermediate Event must not have outgoing Message Flow. |
|
AND(HASCATEGORY("Event"),Actions.Intermediate.Checked) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"Actions.MessageFlow.Checked"))=0 |
53 |
MessageFlowToIntermediateThrowingEvent |
Intermediate Events |
An Intermediate (Throwing) Event must not have incoming Message Flow. |
|
AND(HASCATEGORY("Event"),Actions.IntermediateThrowing.Checked) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.MessageFlow.Checked"))=0 |
54 |
MessageFlowFromIntermediateThrowingEvent |
Intermediate Events |
An Intermediate (Throwing) Event with outgoing Message Flow must have the Message or Multiple Trigger/Result. |
|
AND(HASCATEGORY("Event"),Actions.IntermediateThrowing.Checked) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"Actions.MessageFlow.Checked"))> 0,OR(Actions.Message.Checked, Actions.Multiple.Checked), TRUE) |
55 |
MessageFlowToEndEvent |
End Events |
An End Event must not have incoming Message Flow. |
|
AND(HASCATEGORY("Event"),Actions.End.Checked) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.MessageFlow.Checked"))=0 |
56 |
MessageFlowFromEndEvent |
End Events |
An End Event with outgoing Message Flow must have the Message or Multiple Trigger/Result. |
|
AND(HASCATEGORY("Event"),Actions.End.Checked) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"Actions.MessageFlow.Checked"))> 0,OR(Actions.Message.Checked, Actions.Multiple.Checked), TRUE) |
57 |
TooManyIncomingMessageFlows |
Start Events |
A Start Event with more than one incoming Message Flow must have the Multiple Trigger/Result. |
|
AND(HASCATEGORY("Event"),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked)) |
IF(AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.MessageFlow.Checked"))>1,Actions.Multiple.Checked, TRUE) |
58 |
IntermediateThrowingOnBoundary |
Intermediate Events |
An Intermediate (Throwing) Event must not be attached to the boundary of an Activity. |
|
AND(HASCATEGORY("Event"),Actions.IntermediateThrowing.Checked) |
AND(AGGCOUNT(FILTERSET(OnBoundaryOf(),"HASCATEGORY(""Expanded Sub-Process"")")) = 0, AGGCOUNT(FILTERSET(GLUEDSHAPES(5), "OR(HASCATEGORY(""Task""),HASCATEGORY(""Collapsed Sub-Process""))"))=0) |
59 |
IntermediateErrorOnBoundary |
Intermediate Events |
An Intermediate Error Event must be attached to the boundary of an Activity. |
|
AND(HASCATEGORY("Event"),Actions.Intermediate.Checked, Actions.Error.Checked) |
OR(AGGCOUNT(FILTERSET(OnBoundaryOf(),"HASCATEGORY(""Expanded Sub-Process"")")) > 0, AGGCOUNT(FILTERSET(GLUEDSHAPES(5), "OR(HASCATEGORY(""Task""),HASCATEGORY(""Collapsed Sub-Process""))"))>0) |
60 |
ImproperConditionalSequenceFlow |
Events |
An Event must not have outgoing Conditional Sequence Flow. |
|
HASCATEGORY("Event") |
AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"AND(Actions.SequenceFlow.Checked, Actions.ConditionExpression.Checked)")) = 0 |
61 |
ImproperConditionalSequenceFlow2 |
Gateways |
A Parallel or Complex Gateway must not have outgoing Conditional Sequence Flow. |
|
AND(HASCATEGORY("Gateway"),OR(Actions.Parallel.Checked,Actions.Complex.Checked)) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"AND(Actions.SequenceFlow.Checked, Actions.ConditionExpression.Checked)")) = 0 |
62 |
SequenceFlowNotConditional |
Gateways |
Outgoing Sequence Flows from a Gateway must not be conditional. |
|
HASCATEGORY("Gateway") |
AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"AND(Actions.SequenceFlow.Checked, Actions.ConditionExpression.Checked)")) = 0 |
63 |
EventSubProcessNoSequenceFlows |
Sequence Flow, Sub-Process |
An Event Sub-Process must not have any incoming or outgoing Sequence Flows. |
|
AND(HASCATEGORY("Collapsed Sub-Process"),Actions.BoundaryEvent.Checked) |
AND(AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"Actions.SequenceFlow.Checked")) = 0,AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.SequenceFlow.Checked")) = 0) |
64 |
StartEventTriggerOfEventSubProcess |
Start Events |
The Start Event trigger of an Event Sub-Process must be from the following types: Message, Error, Escalation, Compensation, Conditional, Signal, or Multiple. |
|
AND(HASCATEGORY("Expanded Sub-Process"),Actions.BoundaryEvent.Checked) |
AGGCOUNT(FILTERSET(CONTAINERMEMBERS(), "AND(HASCATEGORY(""Event""),OR(Actions.Message.Checked,Actions.Error.Checked,Actions.Escalation.Checked,Actions.Compensation.Checked,Actions.Conditional.Checked,Actions.Signal.Checked,Actions.Multiple.Checked))")) = 1 |
65 |
OneStartEventForEventSubProcess |
Start Events |
An Event Sub-Process must have one and only one Start Event. |
|
AND(HASCATEGORY("Expanded Sub-Process"),Actions.BoundaryEvent.Checked) |
AGGCOUNT(FILTERSET(CONTAINERMEMBERS(), "AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked))")) = 1 |
66 |
CompensationStartEventNotForTopLevelProcess |
Start Events |
A Compensation Start Event may not be used for a top-level Process. |
|
AND(HASCATEGORY("Event"),Actions.Start.Checked,Actions.Compensation.Checked) |
AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"HASCATEGORY(""Expanded Sub-Process"")"))>0 |
67 |
CompensationAttachedToBoundary |
Intermediate Events |
A Compensation Intermediate Event must be attached to the boundary of an Activity. |
|
AND(HASCATEGORY("Event"),Actions.Intermediate.Checked,Actions.Compensation.Checked) |
OR(AGGCOUNT(FILTERSET(OnBoundaryOf(),"HASCATEGORY(""Expanded Sub-Process"")")) > 0, AGGCOUNT(FILTERSET(GLUEDSHAPES(5), "OR(HASCATEGORY(""Task""),HASCATEGORY(""Collapsed Sub-Process""))"))>0) |
68 |
EventGatewayTwoSequenceFlows |
Gateways |
An Event Gateway must have two or more outgoing Sequence Flows. |
|
AND(HASCATEGORY("Gateway"),OR(Actions.ExclusiveEvent.Checked,Actions.ExclusiveInstantiate.Checked,Actions.ParallelInstantiate.Checked)) |
AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"Actions.SequenceFlow.Checked")) > 1 |
69 |
EventGatewayReceiveTasks |
Gateways |
Receive Tasks used in an Event Gateway configuration must not have any Intermediate Events attached to their boundaries. |
|
AND(HASCATEGORY("Task"),Actions.Receive.Checked) |
IF(AGGCOUNT(FILTERSET(CONNECTEDSHAPES(1),"OR(Actions.ExclusiveEvent.Checked,Actions.ExclusiveInstantiate.Checked,Actions.ParallelInstantiate.Checked)"))>0,AGGCOUNT(FILTERSET(GLUEDSHAPES(3),"Actions.Intermediate.Checked"))=0,True) |
70 |
TaskBpmn12NotValid |
Tasks |
This BPMN 1.2 Task shape is no longer valid in BPMN 2.0 and should be replaced with a BPMN 2.0 Task. |
|
AND(HASCATEGORY("Task"),User.visVersion < 15) |
False |
71 |
EventGatewayMessageIntermediateEvents |
Gateways |
If Message Intermediate Events are used in an Event-Based Gateway configuration, then Receive Tasks must not be used in that configuration. |
|
AND(HASCATEGORY("Gateway"),OR(Actions.ExclusiveEvent.Checked,Actions.ExclusiveInstantiate.Checked,Actions.ParallelInstantiate.Checked)) |
OR(AGGCOUNT(FILTERSET(CONNECTEDSHAPES(2),"AND(Actions.Intermediate.Checked,Actions.Message.Checked)"))=0,AGGCOUNT(FILTERSET(CONNECTEDSHAPES(2),"AND(HASCATEGORY(""Task""),Actions.Receive.Checked)"))=0) |
72 |
FlowToFromMessages |
Messages |
A Message must be connected to an Association or a Message Flow. It cannot be connected to a Message Flow endpoint. |
|
HASCATEGORY("Message") |
AND(AGGCOUNT(GLUEDSHAPES(0)) >0, AGGCOUNT(GLUEDSHAPES(3)) = 0,AGGCOUNT(FILTERSET(GLUEDSHAPES(0),"NOT(AND(HASCATEGORY(""Connecting Object""),OR(""Actions.MessageFlow.Checked"",""Actions.Association.Checked"")))")) = 0,AGGCOUNT(FILTERSET(ENDPOINTSHAPES(0),"Actions.MessageFlow.Checked")) = 0) |
73 |
AdHocRequirements |
Sub-Process |
An Ad-Hoc Sub-Process must contain a Task. |
|
AND(HASCATEGORY("Expanded Sub-Process"),Actions.AdHoc.Checked) |
AGGCOUNT(FILTERSET(ContainerMembers(),"HASCATEGORY(""Task"")"))>0 |
74 |
AdHocLimitations |
Sub-Process |
An Ad-Hoc Sub-Process cannot contain Start or End Events. |
|
AND(HASCATEGORY("Expanded Sub-Process"),Actions.AdHoc.Checked) |
AGGCOUNT(FILTERSET(ContainerMembers(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked,Actions.End.Checked))"))=0 |
75 |
StartEventsInSubProcesses |
Sub-Process |
A Start Event used for a Sub-Process must have the None Trigger/Result. |
|
AND(HASCATEGORY("Expanded Sub-Process"),Actions.BoundaryDefault.Checked) |
AGGCOUNT(FILTERSET(ContainerMembers(),"AND(AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked)),NOT(Actions.NoTriggerResult.Checked))"))=0 |
76 |
NoninterruptingStartEvents |
Start Events |
A Non-Interrupting Start Event must be used with an Event Sub-Process. |
|
AND(HASCATEGORY("Event"),Actions.StartNonInterrupting.Checked) |
AGGCOUNT(FILTERSET(PARENTCONTAINERS(),"AND(HASCATEGORY(""Expanded Sub-Process""),Actions.BoundaryEvent.Checked)"))>0 |