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 |