Skip to main content

Workflow validation reference

Workflows · Reference

Find the meaning and the fix for every finding the workflow designer and the configuration screen report.

NIM validates a workflow in two places:

In the messages below, X and Y stand for the names NIM fills in.

Drawing findingsDirect link to Drawing findings

The designer reports these when it cannot turn the drawing into a runnable process. Errors keep NIM from updating the generated process on save; the drawing itself is still saved. Warnings are informational.

FlowsDirect link to Flows

Show findings and fixes
FindingSeverityMeaning and fix
Sequence flow X is not attached to a shape on one side.ErrorConnect both ends of the line to a shape.
…attaches to a shape that is not a BPMN flow node.ErrorA line ends on a decoration (icon, line, or text). Connect it to a task, event, or gateway.
…needs exactly one arrow head; the arrow defines the flow direction.ErrorGive the line one arrowhead, at the end it flows to.
…connects X to itself.ErrorRemove the line. To repeat a step, loop back through an exclusive gateway.
…runs into a start event / runs into a boundary event / runs out of an end event.ErrorA start event and a boundary event have no incoming line, and an end event has no outgoing line. Reconnect the line.
…duplicates an existing flow; it is merged.WarningRemove the duplicate line.
The … has no incoming/outgoing sequence flow.ErrorConnect the element. A boundary event needs an outgoing line for its exception path.

Tasks, events, and gatewaysDirect link to Tasks, events, and gateways

Show findings and fixes
FindingSeverityMeaning and fix
N workflow shapes are labeled 'X'; workflow labels must be unique.ErrorGive each task, event, and gateway its own label.
The start event … must have exactly one [outgoing flow]. Add a gateway to branch.ErrorStart with one line, then branch with a gateway.
The end event … must have exactly one [incoming flow]. Add a gateway to merge, or use one end event per branch.ErrorMerge with a gateway, or give each branch its own end event.
…a task takes exactly one of each. Add an explicit gateway to branch or merge.ErrorA task has one incoming and one outgoing line. Use gateways to branch and merge.
…model the join and the split as two separate gateways.ErrorA gateway either merges or splits. Draw two gateways.
…has one incoming and one outgoing sequence flow, so it decides nothing; it is mapped as a pass-through.WarningRemove the gateway, or add the missing branch.
…an event gateway only offers a choice, it cannot merge.ErrorMerge with an exclusive gateway.
A branch of the … runs into …; every branch must start with a timer or message event.ErrorStart each branch of an event gateway with a timer event or a message event.
The process has no start event / has N start events.ErrorDraw exactly one start event.
The process has no end event; it can never complete.ErrorEnd every path with an end event.

Boundary eventsDirect link to Boundary events

Show findings and fixes
FindingSeverityMeaning and fix
The … is not attached to an activity.ErrorAdd boundary events with right-click → Boundary event on a task.
…a boundary event can only be attached to a task.ErrorAttach it to a user task or service task.
…is attached to X, which is a branch of event gateway Y.ErrorThe branches of an event gateway already compete. Remove the boundary event, or move the task after the event.
…is attached to service task X, which the nim service runs to completion, so the event can never occur.WarningRemove the boundary event, or put it on a user task.
X has N non-interrupting boundary events; it can have at most one.ErrorKeep one non-interrupting boundary event per task.

Participants and meaningsDirect link to Participants and meanings

Show findings and fixes
FindingSeverityMeaning and fix
Shape X names the participant 'P', but it is …WarningOnly user tasks, send tasks, and message events have a participant. Clear it on other elements.
The line(s) leaving X state(s) a meaning, but only a branch of an exclusive gateway is an outcome somebody chooses.WarningSet meaning to none on lines that do not leave an exclusive gateway or a cancelling join.
N branches of gateway X are stated to be the positive/negative outcome.ErrorMark only one line positive and one line negative per gateway.

Cancelling joinDirect link to Cancelling join

Show findings and fixes
FindingSeverityMeaning and fix
…needs at least two incoming flows, and exactly two outgoing ones: one stated positive, one stated negative.ErrorLead every branch of the parallel gateway into the join, and give it two outgoing lines.
…needs one outgoing line stated to mean positive … and one stated to mean negative.ErrorSet meaning on both outgoing lines.
No line running into the … is stated to mean negative, so no branch can cancel the others.ErrorSet meaning to negative on the refusal lines, or use a parallel gateway to merge.
The branches running into the … do not all come from one parallel gateway.ErrorA cancelling join merges the branches of exactly one parallel gateway.
…merges the branches of parallel gateway X, which another cancelling join already merges.ErrorUse one cancelling join per parallel gateway.
A branch … holds a second parallel gateway / another cancelling join / a non-interrupting boundary event.ErrorKeep each branch between the fork and the join to a single path.
A branch … runs into end event X instead / loops back / never reaches the join.ErrorEvery branch must end in the join.
X lies on a branch … but is also reached from outside that branch.ErrorNothing may enter a branch from outside.
Two branches … run through the same sequence flow.ErrorKeep the branches apart.

Soundness findingsDirect link to Soundness findings

When the drawing has no errors, the designer explores every state the process can reach. These findings mean a real case could get stuck, so fix them before you publish a configuration. The messages name the lines (places) and steps (tasks) involved.

Show soundness findings and fixes
FindingMeaning and fix
The net can reach a deadlock: no task is enabled while the workflow is not completed …A case can stop for good. Typically, a parallel join waits for a branch that an exclusive gateway never took. Merge alternative branches with an exclusive gateway and parallel branches with a parallel gateway.
Place 'X' can hold more than one token at the same time …Two parallel branches meet where only one was expected, typically a parallel split merged with an exclusive gateway. Merge them with a parallel gateway.
The net is unbounded: tokens can accumulate without limit on place 'X'.A loop keeps creating parallel work. Close the loop through an exclusive gateway.
The workflow can terminate with a token stranded on non-end place 'X'.A case can end while a branch is still running. Merge the branches before the end event, or end each branch separately.
The net can reach a state from which completion is no longer reachable (livelock) …A loop can never be left. Give the loop a branch that leads to an end event.
Task 'X' can never fire in any reachable execution.The step is unreachable. Check the gateways before it.
Analysis stopped after exploring N markings; soundness could not be proven. (warning)The process is too large to check completely. Simplify it, or test it carefully with Simulate.

Configuration findingsDirect link to Configuration findings

The Validation tab of a configuration lists these findings. Errors block saving and publishing. Warnings block publishing only. The two advisories (a send task without a template, and a duplicate display name) block nothing. Select a finding to jump to the tab where you fix it.

Configuration and definitionDirect link to Configuration and definition

Show findings and fixes
FindingSeverityMeaning and fix
The configuration has no name / starts or ends with a space.ErrorRename the configuration.
Configuration 'C' belongs to diagram 'D' …, not to …ErrorThe configuration was made for another definition. Create a new configuration for this definition.
The workflow has structurally changed since it was configured; check the configuration and save it again.WarningCheck each step, then save.
This element is configured twice.ErrorRemove the duplicate entry.
The configured element is not a step of this workflow (any more); remove the entry.ErrorThe step was removed from the drawing. Remove its configuration.

Apps and mappingsDirect link to Apps and mappings

Show findings and fixes
FindingSeverityMeaning and fix
Only a user task is performed in an app, and only the start event is started from one.ErrorRemove the App from this element.
The variable mappings have no app to map onto.ErrorChoose an App, or remove the mappings.
This user task has no app, and no gateway with labeled branches follows it …WarningChoose an App, or label the lines of the gateway after it, so a task list can decide the step.
The start form is where the case begins, so there is no case to fill it from yet.ErrorRemove the prefill on the start event.
Only the start takes in the session variables of whoever starts the case.ErrorRemove the session mappings from the step.
'X' is not a session variable of this nim service.ErrorUse a session variable defined under Configuration → Variables → Session.
Case variable 'v' is a … and session variable 's' a …WarningAlign the types, or accept the conversion.
A prefill/result/session mapping is missing its case/app/session variable.ErrorComplete or remove the mapping.
'v' is not a case variable of this workflow.ErrorDeclare the variable, or map to an existing one.
Two prefill/result/session mappings write 'X'.ErrorKeep one mapping per variable.
This step has to be performed in its app, but it has none.ErrorChoose an App, or clear Must be performed in its app.
App 'A' does not exist (any more).ErrorChoose another App.
App 'A' has no variable 'X'.ErrorRemove the mapping, or add the variable to the App.
App 'A' neither fills nor takes any variable …WarningAdd variables to the App if the step must exchange data.
'X' of app 'A' cannot be taken into the case: …ErrorUse another App variable.
App 'A' fills 'X' itself; to give it a value when the step opens, make it an input variable of the app.ErrorChange the App variable's type to input.
App 'A' never fills 'X', so there is nothing to take back from it.ErrorRemove the result mapping.
Case variable 'v' is a … and 'X' of app 'A' a …WarningAlign the types, or accept the conversion.
App 'A' cannot be performed without a value for its input variable 'p' …ErrorPrefill the required input variable from a case variable.
…and case variable 'v' it is filled from is filled by nothing.ErrorMake an earlier step or the start fill the case variable.

Service tasksDirect link to Service tasks

Show findings and fixes
FindingSeverityMeaning and fix
Only a service task is performed by the nim service; this element is not one.ErrorRemove the actions from this element.
A workflow step cannot run a '…' action.ErrorUse a target system function, script function, or service resource command.
Action '…' does not say what to run.WarningComplete the action.
Action '…' is given / hands back 'v', which is not a case variable of this workflow.ErrorDeclare the variable, or change the binding.
This service task has no actions.WarningAdd an action, or remove the service task from the drawing.

ParticipantsDirect link to Participants

Show findings and fixes
FindingSeverityMeaning and fix
Participant 'P' is not bound to any user or group …WarningBind the participant on the Participants tab.
Participant 'P' is bound to …, but no step of the drawing is performed by that participant.WarningClear the binding.
Participant 'P' is bound twice.ErrorKeep one binding.
Participant 'P' is bound to something it cannot stand for: …ErrorRemove the invalid user or group.
Participant 'P' is resolved as '…', which the runtime cannot do yet.ErrorUse Bound here, From a case variable, or By rules.
Participant 'P' is resolved by the engine itself, so the … user(s) or group(s) bound to it are ignored.WarningClear the users and groups of Initiator.
Participant 'P' is looked up from a case variable, but none is named / from 'v', which is not a case variable.ErrorChoose a declared case variable.
Participant 'P' is looked up from 'v', which is neither a number nor a text.ErrorUse a number or string variable.
Participant 'P' is looked up from 'v', but no service task fills that variable …WarningFill the variable with a service task or a session mapping on the start event.
'v' says who participant 'P' is, and this step takes it from the app …ErrorRemove the App mapping. Only a service task or a session mapping may fill it.
Participant 'P' is looked up from a case variable while the case runs, so the … user(s) or group(s) bound to it are ignored …WarningThe users and groups act as the fallback only. Informational.
Participant 'P' is chosen by rules, but there are none.WarningAdd rules.
The condition of rule N of participant 'P' cannot be used: …ErrorCorrect the rule's condition.
Rule N … has no condition and is not the fallback.ErrorGive the rule a condition, or make it the otherwise rule.
Rule N … names no user or group.ErrorAdd users or groups to the rule.
The fallback rule N … cannot carry a condition / Participant 'P' has N fallback rules.ErrorKeep one otherwise rule, without a condition.
Participant 'P' has no fallback rule ('otherwise') …WarningAdd an otherwise rule.
Participant 'P' is chosen by rules, so the … user(s) or group(s) bound to it directly are ignored.WarningInformational. Clear them to tidy up.
This user task / message event / send task names no participant …WarningName a participant on the element in the designer.

Send tasks and display namesDirect link to Send tasks and display names

Show findings and fixes
FindingSeverityMeaning and fix
No mail template is coupled to event 'workflow-step: …', so this send task sends nothing.AdvisoryCouple a template on Events → Actions. See Workflow notifications.
End users see this configuration as '…', and '…' under the same name.AdvisoryGive the configuration its own display name.

TimersDirect link to Timers

Show findings and fixes
FindingSeverityMeaning and fix
Only a timer event goes off at a moment; this element is not one.ErrorRemove the timer setting.
This timer event has not been told when it goes off.WarningSet a duration or a date variable.
The timer needs a duration of at least one minute, hour or day.ErrorEnter a duration of 1 or more.
The timer takes its moment from a case variable, but names none / 'v' is not a case variable.ErrorChoose a declared variable.
Case variable 'v' is not a date or a date-time.ErrorUse a date or date-time variable.

Variables, subject, and resultDirect link to Variables, subject, and result

Show findings and fixes
FindingSeverityMeaning and fix
Case variable 'v' is filled by nothing …WarningTick it in a result mapping, a session mapping, or an action output, or remove it on the Variables tab.
A case variable without a name … / starts or ends with a space.ErrorRename the variable.
Case variable 'v': names starting with 'wf' belong to the workflow itself …ErrorRename the variable without the wf prefix.
'v' is filled by the workflow itself; a step cannot write it.ErrorRemove the mapping or action output that writes a built-in variable.
Case variable 'v' is declared more than once.ErrorNames ignore case. Remove the duplicate.
Case variable 'v' has a type a case cannot carry yet.ErrorUse string, number, boolean, date, or date-time.
The case subject / result names 'v', which is not a case variable.WarningCorrect the placeholder.

Gateways and branchesDirect link to Gateways and branches

Show findings and fixes
FindingSeverityMeaning and fix
This element does not choose between branches, so a decision variable / condition has nothing to decide.ErrorRemove the routing setting.
'v' is not a case variable of this workflow.ErrorChoose a declared variable.
This gateway routes on the outcome of a step, but no step ends with one …WarningLet the step before it complete with an outcome, or configure a decision on the gateway.
App 'A' completes its step with 'o', but none of this gateway's branch labels … is that …WarningRelabel a line, set its meaning, or change the outcome of the action.
…N of its M branches have no text on the line / two of its branches carry the same text.Warning or errorLabel every line except at most one default line, and use distinct labels.
This gateway has both a decision variable … and conditions on its branches.ErrorKeep one way of routing.
A condition is configured on a line that is not (any more) a branch of this gateway.ErrorRemove the condition.
Branch 'b' is configured twice.ErrorRemove the duplicate.
The condition on branch 'b' cannot be used: …ErrorCorrect the condition: an unknown variable, a syntax error, or values that cannot be compared.
Branch 'b' is the default branch … it cannot carry a condition / N branches … are the default branch.ErrorKeep one otherwise branch, without a condition.
Branch 'b' has no condition and is not the default branch, so no case can take it.WarningGive it a condition.
Branch 'b' states that it is the positive/negative outcome, but this gateway routes on …WarningRoute on the outcome, or set the line's meaning to none.

PermissionsDirect link to Permissions

Show findings and fixes
FindingSeverityMeaning and fix
Participant 'P' may not read/write case variable 'v', yet …WarningGrant the right on the Permissions tab, or remove the mapping.
The case subject/result names 'v', which participant(s) … may not read.WarningEvery participant sees the subject and result. Grant read, or remove the variable from the text.
Participant 'P' holds rights on 'v', which is not a case variable of this workflow.WarningRemove the entry with Remove unused right(s).
Participant 'P' holds rights on 'v', but no step of the drawing is performed by that participant.WarningRemove the entry.
Participant 'P' has two permission entries on case variable 'v'.ErrorKeep one entry.
The rights of participant 'P' on 'v' include bits that mean nothing on case data.ErrorUse only read and write.