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

SekvensdiagramSyntaks

Sekvensdiagram

Mermaid kan rendre sekvensdiagrammer. Et sekvensdiagram er et samhandlingsdiagram som viser hvordan ulike prosesser samhandler med hverandre og rekkefølgen av operasjonene.

Kode
                            
Kopier
Bygg inn
sequenceDiagram Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later!
Informasjon

Merknad om noder: på grunn av måten Mermaid-språket er skrevet på, ødelegger ordet "end" hele grafen. Hvis du må bruke "end", må du omslutte ordet "end" med parenteser (), doble anførselstegn "", klammer {} eller hakeparenteser [], dvs.: (end), [end], {end}.

Syntaks

Deltaker

Deltakere vises i den rekkefølgen de forekommer i diagrammets kildetekst. Noen ganger vil du kanskje vise deltakerne i en annen rekkefølge enn i den første meldingen. Du kan angi rekkefølgen deltakerne opptrer i på følgende måte:

Kode
                            
Kopier
Bygg inn
sequenceDiagram participant Alice participant Bob Bob->>Alice: Hi Alice Alice->>Bob: Hi Bob

角色

Hvis du vil bruke rollesymbolet i stedet for et rektangel med tekst, kan du gjøre det ved å bruke rolle-setningen, som vist nedenfor.

Kode
                            
Kopier
Bygg inn
sequenceDiagram actor Alice actor Bob Alice->>Bob: Hi Bob Bob->>Alice: Hi Alice

Alias

Du kan bruke as etter deltakerdeklarasjonen for å definere et alias

Kode
                            
Kopier
Bygg inn
sequenceDiagram participant A as Alice participant J as John A->>J: Hello John, how are you? J->>A: Great!

Oppretting og destruksjon av deltakere

Deltakere kan opprettes og destrueres via meldinger. Legg derfor til en opprettings- eller destruksjonsinstruks før meldingen.

                            
Kopier
Bygg inn
participant B A --> B: Hello

Opprettingsinstrukser støtter å skille mellom deltakere og aliaser. Senderen eller mottakeren av en melding kan destrueres, men mottakeren kan bare opprettes.

Kode
                            
Kopier
Bygg inn
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

Deltakere kan grupperes i en vertikal boks. Du kan definere en farge med et symbol (hvis ingen er definert, blir den gjennomsiktig).

                            
Kopier
Bygg inn
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
Informasjon

Hvis gruppenavnet ditt er farget, kan du tvinge denne fargen til gjennomsiktig:

                            
Kopier
Bygg inn
box transparent Aqua ... actors ... end
Kode
                            
Kopier
Bygg inn
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?

Melding

Meldinger kan vises med hel linje eller stiplet linje.

Linjer kan være heltrukne eller stiplede, og støtter avslutning med ulike typer piler, kryss eller åpne piler.

                            
Kopier
Bygg inn
[Actor][Arrow][Actor]:Message text

Ti standard piltyper

Type Beskrivelse
-> Hel linje uten pil
--> Stiplet linje uten pil
->> Hel linje med pil
-->> Stiplet linje med pil
<<->> Hel linje med tosidig pil
<<-->> Stiplet linje med tosidig pil
-x Hel linje med kryss i enden
--x Stiplet linje med kryss i enden
-) Hel linje med åpen pil i enden (asynkron)
--) Stiplet linje med åpen pil i enden (asynkron)

Aktivering

Du kan aktivere og deaktivere en rolle. Deaktivering eller aktivering kan være en egen deklarasjon:

Kode
                            
Kopier
Bygg inn
sequenceDiagram Alice->>Bob: Hello Bob, how are you? activate Alice Bob->>Alice: Hi Alice! deactivate Alice

Det finnes også en snarvei der du legger til + eller - etter meldingspilen.

Kode
                            
Kopier
Bygg inn
sequenceDiagram Alice->>+John: Hello John, how are you? John-->>-Alice: Great!

Aktiveringer av samme rolle kan stables:

Kode
                            
Kopier
Bygg inn
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 legge til kommentarer i et sekvensdiagram. Dette kan gjøres med følgende symboler: Note[right of] eller [left of] eller [over][deltaker]: kommentarinnhold

Kode
                            
Kopier
Bygg inn
sequenceDiagram participant John Note right of John: Text in note

Du kan også opprette kommentarer som dekker to deltakere:

Kode
                            
Kopier
Bygg inn
sequenceDiagram Alice->John: Hello John, how are you? Note over Alice,John: A typical interaction

Linjeskift

Du kan legge til linjeskift i kommentarer og meldinger:

Kode
                            
Kopier
Bygg inn
sequenceDiagram Alice->John: Hello John,<br/>how are you? Note over Alice,John: A typical interaction<br/>But now in two lines

Linjeskift i rollenavn krever at du definerer et alias:

Kode
                            
Kopier
Bygg inn
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 uttrykkes med følgende symboler.

                            
Kopier
Bygg inn
loop Loop text ... statements ... end

Se eksempelet nedenfor:

Kode
                            
Kopier
Bygg inn
sequenceDiagram Alice->John: Hello John, how are you? loop Every minute John-->Alice: Great! end

Alternativ

I et sekvensdiagram kan alternative stier uttrykkes med symboler.

                            
Kopier
Bygg inn
alt Describing text... statements else statements end

或者如果存在可选序列:

                            
Kopier
Bygg inn
opt Describing text... statements end

Se eksempelet nedenfor:

Kode
                            
Kopier
Bygg inn
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

Parallell

Handlinger som skjer parallelt kan uttrykkes med følgende symboler.

Kode
                            
Kopier
Bygg inn
par Action 1 statements and Action 2 statements and Action N statements end

Se eksempelet nedenfor:

Kode
                            
Kopier
Bygg inn
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!

Du kan også neste parallelle blokker.

Kode
                            
Kopier
Bygg inn
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 seksjon

Du kan vise handlinger som må utføres automatisk, ved å gjøre dem betinget av ulike situasjoner.

Dette gjøres med følgende symboler:

                            
Kopier
Bygg inn
critical [Action that must be performed] ... statements ... option [Circumstance A] ... statements ... option [Circumstance B] ... statements ... end

Se eksempelet nedenfor:

Kode
                            
Kopier
Bygg inn
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å mulig å ikke ha noen alternativer i det hele tatt.

Kode
                            
Kopier
Bygg inn
critical Establish a connection to the DB Service-->DB: connect end

Denne kritiske blokken kan også nestes, tilsvarende par -setningen som ble vist ovenfor.

Avbrudd

Du kan indikere stopp av en sekvens i en flyt, ofte brukt til å modellere unntakssituasjoner.

Dette gjøres med følgende symboler:

                            
Kopier
Bygg inn
break [something happened] ... statements ... end

Se eksempelet nedenfor:

Kode
                            
Kopier
Bygg inn
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

Bakgrunnsutheving

Du kan angi et farget bakgrunnsrektangel for å utheve en flyt, ved hjelp av følgende symboler:

                            
Kopier
Bygg inn
rect COLOR ... content ... end

Farger defineres ved hjelp av rgb- og rgba-syntaks.

                            
Kopier
Bygg inn
rect rgb(0, 255, 0) ... content ... end
                            
Kopier
Bygg inn
rect rgba(0, 0, 255, .1) ... content ... end

Se eksempelet nedenfor:

Kode
                            
Kopier
Bygg inn
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 skrive kommentarer i et sekvensdiagram, og editoren ignorerer disse kommentarene. En kommentar må oppta en egen linje og må begynne med to prosenttegn %% . All tekst fra kommentarens start til neste linjeskift betraktes som en kommentar, inkludert all diagram-syntaks.

Kode
                            
Kopier
Bygg inn
sequenceDiagram Alice->>John: Hello John, how are you? %% this is a comment John-->>Alice: Great!

Entitetskoding for escape av tegn

Du kan escape tegn ved hjelp av følgende syntaks.

Kode
                            
Kopier
Bygg inn
sequenceDiagram A->>B: I #9829; you! B->>A: I #9829; you #infin; times more!

Det oppgitte tallet er desimalt, så (#) kan kodes som (#35;). Bruk av HTML-tegnavn støttes også.

Siden semikolon kan erstatte linjeskift for å definere markeringer, må du bruke (#59;) når du har semikolon i meldingsteksten.

Nummerering

Du kan legge til et sekvensnummer på hver pil i sekvensdiagrammet. Som vist nedenfor:

Kode
                            
Kopier
Bygg inn
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!

Deltakermeny

Deltakere kan inneholde en sprettoppmeny med personlige lenker til eksterne sider. Hvis en rolle for eksempel representerer en nettjeneste, kan nyttige lenker inkludere en lenke til tjenestens helsedashboard, et depot som inneholder tjenestekoden, eller en lenke til en wiki-side som beskriver tjenesten.

Den kan konfigureres ved å legge til én eller flere lenkelinjer, i følgende format:

                            
Kopier
Bygg inn
link <actor>: <link-label> @ <link-url>
Kode
                            
Kopier
Bygg inn
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!

Avansert menysyntaks

Det finnes en avansert syntaks som er avhengig av JSON-format. Hvis du behersker JSON-format godt, kan denne også brukes.

Den kan konfigureres ved å legge til en lenkelinje i følgende format:

                            
Kopier
Bygg inn
links <actor>: <json-formatted link-name link-url pairs>

示例如下:

Kode
                            
Kopier
Bygg inn
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!