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 |