Syntax

Steps

Declare each node on its own line, with a kind and a name.

A node line is the kind, then the name: user Approve invoice. Kinds are always lowercase, and so are event types.

Flowmark
process Business trip
start Trip approved
user Choose flights
service Book flights
send Send itinerary
manual File paper receipts
end Trip booked

Kinds

KindBPMN elementExample line
startStart eventstart Order received
endEnd eventend Order shipped
catchIntermediate catch eventcatch:message Payment received
throwIntermediate throw eventthrow:signal Stock updated
taskTasktask Archive file
userUser taskuser Approve invoice
serviceService taskservice Check credit score
manualManual taskmanual Pack parcel
scriptScript taskscript Calculate discount
ruleBusiness rule taskrule Decide risk class
sendSend tasksend Send quote
receiveReceive taskreceive Receive signed contract
callCall activitycall Run credit check
subSub-process (collapsed)sub Handle return
xorExclusive gatewayxor Approved?
andParallel gatewayand #split
orInclusive gatewayor Which documents are missing?
eventgwEvent-based gatewayeventgw #wait

Events take a type after a colon, such as start:message. See Events. Gateways split and merge paths. See Gateways.

Pick a task type

  • user: a person works in a system.
  • manual: offline work, such as packing a parcel.
  • service: the system does it on its own.
  • send and receive: a message goes to or comes from another party.
  • rule: a decision table decides.
  • call: a reusable process of its own.

A sub is drawn collapsed. Flowmark has no way to write what's inside it, so use it as a placeholder for a detailed area, or use call to point to a separate process.

Boundary events aren't a kind of their own. You attach them to a task with an on: line. See Boundary events.

On this page