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

SequencediagramSyntaxis

Sequencediagram

Mermaid kan sequentiediagrammen renderen. Een sequentiediagram is een interactiediagram dat toont hoe processen op elkaar inwerken en in welke volgorde de bewerkingen plaatsvinden.

Code
                            
Kopiëren
Insluiten
sequenceDiagram Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later!
Informatie

Opmerking over knooppunten: door de manier waarop de Mermaid-taal is geschreven, breekt het woord "end" de hele grafiek. Als je "end" moet gebruiken, moet je het woord "end" tussen ronde haakjes (), dubbele aanhalingstekens "", accolades {} of vierkante haken [] plaatsen, dus: (end), [end], {end}.

Syntaxis

Deelnemer

Deelnemers worden weergegeven in de volgorde waarin ze in de brontekst van het diagram voorkomen. Soms wil je deelnemers in een andere volgorde weergeven dan die waarin ze in het eerste bericht voorkomen; dit kan met de volgende methode om de volgorde van optreden van deelnemers te specificeren:

Code
                            
Kopiëren
Insluiten
sequenceDiagram participant Alice participant Bob Bob->>Alice: Hi Alice Alice->>Bob: Hi Bob

角色

Als je een rolpictogram wilt gebruiken in plaats van een rechthoek met tekst, kun je dit doen met de actor-verklaring, zoals hieronder weergegeven.

Code
                            
Kopiëren
Insluiten
sequenceDiagram actor Alice actor Bob Alice->>Bob: Hi Bob Bob->>Alice: Hi Alice

Alias

Je kunt na de deelnemersdeclaratie as gebruiken om een alias te definiëren

Code
                            
Kopiëren
Insluiten
sequenceDiagram participant A as Alice participant J as John A->>J: Hello John, how are you? J->>A: Great!

Deelnemers aanmaken en verwijderen

Deelnemers kunnen via berichten worden aangemaakt en verwijderd. Voeg daarom een aanmaak- of verwijderinstructie voor het bericht toe.

                            
Kopiëren
Insluiten
participant B A --> B: Hello

Bij de aanmaakinstructie wordt ondersteund dat onderscheid wordt gemaakt tussen deelnemer en alias. De afzender of ontvanger van een bericht kan worden verwijderd, maar de ontvanger kan alleen worden aangemaakt.

Code
                            
Kopiëren
Insluiten
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

Groeperen/vak

Deelnemers kunnen in een verticaal vak worden gegroepeerd. Je kunt een kleur definiëren met een symbool (als deze niet is gedefinieerd, is de kleur transparant).

                            
Kopiëren
Insluiten
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
Informatie

Als je groepsnaam gekleurd is, kun je die kleur geforceerd transparant maken:

                            
Kopiëren
Insluiten
box transparent Aqua ... actors ... end
Code
                            
Kopiëren
Insluiten
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?

Bericht

Berichten kunnen als doorgetrokken lijn of als streeplijn worden weergegeven.

Lijnen kunnen doorgetrokken of gestreept zijn en kunnen eindigen met verschillende soorten pijlen, kruizen of open pijlen.

                            
Kopiëren
Insluiten
[Actor][Arrow][Actor]:Message text

Tien standaard pijltypen

Type Beschrijving
-> Doorgetrokken lijn zonder pijl
--> Streeplijn zonder pijl
->> Doorgetrokken lijn met pijl
-->> Streeplijn met pijl
<<->> Doorgetrokken lijn met pijl in beide richtingen
<<-->> Streeplijn met pijl in beide richtingen
-x Doorgetrokken lijn met een kruis aan het uiteinde
--x Streeplijn met een kruis aan het uiteinde
-) Doorgetrokken lijn met een holle pijl aan het einde (asynchroon)
--) Streeplijn met een holle pijl aan het einde (asynchroon)

Activeren

Je kunt een rol activeren en deactiveren; deactiveren of activeren kan een aparte verklaring zijn:

Code
                            
Kopiëren
Insluiten
sequenceDiagram Alice->>Bob: Hello Bob, how are you? activate Alice Bob->>Alice: Hi Alice! deactivate Alice

Er is ook een verkorte notatie, namelijk het toevoegen van + of - na de berichtpijl.

Code
                            
Kopiëren
Insluiten
sequenceDiagram Alice->>+John: Hello John, how are you? John-->>-Alice: Great!

Activeringen van dezelfde rol kunnen worden gestapeld:

Code
                            
Kopiëren
Insluiten
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!

Opmerking

Je kunt opmerkingen aan een sequentiediagram toevoegen. Dit kan met de volgende notatie: Note[right of] of [left of] of [over][deelnemer]: opmerkinginhoud

Code
                            
Kopiëren
Insluiten
sequenceDiagram participant John Note right of John: Text in note

Je kunt ook een opmerking maken die twee deelnemers omvat:

Code
                            
Kopiëren
Insluiten
sequenceDiagram Alice->John: Hello John, how are you? Note over Alice,John: A typical interaction

Regeleinde

Je kunt regeleinden toevoegen in opmerkingen en berichten:

Code
                            
Kopiëren
Insluiten
sequenceDiagram Alice->John: Hello John,<br/>how are you? Note over Alice,John: A typical interaction<br/>But now in two lines

Voor een regeleinde in een rolnaam moet een alias worden gedefinieerd:

Code
                            
Kopiëren
Insluiten
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

Lus

In een sequentiediagram kan een lus worden uitgedrukt met de volgende notatie.

                            
Kopiëren
Insluiten
loop Loop text ... statements ... end

Zie het onderstaande voorbeeld:

Code
                            
Kopiëren
Insluiten
sequenceDiagram Alice->John: Hello John, how are you? loop Every minute John-->Alice: Great! end

Alternatief

In een sequentiediagram kan een alternatief pad worden uitgedrukt met een notatie.

                            
Kopiëren
Insluiten
alt Describing text... statements else statements end

或者如果存在可选序列:

                            
Kopiëren
Insluiten
opt Describing text... statements end

Zie het onderstaande voorbeeld:

Code
                            
Kopiëren
Insluiten
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

Parallelle acties kunnen met de volgende notatie worden weergegeven.

Code
                            
Kopiëren
Insluiten
par Action 1 statements and Action 2 statements and Action N statements end

Zie het onderstaande voorbeeld:

Code
                            
Kopiëren
Insluiten
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!

Je kunt ook parallelle blokken nesten.

Code
                            
Kopiëren
Insluiten
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

Kritieke sectie

Door verschillende situaties van voorwaarden te voorzien, kun je bewerkingen tonen die automatisch moeten worden uitgevoerd.

Dit gebeurt met de volgende notatie:

                            
Kopiëren
Insluiten
critical [Action that must be performed] ... statements ... option [Circumstance A] ... statements ... option [Circumstance B] ... statements ... end

Zie het onderstaande voorbeeld:

Code
                            
Kopiëren
Insluiten
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

Het is ook mogelijk dat er helemaal geen opties zijn.

Code
                            
Kopiëren
Insluiten
critical Establish a connection to the DB Service-->DB: connect end

Dit kritieke blok kan ook worden genest en komt overeen met de hierboven getoonde par-verklaring.

Onderbreking

Je kunt in een stroom het stoppen van een reeks aangeven, meestal gebruikt om uitzonderlijke situaties te modelleren.

Dit gebeurt met de volgende notatie:

                            
Kopiëren
Insluiten
break [something happened] ... statements ... end

Zie het onderstaande voorbeeld:

Code
                            
Kopiëren
Insluiten
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

Achtergrondmarkering

Je kunt een rechthoek met een gekleurde achtergrond instellen om de stroom te markeren, wat met de volgende notatie gebeurt:

                            
Kopiëren
Insluiten
rect COLOR ... content ... end

Kleuren worden gedefinieerd met de syntaxis rgb en rgba.

                            
Kopiëren
Insluiten
rect rgb(0, 255, 0) ... content ... end
                            
Kopiëren
Insluiten
rect rgba(0, 0, 255, .1) ... content ... end

Zie het onderstaande voorbeeld:

Code
                            
Kopiëren
Insluiten
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.

Opmerking

Je kunt opmerkingen in een sequentiediagram invoeren; de editor negeert deze opmerkingen. Opmerkingen moeten op een eigen regel staan en moeten beginnen met een dubbel procentteken %%. Alle tekst vanaf het begin van de opmerking tot het volgende regeleinde wordt als opmerking beschouwd, inclusief eventuele diagram-syntaxis.

Code
                            
Kopiëren
Insluiten
sequenceDiagram Alice->>John: Hello John, how are you? %% this is a comment John-->>Alice: Great!

Entiteitscodering voor het escapen van tekens

Met de volgende syntaxis kunnen tekens worden geëscaped.

Code
                            
Kopiëren
Insluiten
sequenceDiagram A->>B: I #9829; you! B->>A: I #9829; you #infin; times more!

De gegeven getallen zijn decimaal, dus (#) kan worden gecodeerd als (#35;); het gebruik van HTML-tekennamen wordt ook ondersteund.

Omdat een puntkomma een regeleinde kan vervangen om markeringen te definiëren, moet je (#59;) gebruiken wanneer je een puntkomma in de berichttekst opneemt.

Nummering

Je kunt aan elke pijl in een sequentiediagram een volgnummer toevoegen. Zoals hieronder weergegeven:

Code
                            
Kopiëren
Insluiten
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!

Deelnemersmenu

Deelnemers kunnen een pop-upmenu bevatten met gepersonaliseerde links naar externe pagina's. Als een rol bijvoorbeeld een netwerkdienst vertegenwoordigt, kunnen nuttige links een link naar het health-dashboard van de dienst, een repository met de code van de dienst of een link naar een wikipagina die de dienst beschrijft, omvatten.

Dit kan worden geconfigureerd door een of meer linkregels toe te voegen, in het volgende formaat:

                            
Kopiëren
Insluiten
link <actor>: <link-label> @ <link-url>
Code
                            
Kopiëren
Insluiten
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!

Geavanceerde menusyntaxis

Er is een geavanceerde syntaxis die afhankelijk is van het JSON-formaat. Als je het JSON-formaat goed beheerst, kun je dit ook gebruiken.

Dit kan worden geconfigureerd door een linkregel in het volgende formaat toe te voegen:

                            
Kopiëren
Insluiten
links <actor>: <json-formatted link-name link-url pairs>

示例如下:

Code
                            
Kopiëren
Insluiten
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!