Visio Rules Tools RuleSets Report

ID NameU Description RuleSetFlags
1 BPMN 2.0 Verify a Visio BPMN diagram against the graphical aspects of the BPMN 2.0 standard.
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