Tipo de diagrama de flujo
Expresión gráfica
Mapas mentales
Expresión estructurada
Notas
Expresión eficiente

Diagrama de secuenciaSintaxis

Diagrama de secuencia

Mermaid puede renderizar diagramas de secuencia. El diagrama de secuencia es un tipo de diagrama de interacción que muestra cómo los distintos procesos operan entre sí y el orden de las operaciones.

Código
                            
Copiar
Insertar
sequenceDiagram Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later!
Información

Nota sobre los nodos: debido a cómo está escrito el lenguaje Mermaid, la palabra "end" rompe todo el gráfico. Si necesitas usar "end", debes encerrar la palabra "end" entre paréntesis (), comillas dobles "", llaves {} o corchetes [], es decir: (end), [end], {end}.

Sintaxis

Participante

Los participantes se muestran en el orden en que aparecen en el texto fuente del gráfico. A veces puede que quieras mostrar los participantes en un orden distinto al de su aparición en el primer mensaje; puedes especificar el orden de aparición de los participantes de las siguientes formas:

Código
                            
Copiar
Insertar
sequenceDiagram participant Alice participant Bob Bob->>Alice: Hi Alice Alice->>Bob: Hi Bob

角色

Si quieres usar el símbolo de actor en lugar de un rectángulo con texto, puedes hacerlo con la sentencia de actor, como se muestra a continuación.

Código
                            
Copiar
Insertar
sequenceDiagram actor Alice actor Bob Alice->>Bob: Hi Bob Bob->>Alice: Hi Alice

Alias

Puedes definir un alias con as después de la declaración del participante

Código
                            
Copiar
Insertar
sequenceDiagram participant A as Alice participant J as John A->>J: Hello John, how are you? J->>A: Great!

Creación y destrucción de participantes

Los participantes pueden crearse y destruirse mediante mensajes. Para ello, añade la instrucción de creación o destrucción delante del mensaje.

                            
Copiar
Insertar
participant B A --> B: Hello

La instrucción de creación admite distinguir entre participantes y alias. El emisor o el receptor del mensaje pueden destruirse, pero el receptor solo puede crearse.

Código
                            
Copiar
Insertar
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

Agrupación/caja

Los participantes pueden agruparse en cajas verticales. Puedes usar un símbolo para definir el color (si no se define, será transparente).

                            
Copiar
Insertar
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
Información

Si el nombre de tu grupo es de color, puedes forzar ese color a transparente:

                            
Copiar
Insertar
box transparent Aqua ... actors ... end
Código
                            
Copiar
Insertar
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?

Mensaje

El mensaje puede mostrarse con línea continua o con línea discontinua.

La línea puede ser continua o discontinua, y puede terminar con varios tipos de flechas, cruces o flechas abiertas.

                            
Copiar
Insertar
[Actor][Arrow][Actor]:Message text

Diez tipos de flecha estándar

Tipo Descripción
-> Línea continua sin flecha
--> Línea discontinua sin flecha
->> Línea continua con flecha
-->> Línea discontinua con flecha
<<->> Línea continua con flecha bidireccional
<<-->> Línea discontinua con flecha bidireccional
-x Línea continua con cruz en el extremo
--x Línea discontinua con cruz en el extremo
-) Línea continua con flecha hueca al final (asíncrona)
--) Línea discontinua con flecha hueca al final (asíncrona)

Activación

Se puede activar y desactivar un actor; la desactivación o activación puede ser una declaración dedicada:

Código
                            
Copiar
Insertar
sequenceDiagram Alice->>Bob: Hello Bob, how are you? activate Alice Bob->>Alice: Hi Alice! deactivate Alice

También hay una notación abreviada: añadir + o - después de la flecha del mensaje.

Código
                            
Copiar
Insertar
sequenceDiagram Alice->>+John: Hello John, how are you? John-->>-Alice: Great!

Las activaciones del mismo actor pueden superponerse:

Código
                            
Copiar
Insertar
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!

Comentario

Puedes añadir comentarios a un diagrama de secuencia. Se puede hacer con los siguientes símbolos: Note[right of] o [left of] o [over][participante]: contenido del comentario

Código
                            
Copiar
Insertar
sequenceDiagram participant John Note right of John: Text in note

También puedes crear un comentario que abarque dos participantes:

Código
                            
Copiar
Insertar
sequenceDiagram Alice->John: Hello John, how are you? Note over Alice,John: A typical interaction

Salto de línea

Puedes añadir saltos de línea en comentarios y mensajes:

Código
                            
Copiar
Insertar
sequenceDiagram Alice->John: Hello John,<br/>how are you? Note over Alice,John: A typical interaction<br/>But now in two lines

Los saltos de línea en el nombre del actor requieren definir un alias:

Código
                            
Copiar
Insertar
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

Bucle

En un diagrama de secuencia, un bucle se puede expresar con los siguientes símbolos.

                            
Copiar
Insertar
loop Loop text ... statements ... end

Consulta el siguiente ejemplo:

Código
                            
Copiar
Insertar
sequenceDiagram Alice->John: Hello John, how are you? loop Every minute John-->Alice: Great! end

Alternativa

En un diagrama de secuencia, una ruta alternativa se puede expresar con símbolos.

                            
Copiar
Insertar
alt Describing text... statements else statements end

或者如果存在可选序列:

                            
Copiar
Insertar
opt Describing text... statements end

Consulta el siguiente ejemplo:

Código
                            
Copiar
Insertar
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

Paralelo

Las acciones que ocurren en paralelo se pueden representar con los siguientes símbolos.

Código
                            
Copiar
Insertar
par Action 1 statements and Action 2 statements and Action N statements end

Consulta el siguiente ejemplo:

Código
                            
Copiar
Insertar
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!

También puedes anidar bloques paralelos.

Código
                            
Copiar
Insertar
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

Región crítica

Puedes mostrar las operaciones que deben ejecutarse automáticamente condicionando las distintas situaciones.

Esto se hace con los siguientes símbolos:

                            
Copiar
Insertar
critical [Action that must be performed] ... statements ... option [Circumstance A] ... statements ... option [Circumstance B] ... statements ... end

Consulta el siguiente ejemplo:

Código
                            
Copiar
Insertar
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

También es posible que no haya ninguna opción.

Código
                            
Copiar
Insertar
critical Establish a connection to the DB Service-->DB: connect end

Este bloque crítico también puede anidarse, de forma equivalente a la sentencia par vista arriba.

Interrupción

Puedes indicar la parada de una secuencia en el flujo; normalmente se usa para modelar situaciones excepcionales.

Esto se hace con los siguientes símbolos:

                            
Copiar
Insertar
break [something happened] ... statements ... end

Consulta el siguiente ejemplo:

Código
                            
Copiar
Insertar
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

Resaltado de fondo

Puedes establecer un rectángulo de fondo de color para resaltar el flujo, y se hace con los siguientes símbolos:

                            
Copiar
Insertar
rect COLOR ... content ... end

El color se define con la sintaxis rgb y rgba.

                            
Copiar
Insertar
rect rgb(0, 255, 0) ... content ... end
                            
Copiar
Insertar
rect rgba(0, 0, 255, .1) ... content ... end

Consulta el siguiente ejemplo:

Código
                            
Copiar
Insertar
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.

Comentario

Puedes introducir comentarios en el diagrama de secuencia; el editor los ignorará. El comentario debe ocupar una línea propia y empezar con doble signo de porcentaje %%. Todo el texto desde el inicio del comentario hasta el siguiente salto de línea se considerará comentario, incluida cualquier sintaxis del gráfico.

Código
                            
Copiar
Insertar
sequenceDiagram Alice->>John: Hello John, how are you? %% this is a comment John-->>Alice: Great!

Codificación de entidades para escapar caracteres

Puedes escapar caracteres con la siguiente sintaxis.

Código
                            
Copiar
Insertar
sequenceDiagram A->>B: I #9829; you! B->>A: I #9829; you #infin; times more!

El número indicado es decimal, por lo que (#) se puede codificar como (#35;); también se admite el uso de nombres de caracteres HTML.

Como el punto y coma puede sustituir al salto de línea para definir marcas, cuando el texto del mensaje contenga un punto y coma necesitas usar (#59;).

Numeración

Puedes adjuntar un número de secuencia a cada flecha del diagrama de secuencia. Como se muestra a continuación:

Código
                            
Copiar
Insertar
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!

Menú de participantes

Los participantes pueden incluir un menú emergente con enlaces personalizados a páginas externas. Por ejemplo, si un actor representa un servicio de red, los enlaces útiles podrían incluir un enlace al panel de estado del servicio, el repositorio que contiene el código del servicio o un enlace a la página wiki que describe el servicio.

Se puede configurar añadiendo una o varias líneas de enlace, con el siguiente formato:

                            
Copiar
Insertar
link <actor>: <link-label> @ <link-url>
Código
                            
Copiar
Insertar
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!

Sintaxis avanzada de menú

Existe una sintaxis avanzada que se basa en el formato JSON. Si dominas el formato JSON, también puedes usarla.

Se puede configurar añadiendo una línea de enlace con el siguiente formato:

                            
Copiar
Insertar
links <actor>: <json-formatted link-name link-url pairs>

示例如下:

Código
                            
Copiar
Insertar
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!