Hoe je een mermaid sequence diagram schrijft
Een sequence diagram laat zien wie met wie praat, en in welke volgorde. In mermaid duurt het schrijven ervan ongeveer net zo lang als het hardop beschrijven, wat is waarom dit het diagramtype is dat het langst standhoudt in een codebase. Alles hieronder is kopieer-plak-klaar voor de editor.
Het minimum
Declareer het diagramtype, schrijf dan één regel per bericht. Participants worden aangemaakt bij eerste vermelding, in de volgorde waarin ze verschijnen.
sequenceDiagram
User->>API: POST /orders
API->>DB: INSERT order
DB-->>API: order id
API-->>User: 201 CreatedDeclareer participants expliciet met participant User wanneer je een specifieke volgorde van links naar rechts wilt, in plaats van de volgorde van eerste vermelding.
Pijltypes
| Syntax | Betekenis |
|---|---|
A->>B: text | Verzoek — doorgetrokken lijn, gevulde pijlpunt |
A-->>B: text | Antwoord — gestippelde lijn, gevulde pijlpunt |
A->B: text | Doorgetrokken lijn, open pijlpunt |
A-)B: text | Asynchroon bericht — open pijlpunt, geen antwoord verwacht |
A-xB: text | Bericht dat mislukt of wordt weggegooid |
De conventie die het waard is om aan te houden: doorgetrokken voor de aanroep, gestippeld voor het antwoord. Een lezer kan dan een verzoek van een antwoord onderscheiden zonder ook maar één label te lezen.
Participants en aliassen
sequenceDiagram
participant U as Browser
participant A as API gateway
participant S as Order service
U->>A: GET /orders
A->>S: list(userId)
S-->>A: orders
A-->>U: 200 OKGebruik actor U as Browser in plaats van participant om een stokfiguur te tekenen — de moeite waard voor de mens aan de linkerrand van een authenticatieflow.
Activatiebalken
Activatiebalken laten zien hoe lang een participant bezig is. Markeer ze expliciet met activate/deactivate, of voeg + en - toe aan de pijlen, wat korter is en minder snel uit balans raakt.
sequenceDiagram
User->>+API: POST /pay
API->>+Bank: charge
Bank-->>-API: authorised
API-->>-User: receiptLoops, voorwaarden en parallel werk
sequenceDiagram
User->>API: POST /import
loop every row
API->>DB: upsert row
end
alt all rows valid
API-->>User: 200 OK
else some failed
API-->>User: 422 with errors
end
par notify
API->>Email: send summary
and audit
API->>Log: write entry
endloop <label>…end— herhaling.alt <label>…else <label>…end— elkaar uitsluitende vertakkingen.opt <label>…end— een vertakking die simpelweg niet hoeft te gebeuren.par <label>…and <label>…end— dingen die tegelijk gebeuren.critical/break— een sectie die niet onderbroken mag worden, en een vroegtijdige uitgang.
Notities
sequenceDiagram
User->>API: POST /login
Note right of API: Rate limited<br>5 per minute
API-->>User: token
Note over User,API: Token is valid for 30 daysNote over A,B overspant twee participants en is de juiste plek voor een beperking die bij de interactie hoort in plaats van bij een van beide kanten ervan.
Een volledig voorbeeld
sequenceDiagram
actor U as User
participant A as App
participant P as Provider
U->>+A: Click "Sign in"
A-->>-U: Redirect to provider
U->>+P: Authorise
P-->>-U: Redirect back with code
U->>+A: GET /callback?code=…
A->>+P: Exchange code for token
P-->>-A: access token
Note right of A: Session cookie set here
A-->>-U: Signed inBewerk dit diagram
Plak het in het codetabblad en verander een regel — de preview rendert opnieuw terwijl je typt.
Veelgestelde vragen
Hoe nummer ik de berichten?
Zet autonumber op de regel direct na sequenceDiagram. Elk bericht krijgt dan een volgnummer, wat een diagram veel makkelijker maakt om over te praten in reviewcommentaar.
Kan een participant een bericht naar zichzelf sturen?
Ja — schrijf dezelfde naam aan beide kanten: API->>API: retry. Mermaid tekent de lus terug naar dezelfde lifeline.
Hoe laat ik zien dat een participant vernietigd wordt?
Gebruik destroy <name> vóór het bericht dat hem beëindigt, of create participant <name> om hem halverwege het diagram te laten verschijnen in plaats van bovenaan.
Kan ik een sequence diagram bewerken op het visuele canvas?
Het visuele canvas bewerkt flowcharts. Sequence diagrams worden geschreven op het codetabblad, waar ze live renderen in de preview — wat meestal sneller is, omdat een sequence diagram in essentie een lijst met regels is.