Appearance
Common errors
This page lists every diagnostic the compiler reports for Instant Process code, what it means, a short example that produces it, and how to fix it. Each report in the editor links to its section here through How to fix.
Diagnostics come at two severities. Errors stop the compile, so the graph does not update until they are fixed. Warnings do not: the process still compiles and renders, and the warning stays in the editor as a reminder.
A character the editor does not understand
A character outside a description is not part of the language. Only keywords, identifiers, quoted descriptions and # comments are allowed on a line.
pml
ACTIVITY 'Check order' @ NEXTFix
Remove the character, or move it inside the quotes of the description: ACTIVITY 'Check order @ desk' NEXT.
A description without its closing quote
A description opens with ' and has no closing ' on the same line. The rest of the line, and everything after it, is read as part of the description.
pml
ACTIVITY 'Pay invoice NEXTFix
Close the description: ACTIVITY 'Pay invoice' NEXT.
A lane in a process without lanes
A process uses lanes only when its first line is a LANE, and inside a pool only when the pool holds lanes. A LANE anywhere else is an error.
pml
START 'Begin' NEXT
LANE Sales
ACTIVITY 'Pay' NEXT
END 'Done'Fix
Start the process with a LANE, and give every node a lane:
pml
LANE Sales
START 'Begin' NEXT
ACTIVITY 'Pay' NEXT
END 'Done'See Lane.
A word that is not expected here
A word or a description stands where the line does not take one. A mistyped keyword, a third string after a link target, and a link on an END line all produce it.
A link label in the wrong place
The syntax is NEXT target 'label', and the same after AND. The target comes first, the optional label second, and nothing follows the label.
pml
ACTIVITY 'Pay' NEXT 'Done' 'Paid' 'Extra'The target is 'Done', the label is 'Paid' and 'Extra' is not expected. Writing NEXT 'Paid' 'Done' makes the compiler look for a node whose identifier is 'Paid'.
An END with a link
END and END-TERMINATE carry no outgoing links.
pml
END 'Done' NEXT 'Begin'Fix
Correct the keyword, or remove the word. On an END line, remove the link and let another node point into the end.
A step name is missing
A link keyword, AND or POOL is followed by no identifier where one is required.
pml
ACTIVITY 'Pay' NEXT 'Done' ANDFix
Name the target after AND, or remove the AND: ACTIVITY 'Pay' NEXT 'Done' AND 'Archive'.
A description is missing
A node keyword is followed by no quoted description. Every node needs one, after the keyword or after its explicit identifier.
pml
ACTIVITY NEXTFix
Add the description: ACTIVITY 'Pay invoice' NEXT.
A NEXT is missing
A line that has to carry a link carries none.
Fix
Add NEXT and its target to the line the report points at.
A step that is already defined
Two nodes resolve to the same identifier. Implicit and explicit identifiers share one namespace, so two START nodes, or two activities with the same description, collide.
pml
ACTIVITY 'Pay' NEXT
ACTIVITY 'Pay' NEXTFix
Give one of them a different description, or explicit identifiers:
pml
ACTIVITY PayDeposit 'Pay' NEXT
ACTIVITY PayRest 'Pay' NEXTSee Explicit identifiers.
A step that does not exist (warning)
A NEXT or AND points at an identifier no node declares. The usual cause is a target written as a short paraphrase of a node's description instead of the exact identifier.
It is a warning. The process still compiles and renders. Nothing is drawn for the unknown identifier, and the link pointing at it is left out.
pml
LANE User
START 'Start' NEXT
GATEWAY 'Choice' NEXT 'Open' 'Yes' AND 'IgnoreDoor' 'No'
EVENT 'Open the door' NEXT 'End'
EVENT 'Ignore the doorbell' NEXT 'End'
END 'End'The nodes declare themselves as 'Open the door' and 'Ignore the doorbell', and the gateway names 'Open' and 'IgnoreDoor'.
Fix 1: use the node's exact description
pml
GATEWAY 'Choice' NEXT 'Open the door' 'Yes' AND 'Ignore the doorbell' 'No'The implicit identifier is the description, character for character, in quotes.
Fix 2: give the nodes explicit identifiers
pml
GATEWAY 'Choice' NEXT OpenDoor 'Yes' AND IgnoreDoor 'No'
EVENT OpenDoor 'Open the door' NEXT 'End'
EVENT IgnoreDoor 'Ignore the doorbell' NEXT 'End'An explicit identifier is one unquoted token, unquoted in the declaration and in every reference.
An attachment connected across lanes
A DATA, DATABASE or TEXT and every node it links to belong to the same lane. An attachment written after a later LANE belongs to that later lane.
pml
LANE user1
START 'Start' NEXT
ACTIVITY 'Review' NEXT
LANE user2
ACTIVITY 'Archive' NEXT
END 'End'
DATA 'Form' NEXT 'Review''Form' follows LANE user2 and belongs to user2. 'Review' belongs to user1.
Fix
Declare the attachment in the lane of the node it belongs with, or repeat that lane before it:
pml
LANE user1
DATA 'Form' NEXT 'Review'A subprocess without its process
A SUBPROCESS names the process it stands for with PROCESS and the process id. The PROCESS clause is missing.
pml
SUBPROCESS 'Billing' NEXTFix
Add the clause: SUBPROCESS 'Billing' PROCESS '<process id>' NEXT. The editor inserts the id when you pick the process from the suggestions. See Subprocesses.
A process id that is not valid
The value after PROCESS is not a process id.
pml
SUBPROCESS 'Billing' PROCESS 'abc' NEXTFix
Pick the process again from the suggestions after PROCESS, so the editor writes its id.
A subprocess whose process no longer exists (warning)
The process a SUBPROCESS references was deleted, or is not available to you.
Fix
Change the process the node references, or remove the node. See Changing the process a node references.
Too many subprocesses (warning)
The process declares more subprocesses than one process records as references. The subprocesses after the limit are drawn, and are not recorded as references.
Fix
Move part of the process into a subprocess of its own, so each process stays within the limit.
A subprocess name that is too long (warning)
The identifier of a SUBPROCESS is longer than a reference records. The node is drawn, and is not recorded as a reference.
Fix
Give the node a shorter description, or a short explicit identifier: SUBPROCESS Billing 'Billing for every order type' PROCESS '<process id>'.
A gateway with more than three branch labels
A gateway carries at most three different link labels across its outgoing links. Branches that repeat a label leave the gateway together and count once.
pml
GATEWAY 'Choice' NEXT 'Approve' 'Yes' AND 'Reject' 'No' AND 'Hold' 'Maybe' AND 'Escalate' 'Later'Fix
Reuse a label, or split the decision over two gateways:
pml
GATEWAY 'Choice' NEXT 'Approve' 'Yes' AND 'Reject' 'No' AND 'Hold' 'Maybe' AND 'Escalate' 'Maybe'A pool in a process without pools
A process uses pools only when its first line is a POOL. A POOL anywhere else is an error.
pml
START 'Begin' NEXT
ACTIVITY 'Pay' NEXT
POOL Shop
END 'Done'Fix
Start the process with a POOL, or remove the POOL lines. See Pool.
A node connected to its own pool
A node links to the pool it belongs to. A pool never links to itself or to a node inside it.
pml
POOL Shop
ACTIVITY 'Pay' NEXT-MESSAGE ShopFix
Link the node to another pool, or to a node in another pool.
An attachment connected to a pool
A DATA, DATABASE or TEXT links to a pool. An attachment links to the nodes it belongs with, never to a pool.
pml
POOL Customer
DATA 'Form' NEXT Shop
ACTIVITY 'Fill form'
POOL Shop
ACTIVITY 'Read form'Fix
Link the attachment to a node: DATA 'Form' NEXT 'Fill form'.
A sequence flow between pools (warning)
A link between two pools, or ending on a pool, is a message flow. Written with NEXT it is a warning.
pml
POOL Customer
ACTIVITY 'Order' NEXT 'Read order'
POOL Shop
ACTIVITY 'Read order'Fix
Write the link with NEXT-MESSAGE: ACTIVITY 'Order' NEXT-MESSAGE 'Read order'. See Next-message.
A message flow from a text annotation
Every link of a TEXT line is an association. NEXT-MESSAGE on a TEXT line is an error.
pml
TEXT 'Within five days' NEXT-MESSAGE 'Pay'Fix
Write the link with NEXT or NEXT-ASSOCIATION: TEXT 'Within five days' NEXT 'Pay'.
The process could not be built
The compiler read the code and could not build a graph from it.
Fix
Undo the last change. When the report stays, send the code through the Feedback button in the header.
Something went wrong
The compiler stopped on an error of its own, not on a mistake in the code.
Fix
Undo the last change. When the report stays, send the code through the Feedback button in the header.