Sekų diagrama
Mermaid gali atvaizduoti sekos diagramą. Sekos diagrama – tai sąveikos diagrama, rodanti, kaip atskiri procesai veikia vienas kitą ir kokia jų operacijų tvarka.
Kopijuoti
Įterpti
sequenceDiagram
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
Alice-)John: See you later!
Pastaba apie mazgus: dėl to, kaip parašyta Mermaid kalba, žodis "end" sugadina visą diagramą. Jei būtina naudoti „end“, žodį „end“ reikia apgaubti paprastais skliaustais (), dvigubomis kabutėmis "", riestiniais skliaustais {} arba laužtiniais skliaustais [], t. y.: (end), [end], {end}.
Sintaksė
Dalyvis
Dalyviai rodomi tokia tvarka, kokia pasirodo diagramos šaltinio tekste. Kartais galite norėti, kad dalyviai būtų rodomi kita tvarka, nei jie pasirodo pirmojoje žinutėje; dalyvių pasirodymo tvarką galima nurodyti šiais būdais:
Kopijuoti
Įterpti
sequenceDiagram
participant Alice
participant Bob
Bob->>Alice: Hi Alice
Alice->>Bob: Hi Bob
角色
Jei norite naudoti veikėjo simbolį, o ne stačiakampį su tekstu, tai galima padaryti naudojant veikėjo sakinį, kaip parodyta žemiau.
Kopijuoti
Įterpti
sequenceDiagram
actor Alice
actor Bob
Alice->>Bob: Hi Bob
Bob->>Alice: Hi Alice
Aliasas
Po dalyvio deklaracijos galite naudoti as, kad apibrėžtumėte aliasą
Kopijuoti
Įterpti
sequenceDiagram
participant A as Alice
participant J as John
A->>J: Hello John, how are you?
J->>A: Great!
Dalyvių kūrimas ir naikinimas
Dalyvius galima kurti ir naikinti per pranešimus. Todėl prieš pranešimą pridėkite kūrimo arba naikinimo komandą.
Kopijuoti
Įterpti
participant B
A --> B: Hello
Kūrimo komandos atveju palaikomas dalyvio ir aliaso atskyrimas. Pranešimo siuntėjas arba gavėjas gali būti sunaikintas, tačiau gavėjas gali būti tik sukurtas.
Kopijuoti
Įterpti
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
Grupė / laukas
Dalyviai gali būti sugrupuoti vertikaliame lauke. Spalvą galite apibrėžti naudodami simbolį (jei neapibrėžta, ji bus permatoma).
Kopijuoti
Įterpti
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
Jei jūsų grupės pavadinimas yra spalvotas, tą spalvą galite priverstinai nustatyti permatomą:
Kopijuoti
Įterpti
box transparent Aqua
... actors ...
end
Kopijuoti
Įterpti
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?
Pranešimas
Pranešimas gali būti rodomas ištisine arba brūkšnine linija.
Linija gali būti ištisinė arba brūkšninė ir gali baigtis įvairių tipų rodyklėmis, kryžiumi arba atvira rodykle.
Kopijuoti
Įterpti
[Actor][Arrow][Actor]:Message text
Dešimt standartinių rodyklių tipų
| Tipas | Aprašymas |
|---|---|
| -> | Ištisinė linija be rodyklės |
| --> | Brūkšninė linija be rodyklės |
| ->> | Ištisinė linija su rodykle |
| -->> | Brūkšninė linija su rodykle |
| <<->> | Ištisinė linija su dvipuse rodykle |
| <<-->> | Brūkšninė linija su dvipuse rodykle |
| -x | Ištisinė linija su kryžiumi gale |
| --x | Brūkšninė linija su kryžiumi gale |
| -) | Ištisinė linija su tuščiavidure rodykle gale (asinchroninė) |
| --) | Brūkšninė linija su tuščiavidure rodykle gale (asinchroninė) |
Aktyvavimas
Galima aktyvuoti ir deaktyvuoti veikėją; deaktyvavimas arba aktyvavimas gali būti atskira deklaracija:
Kopijuoti
Įterpti
sequenceDiagram
Alice->>Bob: Hello Bob, how are you?
activate Alice
Bob->>Alice: Hi Alice!
deactivate Alice
Yra ir trumpasis žymėjimas – prie pranešimo rodyklės pridėti + arba -.
Kopijuoti
Įterpti
sequenceDiagram
Alice->>+John: Hello John, how are you?
John-->>-Alice: Great!
To paties veikėjo aktyvavimai gali būti kaupiami:
Kopijuoti
Įterpti
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!
Komentaras
Į sekos diagramą galima pridėti komentarų. Tai daroma naudojant šiuos simbolius: Note[right of] arba [left of] arba [over][dalyvis]: komentaro turinys
Kopijuoti
Įterpti
sequenceDiagram
participant John
Note right of John: Text in note
Taip pat galima sukurti komentarą, apimantį du dalyvius:
Kopijuoti
Įterpti
sequenceDiagram
Alice->John: Hello John, how are you?
Note over Alice,John: A typical interaction
Eilutės lūžio simbolis
Komentaruose ir pranešimuose galima pridėti eilutės lūžio simbolį:
Kopijuoti
Įterpti
sequenceDiagram
Alice->John: Hello John,<br/>how are you?
Note over Alice,John: A typical interaction<br/>But now in two lines
Eilutės lūžio simboliui veikėjo pavadinime reikia apibrėžti aliasą:
Kopijuoti
Įterpti
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
Ciklas
Sekos diagramoje ciklą galima išreikšti šiais simboliais.
Kopijuoti
Įterpti
loop Loop text
... statements ...
end
Žr. pavyzdį žemiau:
Kopijuoti
Įterpti
sequenceDiagram
Alice->John: Hello John, how are you?
loop Every minute
John-->Alice: Great!
end
Alternatyva
Sekos diagramoje alternatyvų kelią galima išreikšti simboliu.
Kopijuoti
Įterpti
alt Describing text...
statements
else
statements
end
或者如果存在可选序列:
Kopijuoti
Įterpti
opt Describing text...
statements
end
Žr. pavyzdį žemiau:
Kopijuoti
Įterpti
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
Lygiagretumas
Lygiagrečiai vykstančius veiksmus galima pavaizduoti šiais simboliais.
Kopijuoti
Įterpti
par Action 1
statements
and Action 2
statements
and Action N
statements
end
Žr. pavyzdį žemiau:
Kopijuoti
Įterpti
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!
Taip pat galima įdėti lygiagrečius blokus vieną į kitą.
Kopijuoti
Įterpti
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
Kritinė sritis
Galima parodyti operacijas, kurios turi būti atliekamos automatiškai, įvairias situacijas aprašant sąlyginai.
Tai atliekama šiais simboliais:
Kopijuoti
Įterpti
critical [Action that must be performed]
... statements ...
option [Circumstance A]
... statements ...
option [Circumstance B]
... statements ...
end
Žr. pavyzdį žemiau:
Kopijuoti
Įterpti
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
Taip pat gali būti visai be parinkčių.
Kopijuoti
Įterpti
critical Establish a connection to the DB
Service-->DB: connect
end
Šis kritinis blokas taip pat gali būti įdėtas į kitą, atitinkantį aukščiau matytą par sakinį.
Nutraukimas
Galima nurodyti sekos sustabdymą procese; paprastai naudojama išimtinėms situacijoms modeliuoti.
Tai atliekama šiais simboliais:
Kopijuoti
Įterpti
break [something happened]
... statements ...
end
Žr. pavyzdį žemiau:
Kopijuoti
Įterpti
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
Fono paryškinimas
Galima nustatyti spalvotą fono stačiakampį procesui paryškinti; tai atliekama šiais simboliais:
Kopijuoti
Įterpti
rect COLOR
... content ...
end
Spalvos apibrėžiamos naudojant rgb ir rgba sintaksę.
Kopijuoti
Įterpti
rect rgb(0, 255, 0)
... content ...
end
Kopijuoti
Įterpti
rect rgba(0, 0, 255, .1)
... content ...
end
Žr. pavyzdį žemiau:
Kopijuoti
Įterpti
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.
Komentaras
Sekos diagramoje galima įrašyti komentarus, redaktorius juos ignoruos. Komentaras turi užimti atskirą eilutę ir prasidėti dvigubu procento ženklu %%. Bet koks tekstas nuo komentaro pradžios iki kito eilutės lūžio laikomas komentaru, įskaitant bet kokią diagramos sintaksę.
Kopijuoti
Įterpti
sequenceDiagram
Alice->>John: Hello John, how are you?
%% this is a comment
John-->>Alice: Great!
Simbolių escape'inimui skirtas entity kodavimas
Simbolius galima escape'inti naudojant šią sintaksę.
Kopijuoti
Įterpti
sequenceDiagram
A->>B: I #9829; you!
B->>A: I #9829; you #infin; times more!
Pateikti skaičiai yra dešimtainiai, todėl (#) gali būti koduojamas kaip (#35;); taip pat palaikomi HTML simbolių pavadinimai.
Kadangi kabliataškis gali pakeisti eilutės lūžio simbolį žymėms apibrėžti, įtraukę kabliataškį į pranešimo tekstą turite naudoti (#59;).
Numeravimas
Prie kiekvienos sekos diagramos rodyklės galima pridėti eilės numerį. Kaip parodyta žemiau:
Kopijuoti
Įterpti
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!
Dalyvio meniu
Dalyviai gali turėti iššokantįjį meniu su suasmenintomis nuorodomis į išorinius puslapius. Pavyzdžiui, jei veikėjas atstovauja tinklo paslaugą, naudingos nuorodos gali apimti nuorodą į paslaugos būsenos skydelį, saugyklą su paslaugos kodu arba nuorodą į viki puslapį, aprašantį paslaugą.
Galima konfigūruoti pridėjus vieną ar daugiau nuorodų eilučių, kurių formatas:
Kopijuoti
Įterpti
link <actor>: <link-label> @ <link-url>
Kopijuoti
Įterpti
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!
Išplėstinė meniu sintaksė
Yra išplėstinė sintaksė, pagrįsta JSON formatu. Jei gerai mokate JSON formatą, galite naudoti ir ją.
Galima konfigūruoti pridedant šio formato nuorodų eilutes:
Kopijuoti
Įterpti
links <actor>: <json-formatted link-name link-url pairs>
示例如下:
Kopijuoti
Įterpti
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!