Sekvenční diagram
Mermaid umí vykreslit sekvenční diagram. Sekvenční diagram je typ interakčního diagramu, který ukazuje, jak jednotlivé procesy vzájemně spolupracují a v jakém pořadí.
Kopírovat
Vložení
sequenceDiagram
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
Alice-)John: See you later!
Poznámka k uzlům: kvůli způsobu zápisu jazyka Mermaid slovo "end" naruší celý graf. Pokud musíte použít "end", je třeba slovo "end" obalit kulatými závorkami (), dvojitými uvozovkami "", složenými závorkami {} nebo hranatými závorkami [], tj.: (end), [end], {end}.
Syntaxe
Účastník
Účastníci se zobrazují v pořadí, v jakém se objevují ve zdrojovém textu diagramu. Někdy může být žádoucí zobrazit účastníky v jiném pořadí, než v jakém se objevují v první zprávě; pořadí vystoupení účastníků lze určit následujícím způsobem:
Kopírovat
Vložení
sequenceDiagram
participant Alice
participant Bob
Bob->>Alice: Hi Alice
Alice->>Bob: Hi Bob
角色
Pokud chcete místo obdélníku s textem použít symbol role, můžete to provést pomocí příkazu role, jak je znázorněno níže.
Kopírovat
Vložení
sequenceDiagram
actor Alice
actor Bob
Alice->>Bob: Hi Bob
Bob->>Alice: Hi Alice
Alias
Alias můžete definovat pomocí as za deklarací účastníka
Kopírovat
Vložení
sequenceDiagram
participant A as Alice
participant J as John
A->>J: Hello John, how are you?
J->>A: Great!
Vytváření a rušení účastníků
Účastníky lze vytvářet a rušit prostřednictvím zpráv. Proto před zprávu přidejte příkaz pro vytvoření nebo zrušení.
Kopírovat
Vložení
participant B
A --> B: Hello
Při vytváření příkazu je podporováno rozlišení účastníka a aliasu. Odesílatel nebo příjemce zprávy může být zrušen, ale příjemce lze pouze vytvořit.
Kopírovat
Vložení
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
Seskupení/rámeček
Účastníci mohou být seskupeni ve vertikálních rámečcích. Barvu můžete definovat pomocí symbolu (pokud není definována, bude průhledná).
Kopírovat
Vložení
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
Pokud je název vaší skupiny barevný, můžete tuto barvu vynutit jako průhlednou:
Kopírovat
Vložení
box transparent Aqua
... actors ...
end
Kopírovat
Vložení
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?
Zpráva
Zprávy mohou být zobrazeny plnou nebo přerušovanou čarou.
Čáry mohou být plné nebo přerušované a mohou končit různými typy šipek, křížků nebo otevřených šipek.
Kopírovat
Vložení
[Actor][Arrow][Actor]:Message text
Deset standardních typů šipek
| Typ | Popis |
|---|---|
| -> | Plná čára bez šipky |
| --> | Přerušovaná čára bez šipky |
| ->> | Plná čára se šipkou |
| -->> | Přerušovaná čára se šipkou |
| <<->> | Plná čára s obousměrnou šipkou |
| <<-->> | Přerušovaná čára s obousměrnou šipkou |
| -x | Plná čára s křížkem na konci |
| --x | Přerušovaná čára s křížkem na konci |
| -) | Plná čára s otevřenou šipkou na konci (asynchronní) |
| --) | Přerušovaná čára s otevřenou šipkou na konci (asynchronní) |
Aktivace
Roli lze aktivovat a deaktivovat; deaktivace nebo aktivace může být samostatná deklarace:
Kopírovat
Vložení
sequenceDiagram
Alice->>Bob: Hello Bob, how are you?
activate Alice
Bob->>Alice: Hi Alice!
deactivate Alice
Existuje také zkrácený zápis, kdy se za šipku zprávy přidá + nebo -.
Kopírovat
Vložení
sequenceDiagram
Alice->>+John: Hello John, how are you?
John-->>-Alice: Great!
Aktivace stejné role se mohou sčítat:
Kopírovat
Vložení
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!
Komentář
Do sekvenčního diagramu lze přidávat komentáře. Lze toho dosáhnout pomocí následujících symbolů: Note[right of] nebo [left of] nebo [over][účastník]: obsah komentáře
Kopírovat
Vložení
sequenceDiagram
participant John
Note right of John: Text in note
Lze také vytvořit komentáře zahrnující dva účastníky:
Kopírovat
Vložení
sequenceDiagram
Alice->John: Hello John, how are you?
Note over Alice,John: A typical interaction
Znak nového řádku
Do komentářů a zpráv lze přidat znaky nového řádku:
Kopírovat
Vložení
sequenceDiagram
Alice->John: Hello John,<br/>how are you?
Note over Alice,John: A typical interaction<br/>But now in two lines
Znaky nového řádku v názvu role vyžadují definici aliasu:
Kopírovat
Vložení
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
Smyčka
V sekvenčním diagramu lze smyčku vyjádřit pomocí následujících symbolů.
Kopírovat
Vložení
loop Loop text
... statements ...
end
Viz příklad níže:
Kopírovat
Vložení
sequenceDiagram
Alice->John: Hello John, how are you?
loop Every minute
John-->Alice: Great!
end
Alternativa
V sekvenčním diagramu lze alternativní cestu vyjádřit pomocí symbolů.
Kopírovat
Vložení
alt Describing text...
statements
else
statements
end
或者如果存在可选序列:
Kopírovat
Vložení
opt Describing text...
statements
end
Viz příklad níže:
Kopírovat
Vložení
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
Paralelně
Paralelně probíhající akce lze znázornit následujícími symboly.
Kopírovat
Vložení
par Action 1
statements
and Action 2
statements
and Action N
statements
end
Viz příklad níže:
Kopírovat
Vložení
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!
Paralelní bloky lze také vnořovat.
Kopírovat
Vložení
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
Kritická sekce
Podmíněným zpracováním různých situací lze zobrazit operace, které musí být provedeny automaticky.
To se provádí pomocí následujících symbolů:
Kopírovat
Vložení
critical [Action that must be performed]
... statements ...
option [Circumstance A]
... statements ...
option [Circumstance B]
... statements ...
end
Viz příklad níže:
Kopírovat
Vložení
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
Je také možné, že neexistuje žádná volba.
Kopírovat
Vložení
critical Establish a connection to the DB
Service-->DB: connect
end
Tento kritický blok lze také vnořovat, což odpovídá příkazu par uvedenému výše.
Přerušení
V procesu lze označit zastavení sekvence, což se obvykle používá k modelování výjimečných situací.
To se provádí pomocí následujících symbolů:
Kopírovat
Vložení
break [something happened]
... statements ...
end
Viz příklad níže:
Kopírovat
Vložení
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
Zvýraznění pozadí
Pro zvýraznění procesu lze nastavit barevný obdélník pozadí, což se provádí pomocí následujících symbolů:
Kopírovat
Vložení
rect COLOR
... content ...
end
Barvy se definují pomocí syntaxe rgb a rgba.
Kopírovat
Vložení
rect rgb(0, 255, 0)
... content ...
end
Kopírovat
Vložení
rect rgba(0, 0, 255, .1)
... content ...
end
Viz příklad níže:
Kopírovat
Vložení
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.
Komentář
Do sekvenčního diagramu můžete vkládat komentáře, které editor ignoruje. Komentář musí zabírat samostatný řádek a musí začínat dvěma znaky procenta %%. Veškerý text od začátku komentáře do dalšího znaku nového řádku je považován za komentář, včetně jakékoli syntaxe diagramu.
Kopírovat
Vložení
sequenceDiagram
Alice->>John: Hello John, how are you?
%% this is a comment
John-->>Alice: Great!
Entitové kódování pro escapování znaků
Znaky lze escapovat pomocí následující syntaxe.
Kopírovat
Vložení
sequenceDiagram
A->>B: I #9829; you!
B->>A: I #9829; you #infin; times more!
Uvedená čísla jsou desítková, takže (#) lze zakódovat jako (#35;). Podporováno je také použití názvů znaků HTML.
Protože středník může nahradit znak nového řádku při definici značky, musíte při výskytu středníku v textu zprávy použít (#59;).
Číslování
Ke každé šipce v sekvenčním diagramu lze připojit pořadové číslo. Jak je znázorněno níže:
Kopírovat
Vložení
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!
Nabídka účastníka
Účastníci mohou obsahovat vyskakovací nabídky se seznamem přizpůsobených odkazů na externí stránky. Pokud například role představuje webovou službu, užitečné odkazy mohou zahrnovat odkaz na řídicí panel stavu služby, úložiště obsahující kód služby nebo odkaz na wiki stránku popisující službu.
Lze nakonfigurovat přidáním jednoho nebo více řádků odkazů v následujícím formátu:
Kopírovat
Vložení
link <actor>: <link-label> @ <link-url>
Kopírovat
Vložení
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!
Pokročilá syntaxe nabídky
Existuje pokročilá syntaxe založená na formátu JSON. Pokud formát JSON dobře ovládáte, můžete ji také použít.
Lze nakonfigurovat přidáním řádků odkazů v následujícím formátu:
Kopírovat
Vložení
links <actor>: <json-formatted link-name link-url pairs>
示例如下:
Kopírovat
Vložení
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!