Sekvensdiagram
Mermaid kan rendere sekvensdiagrammer. Et sekvensdiagram er en interaktionsdiagramtype, der viser, hvordan processer interagerer med hinanden, og i hvilken rækkefølge.
Kopiér
Integrer
sequenceDiagram
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
Alice-)John: See you later!
Bemærkning om knuder: På grund af måden Mermaidsproget er bygget op på, ødelægger ordet "end" hele grafen. Hvis du er nødt til at bruge "end", skal du omslutte ordet "end" med runde parenteser (), dobbelte anførselstegn "", klammer {} eller kantede parenteser [], dvs.: (end), [end], {end}.
Syntaks
Deltager
Deltagere vises i den rækkefølge, de optræder i diagrammets kildetekst. Nogle gange vil du måske vise deltagerne i en anden rækkefølge end den, de optræder i den første besked; du kan angive deltagernes rækkefølge på følgende måde:
Kopiér
Integrer
sequenceDiagram
participant Alice
participant Bob
Bob->>Alice: Hi Alice
Alice->>Bob: Hi Bob
角色
Hvis du vil bruge aktørsymbolet i stedet for et rektangel med tekst, kan du gøre det med et aktørudsagn, som vist nedenfor.
Kopiér
Integrer
sequenceDiagram
actor Alice
actor Bob
Alice->>Bob: Hi Bob
Bob->>Alice: Hi Alice
Alias
Du kan bruge as efter deltagerdeklarationen til at definere et alias
Kopiér
Integrer
sequenceDiagram
participant A as Alice
participant J as John
A->>J: Hello John, how are you?
J->>A: Great!
Oprettelse og destruktion af deltagere
Deltagere kan oprettes og destrueres via beskeder. Tilføj derfor en oprette- eller destrueringsinstruktion før beskeden.
Kopiér
Integrer
participant B
A --> B: Hello
Ved oprettelsesinstruktioner understøttes forskel mellem deltagere og aliaser. Afsenderen eller modtageren af en besked kan destrueres, men modtageren kan kun oprettes.
Kopiér
Integrer
sequenceDiagram
Alice->>Bob: Hello Bob, how are you ?
Bob->>Alice: Fine, thank you. And you?
create participant Carl
Alice->>Carl: Hi Carl!
create actor D as Donald
Carl->>D: Hi!
destroy Carl
Alice-xCarl: We are too many
destroy Bob
Bob->>Alice: I agree
Gruppering/boks
Deltagere kan grupperes i en lodret boks. Du kan definere farven med et symbol (hvis den ikke er defineret, vil den være gennemsigtig).
Kopiér
Integrer
box Aqua Group Description
... actors ...
end
box Group without description
... actors ...
end
box rgb(33,66,99)
... actors ...
end
box rgba(33,66,99,0.5)
... actors ...
end
Hvis dit gruppenavn er farvet, kan du tvinge farven til at være gennemsigtig:
Kopiér
Integrer
box transparent Aqua
... actors ...
end
Kopiér
Integrer
sequenceDiagram
box Orange Alice & John
participant A
participant J
end
box Another Group
participant B
participant C
end
A->>J: Hello John, how are you?
J->>A: Great!
A->>B: Hello Bob, how is Charley?
B->>C: Hello Charley, how are you?
Besked
En besked kan vises som en fuldt optrukket linje eller en stiplet linje.
Linjer kan være fuldt optrukne eller stiplede og understøtter afslutning med forskellige typer pile, krydser eller åbne pile.
Kopiér
Integrer
[Actor][Arrow][Actor]:Message text
Ti standardpiltyper
| Type | Beskrivelse |
|---|---|
| -> | Fuldt optrukket linje uden pil |
| --> | Stiplet linje uden pil |
| ->> | Fuldt optrukket linje med pil |
| -->> | Stiplet linje med pil |
| <<->> | Fuldt optrukket linje med tovejs-pil |
| <<-->> | Stiplet linje med tovejs-pil |
| -x | Fuldt optrukket linje med kryds i enden |
| --x | Stiplet linje med kryds i enden |
| -) | Fuldt optrukket linje med åben pil i enden (asynkron) |
| --) | Stiplet linje med åben pil i enden (asynkron) |
Aktivering
Du kan aktivere og deaktivere en aktør; deaktivering eller aktivering kan være en dedikeret deklaration:
Kopiér
Integrer
sequenceDiagram
Alice->>Bob: Hello Bob, how are you?
activate Alice
Bob->>Alice: Hi Alice!
deactivate Alice
Der findes også en kort notation, hvor du tilføjer + eller - efter beskedens pil.
Kopiér
Integrer
sequenceDiagram
Alice->>+John: Hello John, how are you?
John-->>-Alice: Great!
Aktiveringer af den samme aktør kan stables:
Kopiér
Integrer
sequenceDiagram
Alice->>+John: Hello John, how are you?
Alice->>+John: John, can you hear me?
John-->>-Alice: Hi Alice, I can hear you!
John-->>-Alice: I feel great!
Kommentar
Du kan tilføje kommentarer til et sekvensdiagram. Dette kan gøres med følgende symboler: Note[right of] eller [left of] eller [over][deltager]: kommentarindhold
Kopiér
Integrer
sequenceDiagram
participant John
Note right of John: Text in note
Du kan også oprette kommentarer, der dækker to deltagere:
Kopiér
Integrer
sequenceDiagram
Alice->John: Hello John, how are you?
Note over Alice,John: A typical interaction
Linjeskift
Du kan tilføje linjeskift i kommentarer og beskeder:
Kopiér
Integrer
sequenceDiagram
Alice->John: Hello John,<br/>how are you?
Note over Alice,John: A typical interaction<br/>But now in two lines
Linjeskift i aktørnavne kræver, at der defineres et alias:
Kopiér
Integrer
sequenceDiagram
participant Alice as Alice<br/>Johnson
Alice->John: Hello John,<br/>how are you?
Note over Alice,John: A typical interaction<n/>But now in two lines
Løkke
I et sekvensdiagram kan en løkke udtrykkes med følgende symbol.
Kopiér
Integrer
loop Loop text
... statements ...
end
Se eksemplet nedenfor:
Kopiér
Integrer
sequenceDiagram
Alice->John: Hello John, how are you?
loop Every minute
John-->Alice: Great!
end
Alternativ
I et sekvensdiagram kan alternative forløb udtrykkes med et symbol.
Kopiér
Integrer
alt Describing text...
statements
else
statements
end
或者如果存在可选序列:
Kopiér
Integrer
opt Describing text...
statements
end
Se eksemplet nedenfor:
Kopiér
Integrer
sequenceDiagram
Alice->>Bob: Hello Bob, how are you?
alt is sick
Bob->>Alice: Not so good :(
else is well
Bob->>Alice: Feeling fresh like a daisy
end
opt Extra response
Bob->>Alice: Thanks for asking
end
Parallel
Handlinger, der foregår parallelt, kan vises med følgende symbol.
Kopiér
Integrer
par Action 1
statements
and Action 2
statements
and Action N
statements
end
Se eksemplet nedenfor:
Kopiér
Integrer
sequenceDiagram
par Alice to Bob
Alice->>Bob: Hello guys!
and Alice to John
Alice->>John: Hello guys!
end
Bob-->>Alice: Hi Alice!
John-->>Alice: Hi Alice!
Parallelle blokke kan også indlejres.
Kopiér
Integrer
sequenceDiagram
par Alice to Bob
Alice->>Bob: Go help John
and Alice to John
Alice->>John: I want this done today
par John to Charlie
John->>Charlie: Can we do this today?
and John to Diana
John->>Diana: Can you help us today?
end
end
Kritisk område
Du kan vise handlinger, der skal udføres automatisk, ved at gøre dem betingede af forskellige situationer.
Dette gøres med følgende symbol:
Kopiér
Integrer
critical [Action that must be performed]
... statements ...
option [Circumstance A]
... statements ...
option [Circumstance B]
... statements ...
end
Se eksemplet nedenfor:
Kopiér
Integrer
sequenceDiagram
critical Establish a connection to the DB
Service-->DB: connect
option Network timeout
Service-->Service: Log error
option Credentials rejected
Service-->Service: Log different error
end
Det er også muligt slet ikke at have nogen muligheder.
Kopiér
Integrer
critical Establish a connection to the DB
Service-->DB: connect
end
Denne kritiske blok kan også indlejres, svarende til par-udsagnet vist ovenfor.
Afbrydelse
Du kan angive, at en sekvens stopper i forløbet, hvilket typisk bruges til at modellere undtagelsessituationer.
Dette gøres med følgende symbol:
Kopiér
Integrer
break [something happened]
... statements ...
end
Se eksemplet nedenfor:
Kopiér
Integrer
sequenceDiagram
Consumer-->API: Book something
API-->BookingService: Start booking process
break when the booking process fails
API-->Consumer: show failure
end
API-->BillingService: Start billing process
Baggrundsfremhævning
Du kan angive et farvet baggrundsrektangel for at fremhæve et forløb; det gøres med følgende symbol:
Kopiér
Integrer
rect COLOR
... content ...
end
Farver defineres ved hjælp af rgb- og rgba-syntaks.
Kopiér
Integrer
rect rgb(0, 255, 0)
... content ...
end
Kopiér
Integrer
rect rgba(0, 0, 255, .1)
... content ...
end
Se eksemplet nedenfor:
Kopiér
Integrer
sequenceDiagram
participant Alice
participant John
rect rgb(191, 178, 255)
note right of Alice: Alice calls John.
Alice->>+John: Hello John, how are you?
rect rgb(142, 182, 89)
Alice->>+John: John, can you hear me?
John-->>-Alice: Hi Alice, I can hear you!
end
John-->>-Alice: I feel great!
end
Alice ->>+ John: Did you want to go to the game tonight?
John -->>- Alice: Yeah! See you there.
Kommentar
Du kan indsætte kommentarer i et sekvensdiagram, og editoren ignorerer dem. En kommentar skal stå på sin egen linje og skal begynde med dobbelt procenttegn %%. Al tekst fra kommentarens begyndelse til næste linjeskift betragtes som en kommentar, inklusive enhver diagramsyntaks.
Kopiér
Integrer
sequenceDiagram
Alice->>John: Hello John, how are you?
%% this is a comment
John-->>Alice: Great!
Entitetskodning til escape af tegn
Du kan escape tegn ved hjælp af følgende syntaks.
Kopiér
Integrer
sequenceDiagram
A->>B: I #9829; you!
B->>A: I #9829; you #infin; times more!
Det angivne tal er decimalt, så (#) kan kodes som (#35;); brug af HTML-tegnnavne understøttes også.
Da semikolon kan erstatte et linjeskift til at definere markeringer, skal du bruge (#59;), når du vil have et semikolon med i beskedteksten.
Nummerering
Du kan tilføje et sekvensnummer til hver pil i et sekvensdiagram. Som vist nedenfor:
Kopiér
Integrer
sequenceDiagram
autonumber
Alice->>John: Hello John, how are you?
loop HealthCheck
John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
Deltagermenu
Deltagere kan indeholde en pop op-menu med personlige link til eksterne sider. Hvis en aktør f.eks. repræsenterer en webtjeneste, kan nyttige link omfatte et link til tjenestens sundhedsdashboard, et repository med tjenestens kode eller et link til den wiki-side, der beskriver tjenesten.
Det kan konfigureres ved at tilføje en eller flere linklinjer i følgende format:
Kopiér
Integrer
link <actor>: <link-label> @ <link-url>
Kopiér
Integrer
sequenceDiagram
participant Alice
participant John
link Alice: Dashboard @ https://dashboard.contoso.com/alice
link Alice: Wiki @ https://wiki.contoso.com/alice
link John: Dashboard @ https://dashboard.contoso.com/john
link John: Wiki @ https://wiki.contoso.com/john
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
Alice-)John: See you later!
Avanceret menusyntaks
Der findes en avanceret syntaks, der er afhængig af JSON-formatet. Hvis du er fortrolig med JSON-formatet, kan denne også bruges.
Det kan konfigureres ved at tilføje en linklinje i følgende format:
Kopiér
Integrer
links <actor>: <json-formatted link-name link-url pairs>
示例如下:
Kopiér
Integrer
sequenceDiagram
participant Alice
participant John
links Alice: {"Dashboard": "https://dashboard.contoso.com/alice", "Wiki": "https://wiki.contoso.com/alice"}
links John: {"Dashboard": "https://dashboard.contoso.com/john", "Wiki": "https://wiki.contoso.com/john"}
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
Alice-)John: See you later!