Proces Typ
Wyrażenie graficzne
Myślenie Typ
Wyrażenie strukturalne
Notatki Typ
Efektywne wyrażanie

Diagram sekwencjiSkładnia

Diagram sekwencji

Mermaid może renderować diagramy sekwencji. Diagram sekwencji to diagram interakcji, który pokazuje, jak poszczególne procesy wzajemnie na siebie oddziałują oraz kolejność tych operacji.

Kod
                            
Kopiuj
Osadź
sequenceDiagram Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later!
Informacje

Uwaga dotycząca węzłów: ze względu na sposób, w jaki napisano język Mermaid, słowo "end" psuje cały graf. Jeśli musisz użyć "end", musisz ująć słowo "end" w nawiasy okrągłe (), podwójne cudzysłowy "", nawiasy klamrowe {} lub nawiasy kwadratowe [], tj.: (end), [end], {end}.

Składnia

Uczestnik

Uczestnicy są wyświetlani w kolejności ich występowania w tekście źródłowym diagramu. Czasami możesz chcieć wyświetlić uczestników w innej kolejności niż w pierwszej wiadomości; kolejność wystąpienia uczestników można określić w następujący sposób:

Kod
                            
Kopiuj
Osadź
sequenceDiagram participant Alice participant Bob Bob->>Alice: Hi Alice Alice->>Bob: Hi Bob

角色

Jeśli chcesz użyć symbolu roli zamiast prostokąta z tekstem, możesz to zrobić za pomocą instrukcji roli, jak pokazano poniżej.

Kod
                            
Kopiuj
Osadź
sequenceDiagram actor Alice actor Bob Alice->>Bob: Hi Bob Bob->>Alice: Hi Alice

Alias

Możesz zdefiniować alias, używając as po deklaracji uczestnika

Kod
                            
Kopiuj
Osadź
sequenceDiagram participant A as Alice participant J as John A->>J: Hello John, how are you? J->>A: Great!

Tworzenie i niszczenie uczestników

Uczestników można tworzyć i niszczyć za pomocą wiadomości. Dlatego dodaj instrukcję tworzenia lub niszczenia przed wiadomością.

                            
Kopiuj
Osadź
participant B A --> B: Hello

Instrukcja tworzenia obsługuje rozróżnienie między uczestnikiem a aliasem. Nadawca lub odbiorca wiadomości może zostać zniszczony, ale odbiorca może zostać tylko utworzony.

Kod
                            
Kopiuj
Osadź
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

Grupowanie/ramka

Uczestnicy mogą być grupowani w pionowych ramkach. Możesz zdefiniować kolor za pomocą symbolu (jeśli nie zostanie zdefiniowany, będzie przezroczysty).

                            
Kopiuj
Osadź
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
Informacje

Jeśli nazwa Twojej grupy jest kolorowa, możesz wymusić ten kolor jako przezroczysty:

                            
Kopiuj
Osadź
box transparent Aqua ... actors ... end
Kod
                            
Kopiuj
Osadź
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?

Wiadomość

Wiadomości mogą być wyświetlane linią ciągłą lub linią kreskowaną.

Linie mogą być ciągłe lub kreskowane i mogą kończyć się różnymi typami strzałek, krzyżyków lub strzałek otwartych.

                            
Kopiuj
Osadź
[Actor][Arrow][Actor]:Message text

Dziesięć standardowych typów strzałek

Typ Opis
-> Linia ciągła bez strzałki
--> Linia kreskowana bez strzałki
->> Linia ciągła ze strzałką
-->> Linia kreskowana ze strzałką
<<->> Linia ciągła z dwukierunkową strzałką
<<-->> Linia kreskowana z dwukierunkową strzałką
-x Linia ciągła z krzyżykiem na końcu
--x Linia kreskowana z krzyżykiem na końcu
-) Linia ciągła z pustą strzałką na końcu (asynchroniczna)
--) Linia kreskowana z pustą strzałką na końcu (asynchroniczna)

Aktywacja

Możesz aktywować i dezaktywować rolę; dezaktywacja lub aktywacja może być osobną deklaracją:

Kod
                            
Kopiuj
Osadź
sequenceDiagram Alice->>Bob: Hello Bob, how are you? activate Alice Bob->>Alice: Hi Alice! deactivate Alice

Istnieje również skrócona notacja polegająca na dodaniu + lub - po strzałce wiadomości.

Kod
                            
Kopiuj
Osadź
sequenceDiagram Alice->>+John: Hello John, how are you? John-->>-Alice: Great!

Aktywacje tej samej roli mogą się nakładać:

Kod
                            
Kopiuj
Osadź
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!

Komentarz

Możesz dodać komentarz do diagramu sekwencji. Można to zrobić za pomocą następujących symboli: Note[right of] lub [left of] lub [over][uczestnik]: treść komentarza

Kod
                            
Kopiuj
Osadź
sequenceDiagram participant John Note right of John: Text in note

Możesz także utworzyć komentarz obejmujący dwóch uczestników:

Kod
                            
Kopiuj
Osadź
sequenceDiagram Alice->John: Hello John, how are you? Note over Alice,John: A typical interaction

Znak nowej linii

Możesz dodać znak nowej linii w komentarzach i wiadomościach:

Kod
                            
Kopiuj
Osadź
sequenceDiagram Alice->John: Hello John,<br/>how are you? Note over Alice,John: A typical interaction<br/>But now in two lines

Znak nowej linii w nazwie roli wymaga zdefiniowania aliasu:

Kod
                            
Kopiuj
Osadź
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

Pętla

W diagramie sekwencji pętlę można wyrazić za pomocą następujących symboli.

                            
Kopiuj
Osadź
loop Loop text ... statements ... end

Zobacz poniższy przykład:

Kod
                            
Kopiuj
Osadź
sequenceDiagram Alice->John: Hello John, how are you? loop Every minute John-->Alice: Great! end

Alternatywa

W diagramie sekwencji ścieżkę alternatywną można wyrazić za pomocą symbolu.

                            
Kopiuj
Osadź
alt Describing text... statements else statements end

或者如果存在可选序列:

                            
Kopiuj
Osadź
opt Describing text... statements end

Zobacz poniższy przykład:

Kod
                            
Kopiuj
Osadź
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

Równoległość

Działania zachodzące równolegle można przedstawić za pomocą następujących symboli.

Kod
                            
Kopiuj
Osadź
par Action 1 statements and Action 2 statements and Action N statements end

Zobacz poniższy przykład:

Kod
                            
Kopiuj
Osadź
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!

Można także zagnieżdżać bloki równoległe.

Kod
                            
Kopiuj
Osadź
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

Sekcja krytyczna

Możesz warunkowo obsłużyć różne sytuacje, aby pokazać działania, które muszą zostać wykonane automatycznie.

Odbywa się to za pomocą następujących symboli:

                            
Kopiuj
Osadź
critical [Action that must be performed] ... statements ... option [Circumstance A] ... statements ... option [Circumstance B] ... statements ... end

Zobacz poniższy przykład:

Kod
                            
Kopiuj
Osadź
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żliwe jest również, że nie ma żadnych opcji.

Kod
                            
Kopiuj
Osadź
critical Establish a connection to the DB Service-->DB: connect end

Ten blok krytyczny można również zagnieżdżać, co odpowiada instrukcji par widocznej powyżej.

Przerwanie

W przepływie można wskazać zatrzymanie sekwencji, co jest zwykle używane do modelowania wyjątków.

Odbywa się to za pomocą następujących symboli:

                            
Kopiuj
Osadź
break [something happened] ... statements ... end

Zobacz poniższy przykład:

Kod
                            
Kopiuj
Osadź
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

Wyróżnienie tła

Możesz ustawić kolorowy prostokąt tła, aby wyróżnić przepływ; odbywa się to za pomocą następujących symboli:

                            
Kopiuj
Osadź
rect COLOR ... content ... end

Kolory są definiowane za pomocą składni rgb i rgba.

                            
Kopiuj
Osadź
rect rgb(0, 255, 0) ... content ... end
                            
Kopiuj
Osadź
rect rgba(0, 0, 255, .1) ... content ... end

Zobacz poniższy przykład:

Kod
                            
Kopiuj
Osadź
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.

Komentarz

W diagramie sekwencji można wprowadzać komentarze, które edytor zignoruje. Komentarz musi zajmować osobną linię i zaczynać się od podwójnego znaku procentu %%. Każdy tekst od początku komentarza do następnego znaku nowej linii będzie traktowany jako komentarz, w tym dowolna składnia diagramu.

Kod
                            
Kopiuj
Osadź
sequenceDiagram Alice->>John: Hello John, how are you? %% this is a comment John-->>Alice: Great!

Kodowanie encji do ucieczki znaków

Możesz uciec znaki za pomocą następującej składni.

Kod
                            
Kopiuj
Osadź
sequenceDiagram A->>B: I #9829; you! B->>A: I #9829; you #infin; times more!

Podane liczby są dziesiętne, więc (#) można zakodować jako (#35;); obsługiwane jest również używanie nazw znaków HTML.

Ponieważ średnik może zastąpić znak nowej linii przy definiowaniu znaczników, gdy w tekście wiadomości znajduje się średnik, musisz użyć (#59;).

Numeracja

Do każdej strzałki w diagramie sekwencji można dołączyć numer sekwencyjny. Jak pokazano poniżej:

Kod
                            
Kopiuj
Osadź
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!

Menu uczestnika

Uczestnik może zawierać menu podręczne z listą spersonalizowanych łączy do stron zewnętrznych. Na przykład, jeśli rola reprezentuje usługę sieciową, przydatne łącza mogą obejmować łącze do pulpitu monitorowania kondycji usługi, repozytorium zawierające kod tej usługi lub stronę wiki opisującą tę usługę.

Można to skonfigurować, dodając jedną lub więcej linii łączy w następującym formacie:

                            
Kopiuj
Osadź
link <actor>: <link-label> @ <link-url>
Kod
                            
Kopiuj
Osadź
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!

Zaawansowana składnia menu

Istnieje zaawansowana składnia oparta na formacie JSON. Jeśli dobrze znasz format JSON, możesz jej również użyć.

Można to skonfigurować, dodając linię łącza w następującym formacie:

                            
Kopiuj
Osadź
links <actor>: <json-formatted link-name link-url pairs>

示例如下:

Kod
                            
Kopiuj
Osadź
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!