Audience, subject and message; timers and the sweep; terminal actions. Six blocks, none of them complicated on its own, and between them they are most of what separates a workflow that people follow from one they route around.
Notify
A notify block carries an audience, a subject and a message, and what you write is exactly what lands in the recipient's inbox. Write it properly. A notification that says a record changed state is ignored within a week; one that says what is needed and by when gets acted on.
Wait
A wait block holds the run for a set period, which the system sweeps regularly. It is how you build a reminder that only fires if nothing has happened, and how you give a party their contractual number of days before the process moves on without them.
If and Switch
Conditional blocks read the record and choose a path from it. If is the two-way version: over a value threshold, take the longer approval chain. Switch is the many-way version, branching on a type or a category. Between them they are how one template covers a whole module rather than needing one template per case.
Set status
Set status writes a state onto the record mid-run without ending anything: under review while it sits with the engineer, on hold while a certificate is chased. It is what keeps the register honest for people who are reading it rather than acting on it.
End
End terminates the run and sets the final state. A workflow can have several, one per outcome, and usually should: approved, rejected and withdrawn are different endings and the register should be able to tell them apart.