Appearance
Cheatsheet
Every keyword and rule of the Instant Process language on one page. Each row links to the chapter with the full explanation. The Formal specification holds the grammar.
Syntax at a glance
One row per keyword, with its Dutch spelling and its syntax on one line. Square brackets mark an optional part.
| Keyword | Dutch | Syntax |
|---|---|---|
START | BEGIN, START | START [id] 'description' NEXT [target ['label']] |
END | EINDE | END [id] 'description' |
END-TERMINATE | EINDE-BEEINDIGEN | END-TERMINATE [id] 'description' |
ACTIVITY | ACTIVITEIT | ACTIVITY [id] 'description' [NEXT [target ['label']]] |
EVENT | EVENT | EVENT [id] 'description' [NEXT [target ['label']]] |
EVENT-MESSAGE | EVENT-BERICHT | EVENT-MESSAGE [id] 'description' [NEXT [target ['label']]] |
EVENT-TIMER | EVENT-TIMER | EVENT-TIMER [id] 'description' [NEXT [target ['label']]] |
EVENT-CONDITIONAL | EVENT-CONDITIE | EVENT-CONDITIONAL [id] 'description' [NEXT [target ['label']]] |
EVENT-ESCALATION | EVENT-ESCALATIE | EVENT-ESCALATION [id] 'description' [NEXT [target ['label']]] |
EVENT-LINK | EVENT-KOPPELING | EVENT-LINK [id] 'description' [NEXT [target ['label']]] |
EVENT-ERROR | EVENT-FOUT | EVENT-ERROR [id] 'description' [NEXT [target ['label']]] |
EVENT-CANCEL | EVENT-ANNULEREN | EVENT-CANCEL [id] 'description' [NEXT [target ['label']]] |
EVENT-COMPENSATION | EVENT-COMPENSATIE | EVENT-COMPENSATION [id] 'description' [NEXT [target ['label']]] |
EVENT-SIGNAL | EVENT-SIGNAAL | EVENT-SIGNAL [id] 'description' [NEXT [target ['label']]] |
GATEWAY | KEUZE | GATEWAY [id] 'description' NEXT target ['label'] AND target ['label'] |
GATEWAY-EVENT | KEUZE-EVENT | GATEWAY-EVENT [id] 'description' NEXT target ['label'] AND target ['label'] |
GATEWAY-EXCLUSIVE | KEUZE-EXCLUSIEF | GATEWAY-EXCLUSIVE [id] 'description' NEXT target ['label'] AND target ['label'] |
GATEWAY-PARALLEL | KEUZE-PARALLEL | GATEWAY-PARALLEL [id] 'description' NEXT target AND target |
GATEWAY-INCLUSIVE | KEUZE-INCLUSIEF | GATEWAY-INCLUSIVE [id] 'description' NEXT target ['label'] AND target ['label'] |
GATEWAY-COMPLEX | KEUZE-COMPLEX | GATEWAY-COMPLEX [id] 'description' NEXT target ['label'] AND target ['label'] |
NEXT | VOLG | ... NEXT [target ['label']] |
NEXT-MESSAGE | VOLG-BERICHT | ... NEXT-MESSAGE [target ['label']] |
NEXT-ASSOCIATION | VOLG-ASSOCIATIE | ... NEXT-ASSOCIATION [target ['label']] |
AND | EN | ... NEXT target ['label'] AND target ['label'] |
LANE | LANE | LANE Name |
POOL | POOL | POOL Name [NEXT-MESSAGE target ['label']] |
SUBPROCESS | SUBPROCES | SUBPROCESS [id] 'description' PROCESS 'process-id' [NEXT [target ['label']]] |
PROCESS | PROCES | SUBPROCESS 'description' PROCESS 'process-id' |
DATA | DATA | DATA [id] 'description' [NEXT target ['label']] |
DATABASE | DATABASE | DATABASE [id] 'description' [NEXT target ['label']] |
TEXT | TEKST | TEXT [id] 'description' [NEXT target] |
The shape of a line
One line declares one node.
text
KEYWORD [explicit-id] 'description' [NEXT target ['label'] [AND target ['label']]...] [NEXT-MESSAGE ...] [NEXT-ASSOCIATION ...]pml
ACTIVITY 'Review order' NEXT 'Ship order' 'Approved' AND 'Reject order' 'Rejected'| Part | Rule |
|---|---|
KEYWORD | The node type. Keywords are uppercase. |
explicit-id | Optional. Letters, digits, _ and -, starting with a letter or _. No spaces, no quotes. |
'description' | Required. The label, in single quotes. Never empty. |
target | A node: its description in quotes, or its explicit id without quotes. |
'label' | Optional. A label on the link, written directly after its target. |
# comment | Runs to the end of the line. A # inside quotes is part of the text. |
Nodes
| Keyword | Draws | Takes links | Chapter |
|---|---|---|---|
START | Start event | Yes | Basic nodes |
END | End event | No | Basic nodes |
END-TERMINATE | Terminate end event, ends the whole process at once | No | Basic nodes |
ACTIVITY | A work step | Yes | Basic nodes |
SUBPROCESS 'label' PROCESS 'process-id' | A step that stands for another process in the drive | Yes | Subprocesses |
DATA | A data artifact, page shape | Yes, to the nodes it belongs with | Attachments |
DATABASE | A persistent store, cylinder shape | Yes, to the nodes it belongs with | Attachments |
TEXT | A text annotation, the text inside an open bracket | Yes, associations only, to the nodes it explains | Attachments |
Events
| Keyword | Marker | Direction | Use for |
|---|---|---|---|
EVENT | None | Catch | An occurrence with an unspecified trigger |
EVENT-MESSAGE | Envelope | Throw when it only sends a message flow, else catch | A message sent or received |
EVENT-TIMER | Clock | Catch | A date, a delay or a recurring time |
EVENT-CONDITIONAL | Lined page | Catch | A condition or business rule becoming true |
EVENT-ESCALATION | Upward triangle | Throw | Handing control to a higher level |
EVENT-LINK | Arrow | Catch, throw as an end event | A connector between two parts of the same diagram |
EVENT-ERROR | Lightning bolt | Throw | An error interrupting the flow |
EVENT-CANCEL | X | Throw | A cancelled transaction |
EVENT-COMPENSATION | Rewind | Throw | Undoing a completed step |
EVENT-SIGNAL | Triangle | Catch, throw as an end event | A signal many parts of a process react to |
A catch event draws its marker as an outline and a throw event draws it filled. A start event always catches.
See Event nodes.
Gateways
| Keyword | Marker | Paths taken |
|---|---|---|
GATEWAY | None | Unspecified |
GATEWAY-EXCLUSIVE | × | Exactly one |
GATEWAY-PARALLEL | + | All, concurrently |
GATEWAY-INCLUSIVE | ○ | One or more |
GATEWAY-COMPLEX | * | Custom rules |
GATEWAY-EVENT | Pentagon | The path of the event that happens first |
A gateway carries at most three different link labels. A label used again on another branch does not count again. See Gateway nodes.
Links
| Keyword | Link | Drawn as | Chapter |
|---|---|---|---|
NEXT | Sequence flow | Solid line, filled arrowhead | Next |
NEXT-MESSAGE | Message flow | Dashed line, open circle at the source, open arrowhead at the target | Next-message |
NEXT-ASSOCIATION | Association | Dotted line, no arrowhead | Next-association |
AND | Another target for the link keyword before it | The kind of that keyword | And |
pml
ACTIVITY 'Task' NEXT 'Other task' # to a description
ACTIVITY 'Task' NEXT OtherTask # to an explicit id
ACTIVITY 'Task' NEXT 'Other task' 'Label' # with a link label
ACTIVITY 'Task' NEXT 'A' AND 'B' 'Label on B' # two targets
ACTIVITY 'Task' NEXT # to the next node in the textCombining links
A node carries one NEXT, one NEXT-MESSAGE and one NEXT-ASSOCIATION at most, in any order. Each has its own AND chain.
pml
GATEWAY 'Approved?' NEXT 'Ship order' 'Yes' AND 'Archive' NEXT-MESSAGE 'Notify customer' 'No' NEXT-ASSOCIATION 'Approval policy'Ship order and Archive are sequence flows, Notify customer is a message flow and Approval policy is an association. See Combining links.
Link rules
- A label follows its target:
NEXT 'Target' 'Label'.NEXT 'Label'alone makesLabelthe target. - A link keyword without a target connects to the next node in the text.
START,LANE,POOL,DATA,DATABASEandTEXTlines are skipped. - Every link of a
TEXTline is an association, written withNEXTorNEXT-ASSOCIATION.NEXT-MESSAGEon aTEXTline is an error. - A
STARTline always carries a link.START 'description'alone is an error. ENDandEND-TERMINATEcarry no links.- A second
NEXT,NEXT-MESSAGEorNEXT-ASSOCIATIONon one line is an error.
Lanes and pools
| Keyword | Declares | Chapter |
|---|---|---|
LANE Name or LANE 'Name with spaces' | A swimlane. Every following node belongs to it until the next LANE. | Lane |
POOL Name or POOL 'Name with spaces' | A participant. Every following lane and node belongs to it until the next POOL. | Pool |
pml
POOL Customer
LANE Buyer
ACTIVITY 'Place order' NEXT-MESSAGE Shop 'Order form'
POOL Shop
ACTIVITY 'Process order'- A lane takes no description and no links.
- A node returns to an earlier lane only when that lane is declared again.
- A process uses pools only when its first line is a
POOL. APOOLanywhere else is an error. - A pool holds either lanes or nodes directly, not both.
- A link can end on a pool by naming it. A link between two pools, or ending on a pool, is written with
NEXT-MESSAGE. Written withNEXTit is a warning. - A pool never links to itself, to a node inside it, or to a
DATA,DATABASEorTEXT. - A
DATA,DATABASEorTEXTsits in the same lane as every node it links to.
Identifiers
| Kind | Written as | Referenced as |
|---|---|---|
| Implicit | ACTIVITY 'Review order' | 'Review order' |
| Explicit | ACTIVITY Review 'Review order' | Review |
- Every node and pool has a unique identifier. Implicit and explicit identifiers share one namespace.
- An explicit identifier replaces the implicit one. References use the explicit token.
- Add an explicit identifier only when two nodes share a description, for example two
STARTnodes. - A reference to an identifier that does not exist is a warning.
See Explicit identifiers.
Reserved words
START, END, END-TERMINATE, ACTIVITY, SUBPROCESS, PROCESS, DATA, DATABASE, TEXT, LANE, POOL, NEXT, NEXT-MESSAGE, NEXT-ASSOCIATION, AND, every EVENT keyword and every GATEWAY keyword. None of them is an identifier.
Common errors
| Problem | Cause | Fix |
|---|---|---|
| A step that does not exist (warning) | A target matches no description and no explicit id | Write the exact description in quotes, or the explicit id |
| A word that is not expected | A word where the line does not take one, often a mistyped keyword | Correct the keyword or remove the word |
| A missing description | A node keyword without a quoted label | Add 'label' after the keyword or the explicit id |
| A step that is already defined | Two nodes resolve to the same identifier | Give one of them an explicit id |
| A start without a link | START carries no NEXT | Add NEXT, with or without a target |
| An end with a link | END carries NEXT | Remove the link |
| An attachment across lanes | A DATA, DATABASE or TEXT links to a node in another lane | Declare the attachment in that node's lane |
| A message flow from a text annotation | A TEXT line carries NEXT-MESSAGE | Write the link with NEXT or NEXT-ASSOCIATION |
| Too many branch labels | A gateway carries four or more different labels | Reuse a label, or split the decision over two gateways |
| A sequence flow across pools (warning) | NEXT between two pools | Use NEXT-MESSAGE |
See Common errors.
Stylesheets
A stylesheet is a .pms file of blocks. Every value is in single quotes and every property ends with ;.
css
activity {
fill: '#ffffff';
stroke: '#d5dae2';
}
#urgent-review {
shape: 'diamond';
}| Selectors | document, edge, message-flow, association, activity, gateway, event, data, start, end, attachment, annotation, subprocess, swimlane, pool, subprocess-group, #id |
|---|---|
| Colour and line | background, fill, stroke, strokewidth, text-color |
| Typography | font-family, font-size, font-weight, font-style, line-height |
| Spacing | node-padding, node-gap, swimlane-inset, pool-gap, group-inset |
| Direction | flow-direction: left-to-right, top-to-bottom |
| Shape | shape: rectangle, circle, diamond, document, cylinder |
An #id block wins over an element block. See Stylesheets.
A complete process
pml
LANE Customer
START 'Order placed' NEXT
ACTIVITY 'Pay order' NEXT
LANE Shop
DATABASE 'Stock' NEXT 'Check stock'
ACTIVITY 'Check stock' NEXT
GATEWAY-EXCLUSIVE 'In stock?' NEXT 'Ship order' 'Yes' AND 'Refund order' 'No'
ACTIVITY 'Ship order' NEXT
END 'Order delivered'
ACTIVITY 'Refund order' NEXT
END 'Order refunded'