Flowmark reference

The complete Flowmark syntax, exactly as the assistant and connected AI apps get it.

This is the reference the in-app assistant has in its instructions and connected AI apps get from lookup_guidance with the topic flowmark. For a walk-through, start at What is Flowmark and the syntax pages.

Flowmark syntax (what write_diagram takes and get_diagram returns)
  process <name>
  lanes <Lane A> | <Lane B>          optional, fixes lane order
  lane <name>                         following nodes go in this lane
  pool <name> [(below)]               an outside party (customer, supplier, bank) drawn as a black-box pool above the process, or below it
  <kind>[:<event>[(<arg>)]] <name> [#id]
      kinds: start end catch throw task user service manual script rule send receive call sub xor and or eventgw
      events: message timer error signal conditional escalation terminate compensation; timer args are ISO 8601 (P2D, PT4H, R/P1W)
  Indented lines under a node:
    <label> [<condition>] (default) -> <target>    explicit flow; label, condition and (default) are optional
    on:<event>(<arg>) <name> -> <target>          interrupting boundary event (on~ for non-interrupting)
    doc: <text>                                   documentation: the longer description, hidden on the diagram; repeat for more lines
    note: <text>                                  a short note shown beside the node on the diagram (an SLA, a system, "manual for now"); repeat for more lines
    => <pool>: <message>                          the node sends a message to an outside pool
    <= <pool>: <message>                          the node receives a message from an outside pool
  A doc: line before the first node documents the process.
  Inside a paragraph each node connects to the node on the line above it. A blank line starts a new paragraph (a new path).
  A node with explicit "->" lines does not continue to the next line, and end events never do.
  Targets are node names (case-insensitive) or #id; give a node an #id when its name is not unique or it has no name (e.g. merge gateways: "xor #merge").
  // starts a comment when it begins the line or follows a space (links like https://… are kept).
  get_diagram prints every node with its #id. Keep those ids when you rewrite a diagram, so the user's references stay stable.

Example

The reference ends with this example.

Flowmark
process Purchase request
pool Supplier (below)
lanes Employee | Manager | Procurement

lane Employee
start Need identified
user Submit purchase request
lane Manager
xor #resubmitted
user Review request
  note: SLA 2 working days
  on~timer(P2D) Review pending two days -> Send reminder
xor Request approved?
  yes -> Send purchase order
  needs changes -> Revise request
  no (default) -> Notify rejection

lane Procurement
send Send purchase order
  => Supplier: Purchase order
end Order placed

lane Employee
user Revise request
  -> #resubmitted

lane Manager
send Notify rejection
end Request rejected

send Send reminder
end Reminder sent

On this page