Skip to content

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.

KeywordDutchSyntax
STARTBEGIN, STARTSTART [id] 'description' NEXT [target ['label']]
ENDEINDEEND [id] 'description'
END-TERMINATEEINDE-BEEINDIGENEND-TERMINATE [id] 'description'
ACTIVITYACTIVITEITACTIVITY [id] 'description' [NEXT [target ['label']]]
EVENTEVENTEVENT [id] 'description' [NEXT [target ['label']]]
EVENT-MESSAGEEVENT-BERICHTEVENT-MESSAGE [id] 'description' [NEXT [target ['label']]]
EVENT-TIMEREVENT-TIMEREVENT-TIMER [id] 'description' [NEXT [target ['label']]]
EVENT-CONDITIONALEVENT-CONDITIEEVENT-CONDITIONAL [id] 'description' [NEXT [target ['label']]]
EVENT-ESCALATIONEVENT-ESCALATIEEVENT-ESCALATION [id] 'description' [NEXT [target ['label']]]
EVENT-LINKEVENT-KOPPELINGEVENT-LINK [id] 'description' [NEXT [target ['label']]]
EVENT-ERROREVENT-FOUTEVENT-ERROR [id] 'description' [NEXT [target ['label']]]
EVENT-CANCELEVENT-ANNULERENEVENT-CANCEL [id] 'description' [NEXT [target ['label']]]
EVENT-COMPENSATIONEVENT-COMPENSATIEEVENT-COMPENSATION [id] 'description' [NEXT [target ['label']]]
EVENT-SIGNALEVENT-SIGNAALEVENT-SIGNAL [id] 'description' [NEXT [target ['label']]]
GATEWAYKEUZEGATEWAY [id] 'description' NEXT target ['label'] AND target ['label']
GATEWAY-EVENTKEUZE-EVENTGATEWAY-EVENT [id] 'description' NEXT target ['label'] AND target ['label']
GATEWAY-EXCLUSIVEKEUZE-EXCLUSIEFGATEWAY-EXCLUSIVE [id] 'description' NEXT target ['label'] AND target ['label']
GATEWAY-PARALLELKEUZE-PARALLELGATEWAY-PARALLEL [id] 'description' NEXT target AND target
GATEWAY-INCLUSIVEKEUZE-INCLUSIEFGATEWAY-INCLUSIVE [id] 'description' NEXT target ['label'] AND target ['label']
GATEWAY-COMPLEXKEUZE-COMPLEXGATEWAY-COMPLEX [id] 'description' NEXT target ['label'] AND target ['label']
NEXTVOLG... NEXT [target ['label']]
NEXT-MESSAGEVOLG-BERICHT... NEXT-MESSAGE [target ['label']]
NEXT-ASSOCIATIONVOLG-ASSOCIATIE... NEXT-ASSOCIATION [target ['label']]
ANDEN... NEXT target ['label'] AND target ['label']
LANELANELANE Name
POOLPOOLPOOL Name [NEXT-MESSAGE target ['label']]
SUBPROCESSSUBPROCESSUBPROCESS [id] 'description' PROCESS 'process-id' [NEXT [target ['label']]]
PROCESSPROCESSUBPROCESS 'description' PROCESS 'process-id'
DATADATADATA [id] 'description' [NEXT target ['label']]
DATABASEDATABASEDATABASE [id] 'description' [NEXT target ['label']]
TEXTTEKSTTEXT [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'
PartRule
KEYWORDThe node type. Keywords are uppercase.
explicit-idOptional. Letters, digits, _ and -, starting with a letter or _. No spaces, no quotes.
'description'Required. The label, in single quotes. Never empty.
targetA node: its description in quotes, or its explicit id without quotes.
'label'Optional. A label on the link, written directly after its target.
# commentRuns to the end of the line. A # inside quotes is part of the text.

Nodes ​

KeywordDrawsTakes linksChapter
STARTStart eventYesBasic nodes
ENDEnd eventNoBasic nodes
END-TERMINATETerminate end event, ends the whole process at onceNoBasic nodes
ACTIVITYA work stepYesBasic nodes
SUBPROCESS 'label' PROCESS 'process-id'A step that stands for another process in the driveYesSubprocesses
DATAA data artifact, page shapeYes, to the nodes it belongs withAttachments
DATABASEA persistent store, cylinder shapeYes, to the nodes it belongs withAttachments
TEXTA text annotation, the text inside an open bracketYes, associations only, to the nodes it explainsAttachments

Events ​

KeywordMarkerDirectionUse for
EVENTNoneCatchAn occurrence with an unspecified trigger
EVENT-MESSAGEEnvelopeThrow when it only sends a message flow, else catchA message sent or received
EVENT-TIMERClockCatchA date, a delay or a recurring time
EVENT-CONDITIONALLined pageCatchA condition or business rule becoming true
EVENT-ESCALATIONUpward triangleThrowHanding control to a higher level
EVENT-LINKArrowCatch, throw as an end eventA connector between two parts of the same diagram
EVENT-ERRORLightning boltThrowAn error interrupting the flow
EVENT-CANCELXThrowA cancelled transaction
EVENT-COMPENSATIONRewindThrowUndoing a completed step
EVENT-SIGNALTriangleCatch, throw as an end eventA 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 ​

KeywordMarkerPaths taken
GATEWAYNoneUnspecified
GATEWAY-EXCLUSIVE×Exactly one
GATEWAY-PARALLEL+All, concurrently
GATEWAY-INCLUSIVE○One or more
GATEWAY-COMPLEX*Custom rules
GATEWAY-EVENTPentagonThe 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.

KeywordLinkDrawn asChapter
NEXTSequence flowSolid line, filled arrowheadNext
NEXT-MESSAGEMessage flowDashed line, open circle at the source, open arrowhead at the targetNext-message
NEXT-ASSOCIATIONAssociationDotted line, no arrowheadNext-association
ANDAnother target for the link keyword before itThe kind of that keywordAnd
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 text

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.

  • A label follows its target: NEXT 'Target' 'Label'. NEXT 'Label' alone makes Label the target.
  • A link keyword without a target connects to the next node in the text. START, LANE, POOL, DATA, DATABASE and TEXT lines are skipped.
  • Every link of a TEXT line is an association, written with NEXT or NEXT-ASSOCIATION. NEXT-MESSAGE on a TEXT line is an error.
  • A START line always carries a link. START 'description' alone is an error.
  • END and END-TERMINATE carry no links.
  • A second NEXT, NEXT-MESSAGE or NEXT-ASSOCIATION on one line is an error.

Lanes and pools ​

KeywordDeclaresChapter
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. A POOL anywhere 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 with NEXT it is a warning.
  • A pool never links to itself, to a node inside it, or to a DATA, DATABASE or TEXT.
  • A DATA, DATABASE or TEXT sits in the same lane as every node it links to.

Identifiers ​

KindWritten asReferenced as
ImplicitACTIVITY 'Review order''Review order'
ExplicitACTIVITY 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 START nodes.
  • 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 ​

ProblemCauseFix
A step that does not exist (warning)A target matches no description and no explicit idWrite the exact description in quotes, or the explicit id
A word that is not expectedA word where the line does not take one, often a mistyped keywordCorrect the keyword or remove the word
A missing descriptionA node keyword without a quoted labelAdd 'label' after the keyword or the explicit id
A step that is already definedTwo nodes resolve to the same identifierGive one of them an explicit id
A start without a linkSTART carries no NEXTAdd NEXT, with or without a target
An end with a linkEND carries NEXTRemove the link
An attachment across lanesA DATA, DATABASE or TEXT links to a node in another laneDeclare the attachment in that node's lane
A message flow from a text annotationA TEXT line carries NEXT-MESSAGEWrite the link with NEXT or NEXT-ASSOCIATION
Too many branch labelsA gateway carries four or more different labelsReuse a label, or split the decision over two gateways
A sequence flow across pools (warning)NEXT between two poolsUse 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';
}
Selectorsdocument, edge, message-flow, association, activity, gateway, event, data, start, end, attachment, annotation, subprocess, swimlane, pool, subprocess-group, #id
Colour and linebackground, fill, stroke, strokewidth, text-color
Typographyfont-family, font-size, font-weight, font-style, line-height
Spacingnode-padding, node-gap, swimlane-inset, pool-gap, group-inset
Directionflow-direction: left-to-right, top-to-bottom
Shapeshape: 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'