Sekvensdiagram
Mermaid kan rendera sekvensdiagram. Ett sekvensdiagram är en typ av interaktionsdiagram som visar hur olika processer samverkar och i vilken ordning operationerna sker.
Kopiera
Bädda in
sequenceDiagram
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
Alice-)John: See you later!
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:
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.
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
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.
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
Om ditt gruppnamn är färgat kan du tvinga denna färg till transparent:
Kopiera
Bädda in
box transparent Aqua
... actors ...
end
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:
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.
Kopiera
Bädda in
sequenceDiagram
Alice->>+John: Hello John, how are you?
John-->>-Alice: Great!
Aktivering av samma roll kan staplas:
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
Kopiera
Bädda in
sequenceDiagram
participant John
Note right of John: Text in note
Du kan också skapa kommentarer som täcker två deltagare:
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:
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:
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:
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:
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.
Kopiera
Bädda in
par Action 1
statements
and Action 2
statements
and Action N
statements
end
Se exemplet nedan:
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.
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:
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.
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:
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:
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.
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.
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:
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>
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>
示例如下:
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!