Sekvensdiagram
Mermaid kan rendre sekvensdiagrammer. Et sekvensdiagram er et samhandlingsdiagram som viser hvordan ulike prosesser samhandler med hverandre og rekkefølgen av operasjonene.
Kopier
Bygg inn
sequenceDiagram
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
Alice-)John: See you later!
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:
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.
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
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.
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
Hvis gruppenavnet ditt er farget, kan du tvinge denne fargen til gjennomsiktig:
Kopier
Bygg inn
box transparent Aqua
... actors ...
end
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:
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.
Kopier
Bygg inn
sequenceDiagram
Alice->>+John: Hello John, how are you?
John-->>-Alice: Great!
Aktiveringer av samme rolle kan stables:
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
Kopier
Bygg inn
sequenceDiagram
participant John
Note right of John: Text in note
Du kan også opprette kommentarer som dekker to deltakere:
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:
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:
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:
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:
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.
Kopier
Bygg inn
par Action 1
statements
and Action 2
statements
and Action N
statements
end
Se eksempelet nedenfor:
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.
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:
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.
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:
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:
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.
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.
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:
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>
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>
示例如下:
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!