Registrati
Diagrammi di flusso
Espressione grafica
Mappe mentali
Espressione strutturata
Note
Espressione efficiente

Diagramma di sequenzaSintassi

Diagramma di sequenza

Mermaid può renderizzare un diagramma di sequenza. Il diagramma di sequenza è un tipo di diagramma di interazione che mostra come i vari processi operano tra loro e l'ordine delle operazioni.

Codice
                            
Copia
Incorpora
sequenceDiagram Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later!
Informazioni

Nota sui nodi: a causa del modo in cui è scritto il linguaggio Mermaid, la parola "end" rompe l'intero grafico. Se devi usare "end", devi racchiuderla tra parentesi tonde (), virgolette doppie "", parentesi graffe {} o parentesi quadre [], cioè: (end), [end], {end}.

Sintassi

Partecipante

I partecipanti sono mostrati nell'ordine in cui compaiono nel testo sorgente del diagramma. A volte potresti voler mostrare i partecipanti in un ordine diverso da quello con cui compaiono nel primo messaggio; puoi specificare l'ordine di apparizione dei partecipanti con i seguenti metodi:

Codice
                            
Copia
Incorpora
sequenceDiagram participant Alice participant Bob Bob->>Alice: Hi Alice Alice->>Bob: Hi Bob

角色

Se vuoi usare il simbolo dell'attore invece di un rettangolo con testo, puoi farlo usando l'istruzione actor, come mostrato di seguito.

Codice
                            
Copia
Incorpora
sequenceDiagram actor Alice actor Bob Alice->>Bob: Hi Bob Bob->>Alice: Hi Alice

Alias

Puoi definire un alias usando as dopo la dichiarazione del partecipante

Codice
                            
Copia
Incorpora
sequenceDiagram participant A as Alice participant J as John A->>J: Hello John, how are you? J->>A: Great!

Creazione e distruzione dei partecipanti

I partecipanti possono essere creati e distrutti tramite messaggi. Pertanto, aggiungi un'istruzione di creazione o distruzione prima del messaggio.

                            
Copia
Incorpora
participant B A --> B: Hello

L'istruzione di creazione supporta la distinzione tra partecipanti e alias. Il mittente o il destinatario di un messaggio può essere distrutto, ma il destinatario può solo essere creato.

Codice
                            
Copia
Incorpora
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

Raggruppamento/Riquadro

I partecipanti possono essere raggruppati in riquadri verticali. Puoi definire il colore usando dei simboli (se non è definito, sarà trasparente).

                            
Copia
Incorpora
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
Informazioni

Se il nome del tuo gruppo è colorato, puoi forzarne la trasparenza:

                            
Copia
Incorpora
box transparent Aqua ... actors ... end
Codice
                            
Copia
Incorpora
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?

Messaggio

I messaggi possono essere visualizzati con una linea continua o tratteggiata.

Le linee possono essere continue o tratteggiate e supportano la terminazione con vari tipi di frecce, croci o punte aperte.

                            
Copia
Incorpora
[Actor][Arrow][Actor]:Message text

Dieci tipi di freccia standard

Tipo Descrizione
-> Linea continua senza freccia
--> Linea tratteggiata senza freccia
->> Linea continua con freccia
-->> Linea tratteggiata con freccia
<<->> Linea continua con freccia bidirezionale
<<-->> Linea tratteggiata con freccia bidirezionale
-x Linea continua con croce all'estremità
--x Linea tratteggiata con croce all'estremità
-) Linea continua con freccia vuota all'estremità (asincrona)
--) Linea tratteggiata con freccia vuota all'estremità (asincrona)

Attivazione

È possibile attivare e disattivare un attore; la disattivazione o l'attivazione può essere una dichiarazione dedicata:

Codice
                            
Copia
Incorpora
sequenceDiagram Alice->>Bob: Hello Bob, how are you? activate Alice Bob->>Alice: Hi Alice! deactivate Alice

Esiste anche una notazione abbreviata, ovvero aggiungere + o - dopo la freccia del messaggio.

Codice
                            
Copia
Incorpora
sequenceDiagram Alice->>+John: Hello John, how are you? John-->>-Alice: Great!

L'attivazione dello stesso attore può essere sovrapposta:

Codice
                            
Copia
Incorpora
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!

Commento

Puoi aggiungere commenti a un diagramma di sequenza. Puoi farlo con i seguenti simboli: Note[right of] o [left of] o [over][partecipante]: contenuto del commento

Codice
                            
Copia
Incorpora
sequenceDiagram participant John Note right of John: Text in note

Puoi anche creare commenti che coprono due partecipanti:

Codice
                            
Copia
Incorpora
sequenceDiagram Alice->John: Hello John, how are you? Note over Alice,John: A typical interaction

Carattere di nuova riga

Puoi aggiungere caratteri di nuova riga nei commenti e nei messaggi:

Codice
                            
Copia
Incorpora
sequenceDiagram Alice->John: Hello John,<br/>how are you? Note over Alice,John: A typical interaction<br/>But now in two lines

I caratteri di nuova riga nei nomi degli attori richiedono la definizione di un alias:

Codice
                            
Copia
Incorpora
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

Ciclo

In un diagramma di sequenza puoi esprimere un ciclo tramite i seguenti simboli.

                            
Copia
Incorpora
loop Loop text ... statements ... end

Vedi l'esempio seguente:

Codice
                            
Copia
Incorpora
sequenceDiagram Alice->John: Hello John, how are you? loop Every minute John-->Alice: Great! end

Alternativa

In un diagramma di sequenza puoi esprimere percorsi alternativi tramite simboli.

                            
Copia
Incorpora
alt Describing text... statements else statements end

或者如果存在可选序列:

                            
Copia
Incorpora
opt Describing text... statements end

Vedi l'esempio seguente:

Codice
                            
Copia
Incorpora
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

Parallelo

Le azioni che avvengono in parallelo possono essere rappresentate con i seguenti simboli.

Codice
                            
Copia
Incorpora
par Action 1 statements and Action 2 statements and Action N statements end

Vedi l'esempio seguente:

Codice
                            
Copia
Incorpora
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!

È anche possibile annidare blocchi paralleli.

Codice
                            
Copia
Incorpora
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

Sezione critica

Puoi mostrare le azioni che devono essere eseguite automaticamente condizionando le varie situazioni.

Questo si fa con i seguenti simboli:

                            
Copia
Incorpora
critical [Action that must be performed] ... statements ... option [Circumstance A] ... statements ... option [Circumstance B] ... statements ... end

Vedi l'esempio seguente:

Codice
                            
Copia
Incorpora
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

È anche possibile che non ci sia alcuna opzione.

Codice
                            
Copia
Incorpora
critical Establish a connection to the DB Service-->DB: connect end

Questo blocco critico può essere annidato e corrisponde all'istruzione par vista in precedenza.

Interruzione

Puoi indicare l'arresto di una sequenza nel flusso, di solito usato per modellare situazioni eccezionali.

Questo si fa con i seguenti simboli:

                            
Copia
Incorpora
break [something happened] ... statements ... end

Vedi l'esempio seguente:

Codice
                            
Copia
Incorpora
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

Evidenziazione dello sfondo

Puoi impostare un rettangolo di sfondo colorato per evidenziare il flusso, usando i seguenti simboli:

                            
Copia
Incorpora
rect COLOR ... content ... end

I colori sono definiti usando la sintassi rgb e rgba.

                            
Copia
Incorpora
rect rgb(0, 255, 0) ... content ... end
                            
Copia
Incorpora
rect rgba(0, 0, 255, .1) ... content ... end

Vedi l'esempio seguente:

Codice
                            
Copia
Incorpora
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.

Commento

Puoi inserire commenti in un diagramma di sequenza; l'editor li ignorerà. I commenti devono occupare una riga propria e devono iniziare con il doppio segno di percentuale %%. Qualsiasi testo dal commento fino al successivo carattere di nuova riga sarà considerato un commento, inclusa qualsiasi sintassi del diagramma.

Codice
                            
Copia
Incorpora
sequenceDiagram Alice->>John: Hello John, how are you? %% this is a comment John-->>Alice: Great!

Codifica di entità per l'escape dei caratteri

Puoi eseguire l'escape dei caratteri con la seguente sintassi.

Codice
                            
Copia
Incorpora
sequenceDiagram A->>B: I #9829; you! B->>A: I #9829; you #infin; times more!

I numeri forniti sono decimali, quindi (#) può essere codificato come (#35;); è supportato anche l'uso dei nomi di carattere HTML.

Poiché il punto e virgola può sostituire il carattere di nuova riga nella definizione dei marcatori, quando il testo di un messaggio contiene un punto e virgola devi usare (#59;).

Numerazione

Puoi allegare un numero di sequenza a ciascuna freccia in un diagramma di sequenza. Come mostrato di seguito:

Codice
                            
Copia
Incorpora
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!

Menu dei partecipanti

I partecipanti possono contenere menu a comparsa con link personalizzati verso pagine esterne. Ad esempio, se un attore rappresenta un servizio web, i link utili potrebbero includere un link alla dashboard di salute del servizio, un repository contenente il codice del servizio oppure un link a una pagina wiki che descrive il servizio.

Puoi configurarli aggiungendo una o più righe di link, nel formato seguente:

                            
Copia
Incorpora
link <actor>: <link-label> @ <link-url>
Codice
                            
Copia
Incorpora
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!

Sintassi avanzata del menu

Esiste una sintassi avanzata basata sul formato JSON. Se hai una buona padronanza del formato JSON, puoi usare anche questa.

Puoi configurarlo aggiungendo una riga di link nel seguente formato:

                            
Copia
Incorpora
links <actor>: <json-formatted link-name link-url pairs>

示例如下:

Codice
                            
Copia
Incorpora
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!