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

SekvensdiagramSyntaks

Sekvensdiagram

Mermaid kan rendere sekvensdiagrammer. Et sekvensdiagram er en interaktionsdiagramtype, der viser, hvordan processer interagerer med hinanden, og i hvilken rækkefølge.

Kode
                            
Kopiér
Integrer
sequenceDiagram Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later!
Information

Bemærkning om knuder: På grund af måden Mermaidsproget er bygget op på, ødelægger ordet "end" hele grafen. Hvis du er nødt til at bruge "end", skal du omslutte ordet "end" med runde parenteser (), dobbelte anførselstegn "", klammer {} eller kantede parenteser [], dvs.: (end), [end], {end}.

Syntaks

Deltager

Deltagere vises i den rækkefølge, de optræder i diagrammets kildetekst. Nogle gange vil du måske vise deltagerne i en anden rækkefølge end den, de optræder i den første besked; du kan angive deltagernes rækkefølge på følgende måde:

Kode
                            
Kopiér
Integrer
sequenceDiagram participant Alice participant Bob Bob->>Alice: Hi Alice Alice->>Bob: Hi Bob

角色

Hvis du vil bruge aktørsymbolet i stedet for et rektangel med tekst, kan du gøre det med et aktørudsagn, som vist nedenfor.

Kode
                            
Kopiér
Integrer
sequenceDiagram actor Alice actor Bob Alice->>Bob: Hi Bob Bob->>Alice: Hi Alice

Alias

Du kan bruge as efter deltagerdeklarationen til at definere et alias

Kode
                            
Kopiér
Integrer
sequenceDiagram participant A as Alice participant J as John A->>J: Hello John, how are you? J->>A: Great!

Oprettelse og destruktion af deltagere

Deltagere kan oprettes og destrueres via beskeder. Tilføj derfor en oprette- eller destrueringsinstruktion før beskeden.

                            
Kopiér
Integrer
participant B A --> B: Hello

Ved oprettelsesinstruktioner understøttes forskel mellem deltagere og aliaser. Afsenderen eller modtageren af en besked kan destrueres, men modtageren kan kun oprettes.

Kode
                            
Kopiér
Integrer
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

Gruppering/boks

Deltagere kan grupperes i en lodret boks. Du kan definere farven med et symbol (hvis den ikke er defineret, vil den være gennemsigtig).

                            
Kopiér
Integrer
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
Information

Hvis dit gruppenavn er farvet, kan du tvinge farven til at være gennemsigtig:

                            
Kopiér
Integrer
box transparent Aqua ... actors ... end
Kode
                            
Kopiér
Integrer
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?

Besked

En besked kan vises som en fuldt optrukket linje eller en stiplet linje.

Linjer kan være fuldt optrukne eller stiplede og understøtter afslutning med forskellige typer pile, krydser eller åbne pile.

                            
Kopiér
Integrer
[Actor][Arrow][Actor]:Message text

Ti standardpiltyper

Type Beskrivelse
-> Fuldt optrukket linje uden pil
--> Stiplet linje uden pil
->> Fuldt optrukket linje med pil
-->> Stiplet linje med pil
<<->> Fuldt optrukket linje med tovejs-pil
<<-->> Stiplet linje med tovejs-pil
-x Fuldt optrukket linje med kryds i enden
--x Stiplet linje med kryds i enden
-) Fuldt optrukket linje med åben pil i enden (asynkron)
--) Stiplet linje med åben pil i enden (asynkron)

Aktivering

Du kan aktivere og deaktivere en aktør; deaktivering eller aktivering kan være en dedikeret deklaration:

Kode
                            
Kopiér
Integrer
sequenceDiagram Alice->>Bob: Hello Bob, how are you? activate Alice Bob->>Alice: Hi Alice! deactivate Alice

Der findes også en kort notation, hvor du tilføjer + eller - efter beskedens pil.

Kode
                            
Kopiér
Integrer
sequenceDiagram Alice->>+John: Hello John, how are you? John-->>-Alice: Great!

Aktiveringer af den samme aktør kan stables:

Kode
                            
Kopiér
Integrer
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!

Kommentar

Du kan tilføje kommentarer til et sekvensdiagram. Dette kan gøres med følgende symboler: Note[right of] eller [left of] eller [over][deltager]: kommentarindhold

Kode
                            
Kopiér
Integrer
sequenceDiagram participant John Note right of John: Text in note

Du kan også oprette kommentarer, der dækker to deltagere:

Kode
                            
Kopiér
Integrer
sequenceDiagram Alice->John: Hello John, how are you? Note over Alice,John: A typical interaction

Linjeskift

Du kan tilføje linjeskift i kommentarer og beskeder:

Kode
                            
Kopiér
Integrer
sequenceDiagram Alice->John: Hello John,<br/>how are you? Note over Alice,John: A typical interaction<br/>But now in two lines

Linjeskift i aktørnavne kræver, at der defineres et alias:

Kode
                            
Kopiér
Integrer
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

Løkke

I et sekvensdiagram kan en løkke udtrykkes med følgende symbol.

                            
Kopiér
Integrer
loop Loop text ... statements ... end

Se eksemplet nedenfor:

Kode
                            
Kopiér
Integrer
sequenceDiagram Alice->John: Hello John, how are you? loop Every minute John-->Alice: Great! end

Alternativ

I et sekvensdiagram kan alternative forløb udtrykkes med et symbol.

                            
Kopiér
Integrer
alt Describing text... statements else statements end

或者如果存在可选序列:

                            
Kopiér
Integrer
opt Describing text... statements end

Se eksemplet nedenfor:

Kode
                            
Kopiér
Integrer
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

Parallel

Handlinger, der foregår parallelt, kan vises med følgende symbol.

Kode
                            
Kopiér
Integrer
par Action 1 statements and Action 2 statements and Action N statements end

Se eksemplet nedenfor:

Kode
                            
Kopiér
Integrer
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!

Parallelle blokke kan også indlejres.

Kode
                            
Kopiér
Integrer
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

Kritisk område

Du kan vise handlinger, der skal udføres automatisk, ved at gøre dem betingede af forskellige situationer.

Dette gøres med følgende symbol:

                            
Kopiér
Integrer
critical [Action that must be performed] ... statements ... option [Circumstance A] ... statements ... option [Circumstance B] ... statements ... end

Se eksemplet nedenfor:

Kode
                            
Kopiér
Integrer
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

Det er også muligt slet ikke at have nogen muligheder.

Kode
                            
Kopiér
Integrer
critical Establish a connection to the DB Service-->DB: connect end

Denne kritiske blok kan også indlejres, svarende til par-udsagnet vist ovenfor.

Afbrydelse

Du kan angive, at en sekvens stopper i forløbet, hvilket typisk bruges til at modellere undtagelsessituationer.

Dette gøres med følgende symbol:

                            
Kopiér
Integrer
break [something happened] ... statements ... end

Se eksemplet nedenfor:

Kode
                            
Kopiér
Integrer
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

Baggrundsfremhævning

Du kan angive et farvet baggrundsrektangel for at fremhæve et forløb; det gøres med følgende symbol:

                            
Kopiér
Integrer
rect COLOR ... content ... end

Farver defineres ved hjælp af rgb- og rgba-syntaks.

                            
Kopiér
Integrer
rect rgb(0, 255, 0) ... content ... end
                            
Kopiér
Integrer
rect rgba(0, 0, 255, .1) ... content ... end

Se eksemplet nedenfor:

Kode
                            
Kopiér
Integrer
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.

Kommentar

Du kan indsætte kommentarer i et sekvensdiagram, og editoren ignorerer dem. En kommentar skal stå på sin egen linje og skal begynde med dobbelt procenttegn %%. Al tekst fra kommentarens begyndelse til næste linjeskift betragtes som en kommentar, inklusive enhver diagramsyntaks.

Kode
                            
Kopiér
Integrer
sequenceDiagram Alice->>John: Hello John, how are you? %% this is a comment John-->>Alice: Great!

Entitetskodning til escape af tegn

Du kan escape tegn ved hjælp af følgende syntaks.

Kode
                            
Kopiér
Integrer
sequenceDiagram A->>B: I #9829; you! B->>A: I #9829; you #infin; times more!

Det angivne tal er decimalt, så (#) kan kodes som (#35;); brug af HTML-tegnnavne understøttes også.

Da semikolon kan erstatte et linjeskift til at definere markeringer, skal du bruge (#59;), når du vil have et semikolon med i beskedteksten.

Nummerering

Du kan tilføje et sekvensnummer til hver pil i et sekvensdiagram. Som vist nedenfor:

Kode
                            
Kopiér
Integrer
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!

Deltagermenu

Deltagere kan indeholde en pop op-menu med personlige link til eksterne sider. Hvis en aktør f.eks. repræsenterer en webtjeneste, kan nyttige link omfatte et link til tjenestens sundhedsdashboard, et repository med tjenestens kode eller et link til den wiki-side, der beskriver tjenesten.

Det kan konfigureres ved at tilføje en eller flere linklinjer i følgende format:

                            
Kopiér
Integrer
link <actor>: <link-label> @ <link-url>
Kode
                            
Kopiér
Integrer
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!

Avanceret menusyntaks

Der findes en avanceret syntaks, der er afhængig af JSON-formatet. Hvis du er fortrolig med JSON-formatet, kan denne også bruges.

Det kan konfigureres ved at tilføje en linklinje i følgende format:

                            
Kopiér
Integrer
links <actor>: <json-formatted link-name link-url pairs>

示例如下:

Kode
                            
Kopiér
Integrer
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!