Appearance
Links and lanes
Nodes on their own are a list. Links turn them into a graph, and lanes say who owns each part of it.
Next
NEXT defines flows, links, between two nodes. A link written with NEXT is an ordinary link, drawn as a solid line. NEXT-MESSAGE takes the place of NEXT for a message flow, and NEXT-ASSOCIATION for an association. A node can carry all three, see Combining links. If the next node is not defined, Instant Process will automatically select the next node in the text to connect to.
Input
pml
'Node 1' NEXT 'Node 2'The target is a node, written as its description in quotes or as its explicit identifier:
pml
ACTIVITY 'Task' NEXT 'Node 1' # implicit reference
ACTIVITY 'Task' NEXT OtherNode # explicit referenceLeave the target blank and the connection lands on the next node in the text:
pml
ACTIVITY 'Task' NEXT
ACTIVITY 'Next Task' # the previous line connects here implicitlyYou can label a connection by adding a second string after the target. A link label needs an explicit identifier on the target:
pml
ACTIVITY 'Task' NEXT 'Node 1' 'Description'
ACTIVITY 'Task' NEXT OtherNode 'Description'Input suggestion
None.
Icon
And
AND allows for linking the same node to multiple following nodes. It continues the NEXT, the NEXT-MESSAGE or the NEXT-ASSOCIATION it follows.
Input
pml
ACTIVITY 'Task' NEXT 'Node 1' AND 'Node 2'Targets can be descriptions or explicit identifiers:
pml
ACTIVITY 'Task' NEXT OtherNode AND OtherNode2
ACTIVITY Task_A 'Task' NEXT OtherNode AND 'Node 2'Gateways especially rely on AND to express branching:
pml
GATEWAY 'Choice' NEXT 'Node 1' 'Option 1' AND 'Node 2' 'Option 2'Input suggestion
None.
Icon
None.
Next-message
NEXT-MESSAGE defines a message flow. A message flow is a link that carries information between two nodes, typically between lanes: an order form sent by a customer, an invoice sent back. NEXT-MESSAGE is written in the place of NEXT and takes the same targets, labels and AND chain.
Input
pml
ACTIVITY 'Place order' NEXT-MESSAGE 'Process order'A label follows the target, as it does after NEXT:
pml
ACTIVITY 'Place order' NEXT-MESSAGE 'Process order' 'Order form'AND adds more message flows. Every target in the chain after NEXT-MESSAGE is a message flow:
pml
ACTIVITY 'Send quote' NEXT-MESSAGE 'Customer' 'Quote' AND 'Sales archive' 'Copy'Leave the target blank and the message flow lands on the next node in the text:
pml
ACTIVITY 'Send invoice' NEXT-MESSAGE
ACTIVITY 'Receive invoice'A message flow is drawn as a dashed line with a small open circle where it leaves its source and an open arrowhead where it reaches its target. It is laid out and labelled like every other link. The stylesheet colours message flows with the message-flow selector, see Stylesheets.
Input suggestion
While you type the keyword after a node's description, the editor suggests NEXT-MESSAGE.
Icon
None.
Next-association
NEXT-ASSOCIATION defines an association. An association ties a node to information that belongs with it, outside the flow of the process: a policy a decision follows, a document a task refers to. NEXT-ASSOCIATION is written in the place of NEXT and takes the same targets, labels and AND chain.
Input
pml
ACTIVITY 'Check order' NEXT-ASSOCIATION 'Order policy'A label follows the target, as it does after NEXT:
pml
ACTIVITY 'Check order' NEXT-ASSOCIATION 'Order policy' 'Applies'AND adds more associations. Every target in the chain after NEXT-ASSOCIATION is an association:
pml
ACTIVITY 'Check order' NEXT-ASSOCIATION 'Order policy' AND 'Price list'Leave the target blank and the association lands on the next node in the text:
pml
ACTIVITY 'Check order' NEXT-ASSOCIATION
ACTIVITY 'Order policy'An association is drawn as a dotted line without an arrowhead. It is laid out and labelled like every other link. The stylesheet colours associations with the association selector, see Stylesheets.
Input suggestion
While you type the keyword after a node's description, the editor suggests NEXT-ASSOCIATION.
Icon
None.
Combining links
A node carries up to three connection clauses: one NEXT, one NEXT-MESSAGE and one NEXT-ASSOCIATION, in any order. Each keyword has its own AND chain. The targets after NEXT are ordinary links, the targets after NEXT-MESSAGE are message flows and the targets after NEXT-ASSOCIATION are associations.
Input
pml
ACTIVITY 'Check order' NEXT 'Ship order' NEXT-MESSAGE 'Notify customer' 'Confirmation' NEXT-ASSOCIATION 'Order policy'Here Ship order is reached by an ordinary link, Notify customer by a message flow and Order policy by an association.
A NEXT and a NEXT-MESSAGE combine the same way on a gateway:
pml
GATEWAY 'Approved?' NEXT 'Ship order' 'Yes' AND 'Archive' NEXT-MESSAGE 'Notify customer' 'No'Here Ship order and Archive are reached by ordinary links and Notify customer by a message flow.
A second NEXT, NEXT-MESSAGE or NEXT-ASSOCIATION on the same line is an error.
Where a link attaches
Every link attaches to one side of a node: left, top, right or bottom.
Outgoing links claim their sides first, one link per side. Incoming links take the sides that are left: the left side while it is free, then the free side each link approaches from. Once every side of a node is taken, further incoming links share the left side and arrive side by side.
Links leaving the same side of the same node share one line until they split, except that ordinary links, message flows and associations never share a line with each other. Every other link runs on a line of its own, parallel to its neighbours. Where two links cross, the horizontal line hops over the vertical one.
Pool
POOL defines the participants of a process: organisations or independent parties that each run their own part of it. Lanes and nodes placed after a POOL declaration belong to that pool until a new POOL declaration is encountered.
In BPMN a pool is drawn as a band with its name on the far left and its lanes inside it. Pools are stacked under each other with a gap between them.
Input
pml
POOL NAME_PARTICIPANTA bare pool name must be a single term. To use a name with spaces, wrap it in single quotes:
pml
POOL 'Web shop'Input suggestion
None.
Icon
None.
Usage
Start the process with a pool, then list its lanes and nodes. Introducing another POOL switches the following lanes and nodes to the new pool.
pml
POOL 'Customer'
LANE Buyer
START 'Need product' NEXT
ACTIVITY 'Place order' NEXT-MESSAGE 'Process order' 'Order form'
POOL 'Shop'
LANE Sales
ACTIVITY 'Process order' NEXT
LANE Warehouse
ACTIVITY 'Ship order' NEXT-MESSAGE 'Carrier' 'Parcel'
POOL 'Carrier'Customer and Shop each hold their own lanes. Carrier holds no lanes and no nodes: it is drawn as an empty band.
A link between two pools is a message flow, written with NEXT-MESSAGE. A link between two pools written with NEXT is drawn and reported as a warning.
A link can name a pool as its target. It ends on the border of that pool:
pml
ACTIVITY 'Ship order' NEXT-MESSAGE 'Carrier' 'Parcel'A pool sends a message with its own NEXT-MESSAGE. The link starts on the border of the pool:
pml
POOL 'Carrier' NEXT-MESSAGE 'Confirm delivery' 'Proof of delivery'A pool without lanes holds its nodes directly:
pml
POOL 'Customer'
START 'Need product' NEXT
ACTIVITY 'Place order'Notes
- A process either starts with
POOLor has no pools. APOOLin a process that starts with anything else is an error on its line. - A pool identifier follows the same identifier rules as a node, and a pool and a node never share an identifier.
- A lane belongs to the pool it is declared in. The same lane name in two pools gives two lanes.
- A pool either declares lanes or holds its nodes directly. A
LANEafter a node that sits directly in the pool is an error on its line. - Declaring a pool again returns to it and continues in the lane that was last used there.
- A
NEXTon aPOOLline names its targets. A bareNEXTon aPOOLline is an error. - A link between a pool and a node inside that pool, and a link between a pool and an attachment, are errors on their line.
- The stylesheet colours pools with the
poolselector, see Stylesheets.
Lane
LANE defines the swimming lanes of a process. Nodes placed after a LANE declaration belong to that lane until a new LANE declaration is encountered. Lanes make it easy to see who does what in a process.
In BPMN lanes are drawn as horizontal bands inside a pool. Each lane is labelled with its actor or role, and every node that belongs to that lane is rendered inside its band. Sequence flow may cross lane boundaries freely: lanes are a visual partitioning of responsibility, not a constraint on the flow itself.
Input
pml
LANE NAME_ACTORA bare lane name must be a single term. To use a name with spaces, wrap it in single quotes:
pml
LANE 'Lane 1'Input suggestion
None.
Icon
Usage
Declare a lane, then list the nodes that belong to it. Introducing another LANE switches the following nodes to the new lane.
pml
LANE Customer
START 'Arrive' NEXT
ACTIVITY 'Place order' NEXT
LANE Staff
ACTIVITY 'Process order' NEXT
END 'Order complete'In this example, Arrive and Place order sit in the Customer lane while Process order and Order complete sit in the Staff lane. Flow continues across lane boundaries as usual via NEXT, NEXT-MESSAGE and NEXT-ASSOCIATION.
Notes
- A lane identifier follows the same identifier rules as any other node.
- Lane names should describe an actor or role. Conventionally they use uppercase or underscore_case, but any valid identifier works.
- A later node returns to an earlier lane only when that lane is declared again.
- Processes without any
LANEdeclaration are rendered without swimlanes. - A lane that holds no nodes is rendered as an empty band, in declaration order, with its name in the band header.
- In a process with pools, a lane belongs to the pool it is declared in and is drawn inside that pool.