Events
Start, end and wait with plain, message, timer and other event types.
A start, end, catch or throw event can take a type after a colon, such as start:message or end:terminate. The types are message, timer, error, signal, conditional, escalation, terminate and compensation. Without a type you get a plain event.
This process starts every week, waits for a message and sends a signal:
process Weekly stock count
start:timer(R/P1W) Week started
manual Count stock
send Send count to purchasing
catch:message Purchasing confirmed
throw:signal Stock levels updated
end Count closedSet a timer
Only timers use an argument, written in parentheses right after the type. It's an ISO 8601 value, and the app tells the three kinds apart by the first letter:
| You want | Starts with | Example line |
|---|---|---|
| A wait (duration) | P | catch:timer(P2D) Two days passed or catch:timer(P1DT12H) Wait over |
| A fixed date | a digit | start:timer(2026-12-31T09:00:00Z) Year end reached |
| A repeating cycle | R | start:timer(R/P1W) Week started or start:timer(R3/PT10M) Retry due |
In the BPMN XML these become a time duration, time date and time cycle. A timer with no argument parses, but the checks warn that it has no duration, date or cycle.
Which types fit where
Flowmark accepts any type on any event, but BPMN doesn't: a start event can be plain, message, timer, signal or conditional, and an end event can't be a timer or conditional.
Name events as a state, such as "Order received" or "Invoice paid".
For an event on the edge of a task, such as a deadline, see Boundary events.