Visio Rules Tools RuleSets Report

IDNameUNameDescription
1BPMN 2.0BPMN 2.0Verify a Visio BPMN diagram against the graphical aspects of the BPMN 2.0 standard.
IDNameUCategoryDescriptionRuleTargetRuleFilterRuleTest
1ImproperAssociationAssociationAn 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
2CancelOutsideOfTransactionIntermediate EventsAn 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)
3SequenceFlowCrossingPoolBoundarySequence FlowSequence 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)
4MessageFlowSamePoolMessage FlowMessage 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
5StartEventTargetStart EventsA 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)
6MissingEndEventEnd EventsIf 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)"))>0AGGCOUNT(FILTERSET(ThePage!SHAPESONPAGE(),"AND(Actions.End.Checked,AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))>0
7MissingEndEventInTaskEnd EventsIf 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)))
8MissingEndEventOnBoundaryEnd EventsIf 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)))
9MissingStartEventStart EventsIf 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)"))>0AGGCOUNT(FILTERSET(ThePage!SHAPESONPAGE(),"AND(HASCATEGORY(""Event""),OR(Actions.Start.Checked,Actions.StartNonInterrupting.Checked),AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Expanded Sub-Process"""")""))=0)"))>0
10MissingStartEventInTaskStart EventsIf 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)))
11MissingStartEventOnBoundaryStart EventsIf 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)))
12SequenceFlowCrossingSubProcessBoundarySequence FlowSequence 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)))
13SequenceFlowFromGatewaysGatewaysWhen 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)
14SequenceFlowToGatewaysGatewaysWhen 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)
15SequenceFlowFromActivitiesActivitiesWhen 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)
16WrongNumberOfOutgoingSequenceFlowsIntermediate EventsAn 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
17WrongNumberOfOutgoingSequenceFlows2Intermediate EventsAn 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
18NoSequenceFlowFromStartEventStart EventsA 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
19SequenceFlowToActivitiesActivitiesWhen 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)
20SequenceFlowToEventsIntermediate EventsWhen 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)
21SequenceFlowToEvents2Intermediate EventsWhen 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)
22NoSequenceFlowToEndEventEnd EventsAn End Event must have incoming Sequence Flow.AND(HASCATEGORY("Event"),Actions.End.Checked)AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.SequenceFlow.Checked"))>0
23WrongNumberOfIncomingSequenceFlowsIntermediateThrowingIntermediate EventsAn 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
24WrongNumberOfIncomingSequenceFlowsIntermediate1Intermediate EventsAn 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)
25WrongNumberOfIncomingSequenceFlowsIntermediate2Intermediate EventsAn 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
26WrongNumberOfOutgoingSequenceFlows3Intermediate EventsAn 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
27CompensationOutgoingFlowIntermediate EventsAn 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)
28SequenceFlowToBoundaryEventIntermediate EventsAn 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)
29CancelButNoTransactionEnd EventsAn 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)
30SequenceFlowFromEndEventEnd EventsAn 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)
31LinkOrNoneOnBoundaryIntermediate EventsAn 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)
32LinkTargetAndSourceIntermediate EventsA 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)
33ReceiveTaskOutgoingFlowTasksA Receive Task must not have outgoing Message Flow.AND(HASCATEGORY("Task"), Actions.Receive.Checked)AGGCOUNT(FILTERSET(GLUEDSHAPES(2), "Actions.MessageFlow.Checked")) = 0
34SendIncomingMessageFlowTasksA Send Task must not have incoming Message Flow.AND(HASCATEGORY("Task"), Actions.Send.Checked)AGGCOUNT(FILTERSET(GLUEDSHAPES(1), "Actions.MessageFlow.Checked")) = 0
35ScriptManualMessageFlowTasksA 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
36TooFewGatesGatewaysA 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)
37InconsistentGateIndicatorGatewaysA 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)"))>0AGGCOUNT(FILTERSET(SHAPESONPAGE(),"AND(HASCATEGORY(""Gateway""), Actions.ExclusiveData.Checked)"))=0
38InvalidGatewayTargetGatewaysThe 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)
39InconsistentGatewayTargetsGatewaysAn 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)
40OutgoingConditionalSequenceFlowActivitiesIf 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)
41DataObjectNoAssociationArtifactsA 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
42ImproperAssociation2AssociationAn 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)
43CompensationActivitySequenceFlowActivitiesA Compensation Activity must not have incoming or outgoing Sequence Flow.Prop.BpmnIsForCompensationAGGCOUNT(FILTERSET(GLUEDSHAPES(0),"Actions.SequenceFlow.Checked"))=0
44SameSourceAndTargetSequence Flow, Message FlowThe 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))
45NoTargetOrSourceSequence Flow, Message FlowThe flow must have a source and target.OR(Actions.MessageFlow.Checked, Actions.SequenceFlow.Checked)AND(AGGCOUNT(GLUEDSHAPES(4))=1,AGGCOUNT(GLUEDSHAPES(5))=1)
46NoTargetOrSourceAssociationAssociationAn Association must have a source and a target.AND(HASCATEGORY("Connecting Object"),Actions.Association.Checked)AND(AGGCOUNT(GLUEDSHAPES(4))=1,AGGCOUNT(GLUEDSHAPES(5))=1)
47SequenceFlowBetweenNonFlowObjectsSequence FlowA 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
48ImproperMessageFlowConnectionMessage FlowA 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
49MessageFlowToStartEventStart EventsA 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)
50MessageFlowFromStartEventStart EventsA 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
51MessageFlowToIntermediateEventIntermediate EventsAn 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)
52MessageFlowFromIntermediateEventIntermediate EventsAn Intermediate Event must not have outgoing Message Flow.AND(HASCATEGORY("Event"),Actions.Intermediate.Checked)AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"Actions.MessageFlow.Checked"))=0
53MessageFlowToIntermediateThrowingEventIntermediate EventsAn Intermediate (Throwing) Event must not have incoming Message Flow.AND(HASCATEGORY("Event"),Actions.IntermediateThrowing.Checked)AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.MessageFlow.Checked"))=0
54MessageFlowFromIntermediateThrowingEventIntermediate EventsAn 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)
55MessageFlowToEndEventEnd EventsAn End Event must not have incoming Message Flow.AND(HASCATEGORY("Event"),Actions.End.Checked)AGGCOUNT(FILTERSET(GLUEDSHAPES(1),"Actions.MessageFlow.Checked"))=0
56MessageFlowFromEndEventEnd EventsAn 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)
57TooManyIncomingMessageFlowsStart EventsA 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)
58IntermediateThrowingOnBoundaryIntermediate EventsAn 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)
59IntermediateErrorOnBoundaryIntermediate EventsAn 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)
60ImproperConditionalSequenceFlowEventsAn Event must not have outgoing Conditional Sequence Flow.HASCATEGORY("Event")AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"AND(Actions.SequenceFlow.Checked, Actions.ConditionExpression.Checked)")) = 0
61ImproperConditionalSequenceFlow2GatewaysA 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
62SequenceFlowNotConditionalGatewaysOutgoing Sequence Flows from a Gateway must not be conditional.HASCATEGORY("Gateway")AGGCOUNT(FILTERSET(GLUEDSHAPES(2),"AND(Actions.SequenceFlow.Checked, Actions.ConditionExpression.Checked)")) = 0
63EventSubProcessNoSequenceFlowsSequence Flow, Sub-ProcessAn 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)
64StartEventTriggerOfEventSubProcessStart EventsThe 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
65OneStartEventForEventSubProcessStart EventsAn 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
66CompensationStartEventNotForTopLevelProcessStart EventsA 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
67CompensationAttachedToBoundaryIntermediate EventsA 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)
68EventGatewayTwoSequenceFlowsGatewaysAn 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
69EventGatewayReceiveTasksGatewaysReceive 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)
70TaskBpmn12NotValidTasksThis 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
71EventGatewayMessageIntermediateEventsGatewaysIf 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)
72FlowToFromMessagesMessagesA 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)
73AdHocRequirementsSub-ProcessAn Ad-Hoc Sub-Process must contain a Task.AND(HASCATEGORY("Expanded Sub-Process"),Actions.AdHoc.Checked)AGGCOUNT(FILTERSET(ContainerMembers(),"HASCATEGORY(""Task"")"))>0
74AdHocLimitationsSub-ProcessAn 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
75StartEventsInSubProcessesSub-ProcessA 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
76NoninterruptingStartEventsStart EventsA 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