Sådan skriver du et mermaid sequence-diagram

Et sequence-diagram viser, hvem der taler med hvem, og i hvilken rækkefølge. I mermaid tager det cirka lige så lang tid at skrive, som det tager at beskrive højt, hvilket er grunden til, at det er den diagramtype, der overlever længst i en kodebase. Alt herunder er klar til copy-paste i editoren.

Det simpleste eksempel

Deklarér diagramtypen, og skriv derefter én linje pr. besked. Deltagere oprettes ved første omtale, i den rækkefølge de optræder.

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

Deklarér deltagere eksplicit med participant User, når du vil have en bestemt venstre-til-højre-rækkefølge frem for rækkefølgen af første omtale.

Piletyper

SyntaksBetydning
A->>B: textForespørgsel — heltrukket linje, udfyldt pilespids
A-->>B: textSvar — stiplet linje, udfyldt pilespids
A->B: textHeltrukket linje, åben pilespids
A-)B: textAsynkron besked — åben pilespids, intet svar forventet
A-xB: textBesked, der fejler eller droppes

Konventionen, det er værd at holde fast i: heltrukket til kaldet, stiplet til svaret. En læser kan så kende forskel på en forespørgsel og et svar uden at læse en eneste label.

Deltagere og aliaser

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

Brug actor U as Browser i stedet for participant for at tegne en pindefigur — det er det værd for mennesket i venstre kant af et autentificeringsflow.

Aktiveringsbjælker

Aktiveringsbjælker viser, hvor længe en deltager er optaget. Markér dem enten eksplicit med activate/deactivate, eller tilføj + og - til pilene, hvilket er kortere og sværere at bringe ud af balance.

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

Loops, betingelser og parallelt arbejde

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 — gentagelse.
  • alt <label> … else <label> … end — gensidigt udelukkende grene.
  • opt <label> … end — en gren, der måske slet ikke sker.
  • par <label> … and <label> … end — ting, der sker samtidig.
  • critical / break — et afsnit, der ikke må afbrydes, og en tidlig exit.

Noter

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ænder over to deltagere og er det rette sted for en betingelse, der hører til interaktionen snarere end til den ene eller anden side af den.

Et fuldt eksempel

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-login, fra ende til anden.

Redigér dette diagram

Indsæt det i kode-fanen, og ret en linje — forhåndsvisningen gentegnes, mens du skriver.

Ofte spurgt

Hvordan nummererer jeg beskederne?

Sæt autonumber på linjen lige efter sequenceDiagram. Hver besked får så et fortløbende nummer, hvilket gør et diagram meget nemmere at tale om i review-kommentarer.

Kan en deltager sende en besked til sig selv?

Ja — skriv samme navn på begge sider: API->>API: retry. Mermaid tegner løkken tilbage ind i samme lifeline.

Hvordan viser jeg, at en deltager ophører?

Brug destroy <name> før den besked, der afslutter den, eller create participant <name> for at få den til at dukke op midt i diagrammet frem for øverst.

Kan jeg redigere et sequence-diagram på det visuelle lærred?

Det visuelle lærred redigerer flowcharts. Sequence-diagrammer skrives på kode-fanen, hvor de gengives live i forhåndsvisningen — hvilket som regel er hurtigere alligevel, siden et sequence-diagram grundlæggende er en liste af linjer.

Flere guides

  1. Mermaid syntaks cheat sheet

    Node-former, pile, subgrafer og styling på én side — plus et kørende eksempel på hver diagramtype, mermaid gengiver.

Åbn editoren. Gratis — ingen tilmelding.

Et tomt lærred, en kode-fane og alle eksportmuligheder — gratis, i din browser, lige nu.