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

SekvensdiagramSyntax

Sekvensdiagram

Mermaid kan rendera sekvensdiagram. Ett sekvensdiagram är en typ av interaktionsdiagram som visar hur olika processer samverkar och i vilken ordning operationerna sker.

Kod
                            
Kopiera
Bädda in
sequenceDiagram Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later!
Information

Om noder: på grund av hur Mermaid-språket är utformat förstör ordet "end" hela figuren. Om du måste använda "end" behöver du omge ordet "end" med parenteser (), dubbla citattecken "", klammerparenteser {} eller hakparenteser [], det vill säga: (end), [end], {end}.

Syntax

Deltagare

Deltagare visas i den ordning de förekommer i diagrammets källtext. Ibland kan du vilja visa deltagarna i en annan ordning än den de förekommer i inom det första meddelandet; du kan ange deltagarnas ordning med följande metod:

Kod
                            
Kopiera
Bädda in
sequenceDiagram participant Alice participant Bob Bob->>Alice: Hi Alice Alice->>Bob: Hi Bob

角色

Om du vill använda en rollsymbol istället för en rektangel med text kan du göra det med en roll-sats, som visas nedan.

Kod
                            
Kopiera
Bädda in
sequenceDiagram actor Alice actor Bob Alice->>Bob: Hi Bob Bob->>Alice: Hi Alice

Alias

Du kan använda as efter deltagardeklarationen för att definiera ett alias

Kod
                            
Kopiera
Bädda in
sequenceDiagram participant A as Alice participant J as John A->>J: Hello John, how are you? J->>A: Great!

Skapa och förstöra deltagare

Deltagare kan skapas och förstöras via meddelanden. Därför lägger du till en skapa- eller förstör-instruktion före meddelandet.

                            
Kopiera
Bädda in
participant B A --> B: Hello

Vid skapande-instruktioner stöds att skilja deltagare från alias. Meddelandets avsändare eller mottagare kan förstöras, men mottagaren kan bara skapas.

Kod
                            
Kopiera
Bädda in
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

Grupp/ruta

Deltagare kan grupperas i vertikala rutor. Du kan definiera färgen med en symbol (om den inte definieras blir den transparent).

                            
Kopiera
Bädda in
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

Om ditt gruppnamn är färgat kan du tvinga denna färg till transparent:

                            
Kopiera
Bädda in
box transparent Aqua ... actors ... end
Kod
                            
Kopiera
Bädda in
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?

Meddelande

Meddelanden kan visas med heldragen eller streckad linje.

Linjer kan vara heldragna eller streckade och stöder avslutning med olika typer av pilar, kryss eller öppna pilspetsar.

                            
Kopiera
Bädda in
[Actor][Arrow][Actor]:Message text

Tio standardtyper av pilar

Typ Beskrivning
-> Heldragen linje utan pil
--> Streckad linje utan pil
->> Heldragen linje med pil
-->> Streckad linje med pil
<<->> Heldragen linje med dubbelriktad pil
<<-->> Streckad linje med dubbelriktad pil
-x Heldragen linje med kryss i änden
--x Streckad linje med kryss i änden
-) Heldragen linje med öppen pilspets i änden (asynkron)
--) Streckad linje med öppen pilspets i änden (asynkron)

Aktivering

Du kan aktivera och inaktivera en roll; inaktivering eller aktivering kan vara en dedikerad deklaration:

Kod
                            
Kopiera
Bädda in
sequenceDiagram Alice->>Bob: Hello Bob, how are you? activate Alice Bob->>Alice: Hi Alice! deactivate Alice

Det finns också en genvägsnotation, nämligen att lägga till + eller - efter meddelandepilen.

Kod
                            
Kopiera
Bädda in
sequenceDiagram Alice->>+John: Hello John, how are you? John-->>-Alice: Great!

Aktivering av samma roll kan staplas:

Kod
                            
Kopiera
Bädda in
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 lägga till kommentarer i ett sekvensdiagram. Detta kan göras med följande symboler: Note[right of] eller [left of] eller [over][deltagare]: kommentarstext

Kod
                            
Kopiera
Bädda in
sequenceDiagram participant John Note right of John: Text in note

Du kan också skapa kommentarer som täcker två deltagare:

Kod
                            
Kopiera
Bädda in
sequenceDiagram Alice->John: Hello John, how are you? Note over Alice,John: A typical interaction

Radbrytning

Du kan lägga till radbrytningar i kommentarer och meddelanden:

Kod
                            
Kopiera
Bädda in
sequenceDiagram Alice->John: Hello John,<br/>how are you? Note over Alice,John: A typical interaction<br/>But now in two lines

Radbrytningar i rollnamn kräver att ett alias definieras:

Kod
                            
Kopiera
Bädda in
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

Loop

I ett sekvensdiagram kan en loop uttryckas med följande symboler.

                            
Kopiera
Bädda in
loop Loop text ... statements ... end

Se exemplet nedan:

Kod
                            
Kopiera
Bädda in
sequenceDiagram Alice->John: Hello John, how are you? loop Every minute John-->Alice: Great! end

Alternativ

I ett sekvensdiagram kan alternativa vägar uttryckas med symboler.

                            
Kopiera
Bädda in
alt Describing text... statements else statements end

或者如果存在可选序列:

                            
Kopiera
Bädda in
opt Describing text... statements end

Se exemplet nedan:

Kod
                            
Kopiera
Bädda in
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

Parallellt

Åtgärder som sker parallellt kan uttryckas med följande symboler.

Kod
                            
Kopiera
Bädda in
par Action 1 statements and Action 2 statements and Action N statements end

Se exemplet nedan:

Kod
                            
Kopiera
Bädda in
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!

Parallella block kan också nästlas.

Kod
                            
Kopiera
Bädda in
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

Kritiskt avsnitt

Genom att villkora olika situationer kan du visa åtgärder som måste utföras automatiskt.

Detta görs med följande symboler:

                            
Kopiera
Bädda in
critical [Action that must be performed] ... statements ... option [Circumstance A] ... statements ... option [Circumstance B] ... statements ... end

Se exemplet nedan:

Kod
                            
Kopiera
Bädda in
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 är också möjligt att det inte finns några alternativ alls.

Kod
                            
Kopiera
Bädda in
critical Establish a connection to the DB Service-->DB: connect end

Detta kritiska block kan också nästlas, motsvarande par -satsen som visades ovan.

Avbrott

Du kan ange att en sekvens stoppas i flödet, vanligtvis används detta för att modellera undantagssituationer.

Detta görs med följande symboler:

                            
Kopiera
Bädda in
break [something happened] ... statements ... end

Se exemplet nedan:

Kod
                            
Kopiera
Bädda in
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

Bakgrundsmarkering

Du kan ange en färgad bakgrundsrektangel för att markera flödet, vilket görs med följande symboler:

                            
Kopiera
Bädda in
rect COLOR ... content ... end

Färger definieras med syntaxen rgb och rgba.

                            
Kopiera
Bädda in
rect rgb(0, 255, 0) ... content ... end
                            
Kopiera
Bädda in
rect rgba(0, 0, 255, .1) ... content ... end

Se exemplet nedan:

Kod
                            
Kopiera
Bädda in
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 infoga kommentarer i ett sekvensdiagram, och redigeraren ignorerar dessa kommentarer. En kommentar måste uppta en egen rad och börja med två procenttecken %%. All text från kommentarens början till nästa radbrytning betraktas som en kommentar, inklusive all diagram-syntax.

Kod
                            
Kopiera
Bädda in
sequenceDiagram Alice->>John: Hello John, how are you? %% this is a comment John-->>Alice: Great!

Entitetskodning för att undvika tecken

Du kan undvika tecken med följande syntax.

Kod
                            
Kopiera
Bädda in
sequenceDiagram A->>B: I #9829; you! B->>A: I #9829; you #infin; times more!

De angivna talen är decimala, så (#) kan kodas som (#35;), och användning av HTML-teckennamn stöds också.

Eftersom semikolon kan användas istället för radbrytning för att definiera markörer, måste du använda (#59;) när meddelandetexten innehåller semikolon.

Numrering

Du kan bifoga ett sekvensnummer till varje pil i sekvensdiagrammet. Som visas nedan:

Kod
                            
Kopiera
Bädda in
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!

Deltagarmenyn

Deltagare kan innehålla popup-menyer med personliga länkar till externa sidor. Om en roll till exempel representerar en webbtjänst kan användbara länkar inkludera en länk till tjänstens hälsodashboard, ett arkiv som innehåller tjänstens kod eller en länk till en wikisida som beskriver tjänsten.

Detta kan konfigureras genom att lägga till en eller flera länkrader i följande format:

                            
Kopiera
Bädda in
link <actor>: <link-label> @ <link-url>
Kod
                            
Kopiera
Bädda in
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!

Avancerad menysyntax

Det finns en avancerad syntax som bygger på JSON-format. Om du behärskar JSON-format kan detta också användas.

Detta kan konfigureras genom att lägga till en länkrad i följande format:

                            
Kopiera
Bädda in
links <actor>: <json-formatted link-name link-url pairs>

示例如下:

Kod
                            
Kopiera
Bädda in
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!