📄️ Overview
An event represents something that happens during a business process — a message arrives, time passes, an error occurs. Unlike activities, events do not perform work of their own: catching events wait for their trigger to occur, while throwing events produce a result and continue immediately.
📄️ Message events
Message events let a process react to or produce messages — named payloads published to the engine by external systems or by other processes. Catching message events pause the process until a matching message is published; throwing message events do not send anything themselves — like a Send task, they create a job and a worker performs the actual delivery.
📄️ Timer events
Timer events act on the passage of time: they start processes on a schedule, delay a flow, or bound how long an activity may run. The engine schedules the timers itself — they are persisted with the process state and fire automatically, without any external trigger. Timer events are always catching.
📄️ Error events
Error events model business failures that divert the process to an explicit error path — a declined payment, an item out of stock. A BPMN error is identified by an error code: it is thrown by an error end event or by a failing job worker, and caught by an error boundary event — or the error start event of an event sub process — with a matching code on an enclosing scope. Technical failures without a matching catch become incidents instead.
📄️ Link events
Link events connect two points of the same process without drawing a sequence flow between them. They always come as a pair matched by link name: the throw event is the exit point, the catch event is where the flow resumes. Links are purely a diagramming device — the token moves from throw to catch immediately, nothing is executed and nothing is waited for.