Miten kirjoitat mermaid-sekvenssikaavion

Sekvenssikaavio näyttää kuka puhuu kenelle, missä järjestyksessä. Mermaidilla sen kirjoittaminen kestää suunnilleen yhtä kauan kuin sen kuvaileminen ääneen, minkä vuoksi se on kaaviotyyppi joka säilyy pisimpään koodikannassa. Kaikki alla on valmiina kopioitavaksi editoriin.

Vähimmäismäärä

Määrittele kaaviotyyppi ja kirjoita sitten yksi rivi per viesti. Osallistujat luodaan ensimmäisellä maininnalla, siinä järjestyksessä kuin he esiintyvät.

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

Määrittele osallistujat eksplisiittisesti participant User-rivillä, kun haluat tietyn vasemmalta-oikealle-järjestyksen sen sijaan että käytettäisiin ensimmäisen maininnan järjestystä.

Nuolityypit

SyntaksiMerkitys
A->>B: textPyyntö — yhtenäinen viiva, täytetty nuolenpää
A-->>B: textVastaus — katkoviiva, täytetty nuolenpää
A->B: textYhtenäinen viiva, avoin nuolenpää
A-)B: textAsynkroninen viesti — avoin nuolenpää, ei odoteta vastausta
A-xB: textViesti joka epäonnistuu tai häviää

Tämä käytäntö kannattaa säilyttää: yhtenäinen viiva kutsulle, katkoviiva paluulle. Lukija näkee tällöin pyynnön vastauksesta lukematta yhtäkään selitettä.

Osallistujat ja aliakset

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

Käytä actor U as Browser-merkintää participant-merkinnän sijaan piirtääksesi tikku-ukon — kannattaa autentikointivuon vasemmassa reunassa olevalle ihmiselle.

Aktivointipalkit

Aktivointipalkit näyttävät miten kauan osallistuja on varattu. Merkitse ne joko eksplisiittisesti activate/deactivate-komennoilla, tai lisää nuoliin + ja - — se on lyhyempi ja vaikeampi saada epätasapainoon.

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

Silmukat, ehdot ja rinnakkainen työ

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 — toisto.
  • alt <label> … else <label> … end — toisensa poissulkevat haarat.
  • opt <label> … end — haara joka ei ehkä yksinkertaisesti tapahdu.
  • par <label> … and <label> … end — asioita jotka tapahtuvat samaan aikaan.
  • critical / break — osio jota ei saa keskeyttää, ja varhainen poistuminen.

Huomautukset

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 kattaa kaksi osallistujaa ja on oikea paikka rajoitukselle joka kuuluu itse vuorovaikutukselle eikä kummallekaan osapuolelle erikseen.

Täysi esimerkki

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-kirjautuminen, alusta loppuun.

Muokkaa tätä kaaviota

Liitä se koodivälilehteen ja muuta yhtä riviä — esikatselu piirtyy uudelleen kirjoittaessasi.

Usein kysyttyä

Miten numeroin viestit?

Laita autonumber riville heti sequenceDiagram-rivin jälkeen. Jokainen viesti saa tällöin juoksevan numeron, mikä helpottaa huomattavasti kaaviosta puhumista katselmointikommenteissa.

Voiko osallistuja lähettää viestin itselleen?

Kyllä — kirjoita sama nimi molemmille puolille: API->>API: retry. Mermaid piirtää silmukan takaisin samalle elinviivalle.

Miten näytän, että osallistuja tuhoutuu?

Käytä destroy <name> ennen viestiä joka lopettaa sen, tai create participant <name> saadaksesi sen ilmestymään kesken kaavion sen sijaan että se olisi ylälaidassa.

Voinko muokata sekvenssikaaviota visuaalisella kanvaksella?

Visuaalinen kanvas muokkaa vuokaavioita. Sekvenssikaaviot kirjoitetaan koodivälilehdellä, jossa ne piirtyvät reaaliajassa esikatseluun — mikä on yleensä nopeampaakin, koska sekvenssikaavio on pohjimmiltaan luettelo riveistä.

Lisää oppaita

  1. Vie mermaid PNG- tai SVG-muotoon

    Neljä tapaa viedä mermaid-kaavio ulos — PNG, SVG, .mmd-lähdekoodi ja Markdown-lohko — ja milloin kukin on oikea valinta.

  2. Mermaid-syntaksin pikaopas

    Solmujen muodot, nuolet, alikaaviot ja tyylittely yhdellä sivulla — sekä toimiva esimerkki jokaisesta kaaviotyypistä jonka mermaid piirtää.

Avaa editori. Ilmainen — ilman rekisteröitymistä.

Tyhjä kanvas, koodivälilehti ja jokainen vientivaihtoehto – ilmaiseksi, selaimessasi, juuri nyt.