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 CreatedMää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
| Syntaksi | Merkitys |
|---|---|
A->>B: text | Pyyntö — yhtenäinen viiva, täytetty nuolenpää |
A-->>B: text | Vastaus — katkoviiva, täytetty nuolenpää |
A->B: text | Yhtenäinen viiva, avoin nuolenpää |
A-)B: text | Asynkroninen viesti — avoin nuolenpää, ei odoteta vastausta |
A-xB: text | Viesti 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 OKKä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: receiptSilmukat, 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
endloop <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 daysNote 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 inMuokkaa 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ä.