Process Validation Rules (for Import, Style Guide and Deployment) - PROCEED-Labs/proceed GitHub Wiki

There are situation, e.g. during import, editing or deployment, when a process has to be validated. This means, it needs to be checked if every expected element/attribute/behavior is actually available.

In the following, there are multiple validation rules. A process can either comply with a rule or not comply. Some of the rules are mandatory for a specific functionality and some can be activated on the Settings page by users (optional validation rules). Optional validation rules will not be assessed if not activated.

Validation Rule Description Mandatory for Import Optional for Import Mandatory for Deployment Optional for Deployment Optional for Style Guide
is-xml if the checked data is valid XML syntax X X
is-bpmn if the checked data is parsable by bpmn-js X X
all-linked-artifacts-available checks if all linked, external artifacts (pictures, execution instructions, etc.) are a available for a given BPMN file. X
all-executable-artifacts-available checks if all execution artifacts (scripts, html) are a available for a given BPMN file. x x
call-activities-referenced-process-available checks if for all callActivities the referenced processes are available (i.e. inside the import zip file or in the MS for deployment) x x
gateways-either-have-multiple-incoming-or-outgoing-flows Gateways can either only have one incoming and multiple outgoing sequence flow
OR
multiple incoming and one outgoing sequence flow.
X
activities-without-multiple-incoming-sequence-flows Activities (Tasks or Subprocesses) are not allowed to have multiple incoming Sequence Flows. X
activities-without-multiple-outgoing-sequence-flows Activities (Tasks or Subprocesses) are not allowed to have multiple outgoing Sequence Flows. X
exactly-one-executable-process if the BPMN has exactly one <process ... isExecutable="true">. It can contain more non-executable process elements.

The following execution-related rules are only checked for the one executable <process> element.
X
only-supported-executable-elements Because PROCEED only allows specific BPMN elements for execution, this rule checks whether only supported BPMN elements are used. (TODO: Link to list of supported executable elements) X
at-least-one-untyped-or-one-other-supported-start-event Check if there is at least one supported start event. Process starts without Start Events are not yet supported. There can be multiple untyped Start Events which will all get a token if the process is started. X
has-exactly-one-untyped-start-event Checks if only one untyped Start Event exists. Other Start Event types can still be present. X
end-events Checks if all Flow Nodes (Activities, GW, Events) have outgoing sequence flow but End Events. If this rule is not activated, the running tokens are not consumed and go into the PAUSED mode. X
all-activities-are-typed Checks if all existing activities have a type. If this rule is not activated, untyped activities are skipped during execution. X
all-user-tasks-have-a-ui-descriptions Checks if all User Tasks have a UI/HTML that can be shown in the Tasklist. X
all-user-tasks-are-assigned Checks if all User Tasks are assigned to at least one User or a Role. If this rule is not activated, all unassigned User Tasks can be viewed by activating the filter in the Tasklist. X
all-script-tasks-have-code Checks if all Script Tasks have JS Code that can be executed in the Engine. X
all-outgoing-flows-of-x-or-gateways-have-conditions-or-default If there are multiple (>1) outgoing sequence flows on an OR or XOR gateway, all sequence flows must have conditions or the default attribute X
call-activities-referenced-process-untyped-start-event checks if all referenced processes of callActivities have at least one untyped start event. x
call-activities-referenced-process-build-loop checks for cyclic references, if other call activities exists in the referenced process and they are not building a loop. x
⚠️ **GitHub.com Fallback** ⚠️