Saltar al contenido principal

Guía rápida de diagramas de flujo en Mermaid

Los diagramas de flujo conectan acciones y decisiones. Usa subgrafos para repartir responsabilidades o un diagrama de secuencia si lo principal son los mensajes entre sistemas.

Crear con el Editor de diagramas de flujo Mermaid →

Inicio rápido

Mantén ids estables y escribe las etiquetas entre comillas; las aristas conectan los ids.

Mermaid
flowchart LR
  D["Borrador de guía"] --> R{"¿Aprobado?"}
  R -->|Sí| P["Publicar guía"]
  R -->|No| D

Cargando…

Referencia de sintaxis

Referencia de sintaxis
SintaxisSignificado
flowchart / graph / LR / RL / TB / TD / BTDeclara el diagrama y la dirección; TD equivale a TB.
A[Text] / A(Text) / A([Text]) / A[[Text]] / A[(Text)]Notación clásica: rectángulo, rectángulo redondeado, estadio, subrutina y cilindro.
A((Text)) / A{Text} / A{{Text}} / A>Text] / A(((Text)))Notación clásica: círculo, rombo, hexágono, forma asimétrica y círculo doble.
A[/Text/] / A[\Text\] / A[/Text\] / A[\Text/]Paralelogramos y trapecios en ambas orientaciones.
A@{ shape: rect, label: "Text" }Selecciona un nombre canónico o alias del catálogo.
--> / --- / -.-> / -.- / ==> / === / ~~~Flechas, enlaces simples, discontinuos, gruesos e invisibles.
<--> / o--o / x--x / --o / --xPuntas bidireccionales, circulares y cruzadas.
A -->|Label| B / A -- Label --> B / A ----> BAñade texto o guiones para aumentar la distancia mínima entre niveles, sin fijar píxeles.
subgraph id [Label] / direction TB / endAgrupa nodos; las conexiones externas pueden anular la dirección interna.
classDef / class A,B name / A:::nameDefine y aplica estilos reutilizables.
style A / linkStyle 0 / e1@--> / class e1 nameEstiliza nodos, aristas por índice desde cero o aristas con id; estas pueden animarse.
click A href "URL" / click A callback "Tooltip"Los clics dependen del anfitrión y se desactivan en modo estricto.
A["`**Bold** and *italic*`"]Las cadenas Markdown permiten énfasis y ajuste automático.
A@{ icon: "fa:user", form: "square", pos: "t", h: 60 }Los iconos necesitan un paquete registrado; hay formas cuadradas, circulares y redondeadas.
A@{ img: "/favicon.svg", label: "Text", w: 60, h: 60, constraint: "on" }Las imágenes necesitan una URL accesible y admiten tamaño y proporción restringida.
config.layout: elk / config.flowchart.defaultRenderer: elkELK es opcional y debe instalarse y registrarse en el anfitrión.
%% / accTitle: / accDescr:Comentarios y descripciones accesibles.
@{ shape: rect } / proc / process / rectangleProceso
@{ shape: rounded } / eventEvento
@{ shape: stadium } / terminal / pillPunto terminal
@{ shape: fr-rect } / subprocess / subproc / framed-rectangle / subroutineSubproceso
@{ shape: cyl } / db / database / cylinderBase de datos
@{ shape: datastore } / data-storeAlmacén de datos
@{ shape: circle } / circInicio
@{ shape: bang } / bangExplosión
@{ shape: cloud } / cloudNube
@{ shape: diam } / decision / diamond / questionDecisión
@{ shape: hex } / hexagon / preparePreparación condicional
@{ shape: lean-r } / lean-right / in-outEntrada/salida de datos
@{ shape: lean-l } / lean-left / out-inEntrada/salida de datos
@{ shape: trap-b } / priority / trapezoid-bottom / trapezoidAcción prioritaria
@{ shape: trap-t } / manual / trapezoid-top / inv-trapezoidOperación manual
@{ shape: dbl-circ } / double-circleFin
@{ shape: text }Bloque de texto
@{ shape: notch-rect } / card / notched-rectangleTarjeta
@{ shape: lin-rect } / lined-rectangle / lined-process / lin-proc / shaded-processProceso rayado
@{ shape: sm-circ } / start / small-circleInicio
@{ shape: fr-circ } / stop / framed-circleFin
@{ shape: fork } / joinBifurcación/unión
@{ shape: hourglass } / hourglass / collateIntercalación
@{ shape: brace } / comment / brace-lComentario
@{ shape: brace-r }Comentario a la derecha
@{ shape: braces }Comentario entre llaves
@{ shape: bolt } / com-link / lightning-boltEnlace de comunicación
@{ shape: doc } / doc / documentDocumento
@{ shape: delay } / half-rounded-rectangleRetraso
@{ shape: h-cyl } / das / horizontal-cylinderAlmacenamiento de acceso directo
@{ shape: lin-cyl } / disk / lined-cylinderAlmacenamiento en disco
@{ shape: curv-trap } / curved-trapezoid / displayPantalla
@{ shape: div-rect } / div-proc / divided-rectangle / divided-processProceso dividido
@{ shape: tri } / extract / triangleExtracción
@{ shape: win-pane } / internal-storage / window-paneAlmacenamiento interno
@{ shape: f-circ } / junction / filled-circleUnión
@{ shape: notch-pent } / loop-limit / notched-pentagonLímite de bucle
@{ shape: flip-tri } / manual-file / flipped-triangleArchivo manual
@{ shape: sl-rect } / manual-input / sloped-rectangleEntrada manual
@{ shape: docs } / documents / st-doc / stacked-documentVarios documentos
@{ shape: st-rect } / procs / processes / stacked-rectangleVarios procesos
@{ shape: bow-rect } / stored-data / bow-tie-rectangleDatos almacenados
@{ shape: cross-circ } / summary / crossed-circleResumen
@{ shape: tag-doc } / tag-doc / tagged-documentDocumento etiquetado
@{ shape: tag-rect } / tagged-rectangle / tag-proc / tagged-processProceso etiquetado
@{ shape: flag } / paper-tapeCinta de papel
@{ shape: odd }Forma asimétrica
@{ shape: lin-doc } / lined-documentDocumento rayado

Formas y etiquetas

El catálogo incluye las 48 formas estándar del motor 11.15 y sus alias. Usa @{ shape: ... } para las nuevas; las formas clásicas siguen disponibles.

Mermaid
flowchart TB
  A@{ shape: sl-rect, label: "Introducir título" }
  B@{ shape: doc, label: "Documento en borrador" }
  C@{ shape: diam, label: "¿Completo?" }
  D@{ shape: cyl, label: "Archivo" }
  A --> B --> C
  C -->|Sí| D
  C -->|No| A

Cargando…

Subgrafos

La dirección interna puede ceder ante conexiones de nodos con el exterior. Enlaza subgrafos completos cuando sea importante mantenerla.

Mermaid
flowchart LR
  subgraph prep ["Preparación"]
    direction TB
    A["Esquema"] --> B["Borrador"]
  end
  subgraph review ["Revisión"]
    direction TB
    C["Comprobar"] --> D["Aprobar"]
  end
  prep --> review

Cargando…

Estilos y Markdown

classDef define estilos y class o ::: los aplica. style afecta a un nodo; linkStyle usa el índice de declaración y los ids permiten estilos por arista.

Mermaid
flowchart LR
  A["`**Guía** en borrador`"]:::focus e1@--> B["Revisión"]
  B --> C["Publicar"]
  classDef focus fill:#d3e5ff,stroke:#0070f3,color:#171717
  class B focus
  style C stroke-width:2px
  linkStyle 1 stroke:#0070f3,stroke-width:2px
  classDef edge stroke:#0070f3
  class e1 edge

Cargando…

Espaciado y motor de disposición

nodeSpacing y rankSpacing ajustan el diseño. ELK y los paquetes de iconos requieren registro por el anfitrión; las formas normales no necesitan esas extensiones.

Mermaid
---
config:
  flowchart:
    nodeSpacing: 35
    rankSpacing: 60
---
flowchart LR
  A["Redactar"] --> B["Revisión"] --> C["Publicar"]

Cargando…

Errores frecuentes

Dejar una forma abierta

Cierra los corchetes y entrecomilla la etiqueta.

Sintaxis incorrecta: ejemplo corregido abajo

flowchart LR
  A[Draft

Usar end como id

end cierra un subgrafo; elige otro id y usa end solo como etiqueta entre comillas.

Esperar clics en modo estricto

Esta web desactiva callbacks; usa los enlaces externos del editor.

Limitaciones

  • La disposición automática decide las posiciones exactas; los guiones no fijan píxeles.
  • Las conexiones externas pueden anular la dirección del subgrafo.
  • Los iconos necesitan paquetes, las imágenes recursos accesibles y ELK registro.

Preguntas frecuentes

¿Cómo elijo una forma nueva?
Usa A@{ shape: nombre, label: "Texto" } con un nombre o alias del catálogo.
¿Por qué se ignora la dirección del subgrafo?
Las conexiones de nodos internos con el exterior pueden hacer que el subgrafo herede la dirección global.
¿Cómo modifico una sola arista?
Usa linkStyle con un índice desde cero, o un id de arista con una clase visual.