Validation rules
The designer checks a process while you work, and says what it finds on the right of its tabs: No errors, or Errors (n) and Warnings (n). See The check.
- An error keeps you from publishing. A run of the process would fail on it, or couldn't even start.
- A warning points at something that is probably a mistake, but that a run can live with. You can publish with warnings.
This page lists every message the check can give, grouped by what it is about, with the chapter that explains it and says what to do. In the messages, … stands for a name from your process, such as a node, a variable or an input. Where a message ends in a colon, the rest says what exactly is wrong.
When you publish, Spider checks the forms once more itself, and refuses a draft whose templates or form texts show an image the organization doesn't have. Every other rule is checked by the designer only. A process imported from a package, or written through the API, is a draft, and gets the designer's check when you open it there to publish it.
The diagram
Explained in The check and Sub-processes. In a sub-process, the messages say sub-process where these say process.
| Message | Severity |
|---|---|
| The process has no start event. | Error |
| The process has n start events; only one is used when a run starts. | Warning |
| The process has no end event. | Error |
| Multiple nodes share the id '…'. | Error |
| The link starts at node '…', which does not exist. | Error |
| The link ends at node '…', which does not exist. | Error |
| The node has no outgoing link; a run cannot continue past it. | Error |
| The end event has an outgoing link, which is never followed. | Warning |
| The node is not reachable from a start event. | Warning |
| The sub-process has no nodes. | Error |
| The sub-process has no content. | Error |
| The sub-process content belongs to no node. | Error |
A node id is given by the designer itself, and two links to a node that isn't there come from a package or a draft that was edited outside the designer. Delete the node or the link and draw it again.
Variables
Explained in Variables and parameters.
| Message | Severity |
|---|---|
| The variable name '…' is not valid; use letters, digits, underscores and hyphens only. | Error |
| The variable name '…' is reserved by the engine; choose another name. | Error |
| More than one variable is named '…'; a name is unique across the whole process. | Error |
Gateways
Explained in Gateways and conditions. A parallel gateway, and a gateway with one outgoing link, are not checked.
| Message | Severity |
|---|---|
| The gateway has multiple outgoing links but no conditions. | Error |
| A gateway condition targets node '…', which is not connected to the gateway. | Error |
| The gateway condition for node '…' has no expression, so its path is never selected. | Warning |
| The gateway condition for node '…' has an invalid expression: … | Error |
| The gateway condition for node '…' is a literal, but a condition on this gateway has to be a Boolean expression. | Error |
| The gateway compares a single expression, but the expression is missing. | Error |
| The gateway expression is invalid: … | Error |
| The gateway has no fallback condition; a run fails when no condition matches. | Warning |
Inputs
Explained in Inputs, and for expressions in Expressions.
| Message | Severity |
|---|---|
| The input '…' is required, but has no value. | Error |
| The input '…' is bound to …, but its activity only takes …. | Error |
| The input '…' has an invalid expression: … | Error |
| The input '…' does not match its declared type '…': … | Error |
| The input '…' is declared as an array, but '…' reads one value of the loop's Item, not a list. | Error |
| The input '…' is bound to a variable, but its value is not a single variable reference. | Error |
| The input '…' is a literal, but is not the JSON its declared type '…' requires: … | Error |
| The input '…' is a mapping that cannot be read: … | Error |
| The input '…' is declared as '…', which a mapping cannot build. | Error |
| The input '…' is declared as '…', but its mapping builds '…'. | Error |
| The input '…' is a mapping that cannot be built as written: … | Error |
| The input '…' is a mapping that leaves something out: … | Warning |
| The input '…' is bound to a resource, but its value is not a key. | Error |
The inputs that pick a template, a milestone, a report or a form are in their own sections below. A connection, collection or counter that was deleted is not noticed: see Connections.
Templates
Explained in Templates and e-mail.
| Message | Severity |
|---|---|
| The template has no name. | Error |
| More than one template is named '…'; a template name is unique across the process. | Error |
| The template name '…' is not valid; use letters, digits, underscores, hyphens and spaces, and no space at the start or the end. | Error |
| The template '…' can't be rendered: … | Error |
| The template '…' reads '…', which no variable of this process is named. | Warning |
| The template '…' is nested in itself. | Error |
| The template '…' is nested in a template that no longer exists. | Error |
| The template '…' is nested in a chain that returns to itself. | Error |
| The template '…' is nested more deeply than 16 templates. | Error |
| The template '…' is … written in …, which is not a combination that can be rendered. | Error |
| The template '…' embeds a file as a data: URI. Templates hold text only; a definition that carries embedded images outgrows what can be stored. | Error |
| The template '…' holds …, over the 256 KB one template may hold. | Error |
| The process's templates hold …, over the 4 MB a process may hold. | Error |
| The input '…' is bound to a template that does not exist. | Error |
| The input '…' is bound to a template, which renders to a string, but is declared as '…'. (or as an array) | Error |
| The input '…' expects a … template, but '…' is …. | Error |
| The input '…' is bound to template '…', which reads Item, but the node does not loop, so Item renders empty. | Warning |
Milestones and reports
Explained in Milestones and reports.
| Message | Severity |
|---|---|
| The milestone has no name. | Error |
| More than one milestone is named '…'; a milestone name is unique across the process. | Error |
| The milestone '…' has no icon. | Error |
| The milestone '…' has the colour '…', which is not six hex digits behind a '#'. | Error |
| The input '…' is bound to a milestone that does not exist. | Error |
| The report has no name. | Error |
| More than one report is named '…'; a report name is unique across the process. | Error |
| The report '…' has a tag that is blank or longer than 50 characters: … | Error |
| The input '…' is bound to a report that does not exist. | Error |
Forms
Explained in Forms and user tasks. In the messages, a form's element is named by its kind and its label, such as the input 'Comment', the dropdown 'Decision' or the button 'Approve'.
The form as a whole:
| Message | Severity |
|---|---|
| The form has no name. | Error |
| More than one form is named '…'; a form name is unique across the process. | Error |
| The form '…' has the maximum width '…', which is not a number of pixels or a percentage up to 100 ('600px', '80%'). | Error |
| The form '…' nests n layouts inside each other, over the 12 a form may nest. | Error |
| The form '…' holds n layouts and controls, over the 300 a form may hold. | Error |
| The form '…' has more than one element with the id '…'. | Error |
| The form '…' has … without an id. | Error |
The button bar and buttons:
| Message | Severity |
|---|---|
| The form '…' has … in its button bar, which holds only buttons. | Error |
| The form '…' has n submit buttons in its button bar, where it has exactly one. (or cancel buttons) | Error |
| The form '…' has a cancel button that is not the last button of its button bar. | Error |
| The form '…' has a submit button that does not submit in its button bar. (or a cancel button that submits) | Error |
| The form '…' has its submit button outside its button bar. (or its cancel button) | Error |
| The form '…' has a button without a label. | Error |
| The form '…' has the button '…', which submits the form but has no result term. | Error |
| The form '…' has the button '…' with the colour '…', which is not six hex digits behind a '#'. | Error |
Layouts:
| Message | Severity |
|---|---|
| The form '…' has … with the column width '…', which is not a number of pixels or a percentage up to 100. | Error |
| The form '…' has … with a column width, which is ignored because it is not in a horizontal layout. | Warning |
| The form '…' has … with a column width, which is ignored because the last column takes the rest of the row. | Warning |
| The form '…' has …, which holds nothing. | Warning |
| The form '…' has the tab '…', which holds nothing. (or step) | Warning |
| The form '…' has … without any tabs. (or steps) | Error |
| The form '…' has a tab without a label. (or step) | Error |
| The form '…' has n steps layouts; a form may hold only one. | Error |
What a control is bound to:
| Message | Severity |
|---|---|
| The form '…' has … that is not bound to a variable. | Error |
| The form '…' has … bound to a variable that no longer exists. | Error |
| The form '…' has … bound to '…', which is not a path of property names. | Error |
| The form '…' has … bound to '…', which names no property of variable '…'. | Error |
| The form '…' has … that edits a value of type '…', but it is bound to a value of type '…'. (or a list of type) | Error |
| The form '…' has … that edits variable '…', which is a … variable and can only be written through the process-run variable API. Make the control read-only. | Error |
| The form '…' has … that edits a text, but it is bound to …. | Error |
| The form '…' has … that picks a text, but it is bound to …. | Error |
| The form '…' has … that shows a file, but it is bound to …. | Error |
| The form '…' has … that uploads files, but it is bound to '…', which is not a File variable or a list of them. | Error |
| The form '…' has … that shows a list, but it is bound to …. | Error |
| The form '…' has … that shows analyzed fields, but it is bound to …, which holds none. | Error |
Texts and summaries:
| Message | Severity |
|---|---|
| The form '…' has … that can't be rendered: … | Error |
| The form '…' has … that reads '…', which no variable of this process is named. | Warning |
| The form '…' has … that embeds a file as a data: URI. A definition that carries embedded files outgrows what can be stored. | Error |
| The form '…' has … whose template shows an image. A summary is rendered while the form is filled in, where neither an image of the process nor a file of the run can be shown; show it in a text instead. | Error |
Dropdowns, collection dropdowns and terms:
| Message | Severity |
|---|---|
| The form '…' has … without any options. | Error |
| The form '…' has … with a blank option. | Error |
| The form '…' has … with the option '…' more than once. | Error |
| The form '…' has … whose default '…' is not one of its options. | Error |
| The form '…' has … without a collection to pick from. | Error |
| The form '…' has … that picks from a collection that no longer exists. | Error |
| The form '…' has … that shows … of collection '…', which is not one value that can be shown. | Error |
| The form '…' has … that writes … of collection '…', but it is bound to …. | Error |
| The form '…' has … that shows '…' of an item's value, which is not a path of property names. (or writes) | Error |
| The form '…' has … that shows '…' of an item's value, which names no property of collection '…'. (or writes) | Error |
| The form '…' has … that must contain terms, but it has none. | Error |
| The form '…' has … with a blank term. | Error |
| The form '…' has … with the term '…' more than once; terms are matched ignoring case. | Error |
| The form '…' has … with n terms, more than the 100 a control may have. | Error |
| The form '…' has … without a collection to read its terms from. | Error |
| The form '…' has … that reads its terms from a collection that no longer exists. | Error |
| The form '…' has … that reads its terms from … of collection '…', which is not one value that can be read as a text. | Error |
| The form '…' has … with terms its value must contain, but it edits a value of type '…': only a text can contain terms. | Error |
Sizes, colours and files:
| Message | Severity |
|---|---|
| The form '…' has … with the height '…', which is not a number of pixels or a percentage up to 100. | Error |
| The form '…' has … with the maximum height '…', which is not a number of pixels or a percentage up to 100. | Error |
| The form '…' has … whose high confidence starts at … and medium confidence at …, which are not between 0 and 100 with medium at most high. | Error |
| The form '…' has … with the confidence colour '…', which is not six hex digits behind a '#'. | Error |
| The form '…' has … with columns, which are ignored because only a CSV or XLSX file has columns. | Warning |
| The form '…' has … with a blank column. | Error |
| The form '…' has … with the column '…' more than once. | Error |
Start forms, which a form trigger shows before the run exists. See Start forms.
| Message | Severity |
|---|---|
| The form '…' is a start form, but … is bound to variable '…', which is not a parameter of the process. A start form can only use the process's parameters. | Error |
| The form '…' is a start form, so it can't hold …: there is no run file to show or analyze before the run starts. | Error |
| The form '…' is a start form, but … reads '…', which is not a parameter of the process. A start form is shown before its run exists, so its texts and summaries can only read the process's parameters. | Error |
The Form activity that shows a form, in a user task. See User tasks.
| Message | Severity |
|---|---|
| The input '…' is bound to a form that does not exist. | Error |
| The input '…' shows the form '…', in which … edits variable '…', which this activity's graph does not declare. Make the control read-only, or bind a variable of this graph. | Error |
| The input '…' shows the form '…', in which … shows variable '…', which this activity's graph cannot read. | Error |
| The input '…' shows the form '…', in which … reads variable '…', which this activity's graph cannot read. | Error |
Sub-processes
Explained in Sub-processes and loops. The values a sub-process's parameters get are checked as an activity's inputs are, with parameter where those say input: The parameter '…' has an invalid expression: …, and so on.
| Message | Severity |
|---|---|
| The parameter '…' has no value. | Error |
| The output '…' is a … value, but variable '…' is declared as …. | Error |
Starting other processes
Explained in Starting other processes. The values of the parameters, and Start at, are checked as an activity's inputs are, with parameter where those say input.
| Message | Severity |
|---|---|
| No process to start has been chosen. | Error |
| The process to start does not exist. | Error |
| The process '…' has no published version to start. | Error |
| The node starts this process again at once; make sure a condition ends the chain, or give it a start time. | Warning |
| A value is bound to a parameter (…) the process to start no longer has; remove it. | Error |
| The parameter '…' has no value; the run starts without one. | Warning |
| The parameter '…' holds files, which can't be passed to a run started from a process. | Error |
| The output '…' is a String value, but variable '…' is declared as …. | Error |
Outputs
Explained in Outputs.
| Message | Severity |
|---|---|
| The output '…' writes a variable that is not declared in this scope. The output is ignored. | Error |
| The output '…' writes into variable '…' through a path, which a … variable does not support. Map the output to the whole variable. The output is ignored. | Warning |
Loops
Explained in Sub-processes and loops.
| Message | Severity |
|---|---|
| The node cannot be looped. | Error |
| The loop has no array variable to iterate. | Error |
| The loop iterates a variable that is not declared in this scope. | Error |
| The loop iterates variable '…', which is not an array. | Error |
| The node repeats for each item, but none of its inputs reads {Item}. | Warning |
| The output '…' writes variable '…', which is the array the loop iterates. | Error |
| The output '…' writes variable '…', which is not an array; a loop appends one value per iteration. | Error |
Related chapters
- The designer and its palette: where the check shows, and how to read it.
- Expressions: the messages about an expression itself, such as Unknown variable.