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.
process Business trip
start Trip approved
user Choose flights
service Book flights
send Send itinerary
manual File paper receipts
end Trip bookedKinds
| Kind | BPMN element | Example line |
|---|---|---|
start | Start event | start Order received |
end | End event | end Order shipped |
catch | Intermediate catch event | catch:message Payment received |
throw | Intermediate throw event | throw:signal Stock updated |
task | Task | task Archive file |
user | User task | user Approve invoice |
service | Service task | service Check credit score |
manual | Manual task | manual Pack parcel |
script | Script task | script Calculate discount |
rule | Business rule task | rule Decide risk class |
send | Send task | send Send quote |
receive | Receive task | receive Receive signed contract |
call | Call activity | call Run credit check |
sub | Sub-process (collapsed) | sub Handle return |
xor | Exclusive gateway | xor Approved? |
and | Parallel gateway | and #split |
or | Inclusive gateway | or Which documents are missing? |
eventgw | Event-based gateway | eventgw #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.sendandreceive: 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.