Register
Process Type
Graphical expression
Mind Type
Structured expression
Note Type
Efficient expression

Sekvenční diagramSyntaxe

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í.

Kód
                            
Kopírovat
Vložení
sequenceDiagram Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later!
Informace

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:

Kód
                            
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.

Kód
                            
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

Kód
                            
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.

Kód
                            
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
Informace

Pokud je název vaší skupiny barevný, můžete tuto barvu vynutit jako průhlednou:

                            
Kopírovat
Vložení
box transparent Aqua ... actors ... end
Kód
                            
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:

Kód
                            
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 -.

Kód
                            
Kopírovat
Vložení
sequenceDiagram Alice->>+John: Hello John, how are you? John-->>-Alice: Great!

Aktivace stejné role se mohou sčítat:

Kód
                            
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

Kód
                            
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:

Kód
                            
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:

Kód
                            
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:

Kód
                            
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:

Kód
                            
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:

Kód
                            
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.

Kód
                            
Kopírovat
Vložení
par Action 1 statements and Action 2 statements and Action N statements end

Viz příklad níže:

Kód
                            
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.

Kód
                            
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:

Kód
                            
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.

Kód
                            
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:

Kód
                            
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:

Kód
                            
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.

Kód
                            
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.

Kód
                            
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:

Kód
                            
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>
Kód
                            
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>

示例如下:

Kód
                            
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!