Sekvenčni diagram
Mermaid lahko upodobi sekvenčni diagram. Sekvenčni diagram je vrsta interakcijskega diagrama, ki prikazuje, kako procesi medsebojno delujejo in v kakšnem vrstnem redu potekajo operacije.
Kopiraj
Vdelava
sequenceDiagram
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
Alice-)John: See you later!
Opomba o vozliščih: zaradi načina pisanja jezika Mermaid beseda "end" pokvari celoten graf. Če morate uporabiti "end", morate besedo "end" oviti z oklepaji (), dvojnimi narekovaji "", zavitimi oklepaji {} ali oglatimi oklepaji [], in sicer: (end), [end], {end}.
Sintaksa
Udeleženec
Udeleženci so prikazani v vrstnem redu, v katerem se pojavijo v izvornem besedilu diagrama. Včasih jih želite prikazati v drugačnem vrstnem redu, kot se pojavijo v prvem sporočilu; vrstni red prikaza udeležencev lahko določite na naslednji način:
Kopiraj
Vdelava
sequenceDiagram
participant Alice
participant Bob
Bob->>Alice: Hi Alice
Alice->>Bob: Hi Bob
角色
Če želite uporabiti simbol vloge namesto pravokotnika z besedilom, to lahko storite s stavkom za vlogo, kot je prikazano spodaj.
Kopiraj
Vdelava
sequenceDiagram
actor Alice
actor Bob
Alice->>Bob: Hi Bob
Bob->>Alice: Hi Alice
Vzdevek
Za deklaracijo udeleženca lahko z as definirate vzdevek
Kopiraj
Vdelava
sequenceDiagram
participant A as Alice
participant J as John
A->>J: Hello John, how are you?
J->>A: Great!
Ustvarjanje in uničenje udeležencev
Udeležence je mogoče ustvariti in uničiti prek sporočil. Zato pred sporočilo dodajte ukaz za ustvarjanje ali uničenje.
Kopiraj
Vdelava
participant B
A --> B: Hello
Ukaz za ustvarjanje podpira razlikovanje med udeležencem in vzdevkom. Pošiljatelja ali prejemnika sporočila je mogoče uničiti, prejemnika pa je mogoče le ustvariti.
Kopiraj
Vdelava
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
Združevanje/polje
Udeležence je mogoče združiti v navpična polja. Barvo lahko določite s simbolom (če ni definirana, bo prosojna).
Kopiraj
Vdelava
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
Če je ime vaše skupine obarvano, lahko to barvo vsilite kot prosojno:
Kopiraj
Vdelava
box transparent Aqua
... actors ...
end
Kopiraj
Vdelava
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?
Sporočilo
Sporočila so lahko prikazana s polno ali črtkano črto.
Črte so lahko polne ali črtkane in se lahko končajo z različnimi vrstami puščic, križev ali odprtih puščic.
Kopiraj
Vdelava
[Actor][Arrow][Actor]:Message text
Deset standardnih vrst puščic
| Vrsta | Opis |
|---|---|
| -> | Polna črta brez puščice |
| --> | Črtkana črta brez puščice |
| ->> | Polna črta s puščico |
| -->> | Črtkana črta s puščico |
| <<->> | Polna črta z dvosmerno puščico |
| <<-->> | Črtkana črta z dvosmerno puščico |
| -x | Polna črta s križem na koncu |
| --x | Črtkana črta s križem na koncu |
| -) | Polna črta s prazno puščico na koncu (asinhrono) |
| --) | Črtkana črta s prazno puščico na koncu (asinhrono) |
Aktivacija
Vlogo je mogoče aktivirati in deaktivirati; deaktivacija ali aktivacija je lahko namenska deklaracija:
Kopiraj
Vdelava
sequenceDiagram
Alice->>Bob: Hello Bob, how are you?
activate Alice
Bob->>Alice: Hi Alice!
deactivate Alice
Obstaja tudi hitra notacija, in sicer z dodajanjem + ali - za puščico sporočila.
Kopiraj
Vdelava
sequenceDiagram
Alice->>+John: Hello John, how are you?
John-->>-Alice: Great!
Aktivacije iste vloge se lahko nalagajo:
Kopiraj
Vdelava
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!
Komentar
V sekvenčni diagram lahko dodate komentarje. To je mogoče storiti z naslednjimi simboli: Note[right of] ali [left of] ali [over][udeleženec]: vsebina komentarja
Kopiraj
Vdelava
sequenceDiagram
participant John
Note right of John: Text in note
Ustvarite lahko tudi komentar, ki zajema dva udeleženca:
Kopiraj
Vdelava
sequenceDiagram
Alice->John: Hello John, how are you?
Note over Alice,John: A typical interaction
Znak za novo vrstico
V komentarje in sporočila lahko dodate znake za novo vrstico:
Kopiraj
Vdelava
sequenceDiagram
Alice->John: Hello John,<br/>how are you?
Note over Alice,John: A typical interaction<br/>But now in two lines
Znaki za novo vrstico v imenu vloge zahtevajo definiran vzdevek:
Kopiraj
Vdelava
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
Zanka
V sekvenčnem diagramu je zanko mogoče izraziti z naslednjimi simboli.
Kopiraj
Vdelava
loop Loop text
... statements ...
end
Glejte spodnji primer:
Kopiraj
Vdelava
sequenceDiagram
Alice->John: Hello John, how are you?
loop Every minute
John-->Alice: Great!
end
Alternativa
V sekvenčnem diagramu je alternativno pot mogoče izraziti s simboli.
Kopiraj
Vdelava
alt Describing text...
statements
else
statements
end
或者如果存在可选序列:
Kopiraj
Vdelava
opt Describing text...
statements
end
Glejte spodnji primer:
Kopiraj
Vdelava
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
Vzporedno
Dejanja, ki se zgodijo vzporedno, je mogoče predstaviti z naslednjimi simboli.
Kopiraj
Vdelava
par Action 1
statements
and Action 2
statements
and Action N
statements
end
Glejte spodnji primer:
Kopiraj
Vdelava
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!
Vzporedne bloke je mogoče tudi gnezditi.
Kopiraj
Vdelava
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
Kritični odsek
Operacije, ki se morajo izvesti samodejno, je mogoče prikazati s pogojno obravnavo različnih primerov.
To se izvede z naslednjimi simboli:
Kopiraj
Vdelava
critical [Action that must be performed]
... statements ...
option [Circumstance A]
... statements ...
option [Circumstance B]
... statements ...
end
Glejte spodnji primer:
Kopiraj
Vdelava
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
Možno je tudi, da ni nobene možnosti.
Kopiraj
Vdelava
critical Establish a connection to the DB
Service-->DB: connect
end
Ta kritični blok je mogoče tudi gnezditi, kar ustreza stavku par, ki smo ga videli zgoraj.
Prekinitev
V procesu lahko označite ustavitev zaporedja, kar se običajno uporablja za modeliranje izjemnih primerov.
To se izvede z naslednjimi simboli:
Kopiraj
Vdelava
break [something happened]
... statements ...
end
Glejte spodnji primer:
Kopiraj
Vdelava
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
Označevanje ozadja
Za označevanje procesa lahko nastavite barvni pravokotnik ozadja, kar storite z naslednjimi simboli:
Kopiraj
Vdelava
rect COLOR
... content ...
end
Barve so definirane s sintakso rgb in rgba.
Kopiraj
Vdelava
rect rgb(0, 255, 0)
... content ...
end
Kopiraj
Vdelava
rect rgba(0, 0, 255, .1)
... content ...
end
Glejte spodnji primer:
Kopiraj
Vdelava
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.
Komentar
V sekvenčni diagram lahko vnesete komentarje, ki jih urejevalnik prezre. Komentar mora zavzemati celotno vrstico in se mora začeti z dvojnim odstotkom %%. Vsako besedilo od začetka komentarja do naslednjega znaka za novo vrstico se obravnava kot komentar, vključno s katero koli sintakso diagrama.
Kopiraj
Vdelava
sequenceDiagram
Alice->>John: Hello John, how are you?
%% this is a comment
John-->>Alice: Great!
Kodiranje entitet za ubežne znake
Znake lahko ubežite z naslednjo sintakso.
Kopiraj
Vdelava
sequenceDiagram
A->>B: I #9829; you!
B->>A: I #9829; you #infin; times more!
Navedena števila so decimalna, zato je (#) mogoče kodirati kot (#35;); podprta je tudi uporaba imen znakov HTML.
Ker lahko podpičje nadomesti znak za novo vrstico pri definiranju oznak, morate pri vključitvi podpičja v besedilo sporočila uporabiti (#59;).
Oštevilčenje
Vsaki puščici v sekvenčnem diagramu lahko dodate zaporedno številko. Kot je prikazano spodaj:
Kopiraj
Vdelava
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!
Meni udeleženca
Udeleženec lahko vsebuje pojavni meni s prilagojenimi povezavami do zunanjih strani. Na primer, če vloga predstavlja spletno storitev, lahko uporabne povezave vključujejo povezavo do nadzorne plošče stanja storitve, repozitorij s kodo te storitve ali povezavo do wiki strani, ki opisuje storitev.
Konfigurirate ga lahko z dodajanjem ene ali več vrstic s povezavami v naslednji obliki:
Kopiraj
Vdelava
link <actor>: <link-label> @ <link-url>
Kopiraj
Vdelava
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!
Napredna sintaksa menija
Obstaja napredna sintaksa, ki temelji na obliki JSON. Če dobro obvladate obliko JSON, jo lahko uporabite tudi.
Konfigurirate ga lahko z dodajanjem vrstic s povezavami v naslednji obliki:
Kopiraj
Vdelava
links <actor>: <json-formatted link-name link-url pairs>
示例如下:
Kopiraj
Vdelava
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!