Så skriver du ett mermaid-sekvensdiagram

Ett sekvensdiagram visar vem som pratar med vem, i vilken ordning. I mermaid tar det ungefär lika lång tid att skriva som att beskriva högt, vilket är varför det är diagramtypen som överlever längst i en kodbas. Allt nedan är redo att kopieras rakt in i editorn.

Det minsta som behövs

Deklarera diagramtypen, skriv sedan en rad per meddelande. Deltagare skapas vid första omnämnandet, i den ordning de dyker upp.

sequenceDiagram
  User->>API: POST /orders
  API->>DB: INSERT order
  DB-->>API: order id
  API-->>User: 201 Created

Deklarera deltagare explicit med participant User när du vill ha en specifik vänster-till-höger-ordning istället för ordningen de först nämns i.

Piltyper

SyntaxBetydelse
A->>B: textFörfrågan — heldragen linje, fylld pilspets
A-->>B: textSvar — streckad linje, fylld pilspets
A->B: textHeldragen linje, öppen pilspets
A-)B: textAsynkront meddelande — öppen pilspets, inget svar förväntas
A-xB: textMeddelande som misslyckas eller tappas

Konventionen värd att behålla: heldragen för anropet, streckad för returen. En läsare kan då avgöra en förfrågan från ett svar utan att läsa en enda etikett.

Deltagare och alias

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 OK

Använd actor U as Browser istället för participant för att rita en streckgubbe — värt det för personen i vänsterkanten av ett autentiseringsflöde.

Aktiveringsstaplar

Aktiveringsstaplar visar hur länge en deltagare är upptagen. Markera dem antingen explicit med activate/deactivate, eller lägg till + och - på pilarna, vilket är kortare och svårare att få i obalans.

sequenceDiagram
  User->>+API: POST /pay
  API->>+Bank: charge
  Bank-->>-API: authorised
  API-->>-User: receipt

Loopar, villkor och parallellt arbete

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
  end
  • loop <label> … end — upprepning.
  • alt <label> … else <label> … end — ömsesidigt uteslutande grenar.
  • opt <label> … end — en gren som kanske helt enkelt inte inträffar.
  • par <label> … and <label> … end — saker som händer samtidigt.
  • critical / break — ett avsnitt som inte får avbrytas, och en tidig utgång.

Anteckningar

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 days

Note over A,B spänner över två deltagare och är rätt plats för ett villkor som hör till interaktionen snarare än till någon av sidorna.

Ett fullständigt exempel

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 in
OAuth-inloggning, från början till slut.

Redigera det här diagrammet

Klistra in det i kodfliken och ändra en rad — förhandsgranskningen ritas om medan du skriver.

Vanliga frågor

Hur numrerar jag meddelandena?

Sätt autonumber på raden direkt efter sequenceDiagram. Varje meddelande får då ett löpnummer, vilket gör ett diagram mycket lättare att prata om i granskningskommentarer.

Kan en deltagare skicka ett meddelande till sig själv?

Ja — skriv samma namn på båda sidor: API->>API: retry. Mermaid ritar loopen tillbaka in i samma livslinje.

Hur visar jag att en deltagare förstörs?

Använd destroy <name> före meddelandet som avslutar den, eller create participant <name> för att låta den dyka upp mitt i diagrammet istället för högst upp.

Kan jag redigera ett sekvensdiagram på den visuella canvasen?

Den visuella canvasen redigerar flödesdiagram. Sekvensdiagram skrivs på kodfliken, där de renderas direkt i förhandsgranskningen — vilket oftast är snabbare ändå, eftersom ett sekvensdiagram i grunden är en lista med rader.

Fler guider

  1. Exportera mermaid till PNG eller SVG

    Fyra vägar ut ur ett mermaid-diagram — PNG, SVG, .mmd-källkod och ett Markdown-block — och när var och en är rätt svar.

  2. Mermaid-syntax: referensblad

    Nodformer, pilar, undergrafer och styling på en sida — plus ett fungerande exempel på varje diagramtyp mermaid renderar.

Öppna editorn. Gratis — ingen registrering.

En tom canvas, en kodflik och alla exportalternativ — gratis, i din webbläsare, just nu.