Diagrama de flujo

Acerca de los diagramas de flujo

Un diagrama de flujo mapea los pasos de un proceso — decisiones, operaciones, entradas, salidas y los caminos entre ellos — usando un conjunto estandarizado de símbolos conectados por flechas. Los ingenieros los usan para especificar algoritmos; los analistas de negocio los usan para documentar flujos de trabajo; los equipos de calidad los usan para rastrear modos de fallo. Son los diagramas técnicos más universalmente entendidos en todas las industrias.

Schematex sigue las convenciones de símbolos de ISO 5807:1985 para formas de diagramas de flujo y usa un DSL compatible con Mermaid para que los diagramas de flujo de Mermaid existentes se transfieran directamente. Esta página documenta lo que el analizador acepta hoy.

flowchart·§
↘ preview
100%
Flowchart Flowchart with 9 nodes and 10 edges. start → validate validate → reserve: Yes Yes validate → notify: No No notify → done reserve → payment payment → ship: Yes Yes payment → cancel: No No ship → confirm confirm → done cancel → done New order received New order received Inventory available? Inventory available? Reserve items Reserve items Notify customer Notify customer Payment authorized? Payment authorized? Ship order Ship order Cancel & release Cancel & release Send confirmation email Send confirmation email End End
UTF-8 · LF · 12 lines · 377 chars✓ parsed·22.7 ms·10.4 KB SVG

1. Tu primer diagrama de flujo

El diagrama de flujo más pequeño y útil: una decisión con dos resultados.

flowchart·§
↘ preview
100%
Flowchart Flowchart with 5 nodes and 4 edges. A → B B → C: Yes Yes B → D: No No C → E Start Start File exists? File exists? Read file Read file Return error Return error Done Done
UTF-8 · LF · 5 lines · 109 chars✓ parsed·2.1 ms·6.5 KB SVG

Cuatro reglas cubren el 80% del uso:

  1. Comienza con flowchart seguido de una dirección: TD, LR, BT, o RL.
  2. Cada nodo es ID[Etiqueta] — los corchetes de forma determinan el tipo de nodo (ver §2).
  3. Conecta los nodos con -->. Agrega una etiqueta entre caracteres de barra vertical: -->|Yes|.
  4. Los nodos se crean automáticamente cuando se referencian por primera vez en un borde — pero las declaraciones explícitas permiten establecer formas y etiquetas de forma independiente.

Los comentarios comienzan con %% en su propia línea.


2. Formas de nodos

Cada forma de nodo se escribe como ID<corchetes>Etiqueta<corchetes>. El ID debe comenzar con una letra y puede contener letras, dígitos, _ y -.

SintaxisFormaUso típico
A[Label]RectánguloPaso de proceso, operación
A(Label)Rectángulo redondeadoSubproceso, paso suave
A([Label])Estadio (píldora)Terminal de inicio / fin
A{Label}DiamanteDecisión / condición
A{{Label}}HexágonoPreparación, configuración
A[[Label]]SubrutinaProceso predefinido
A[(Label)]CilindroBase de datos, almacenamiento
A((Label))CírculoConector, unión
A(((Label)))Círculo dobleEstado final
A[/Label/]ParalelogramoEntrada / salida
A[\Label\]Paralelogramo (alt)Operación manual
A[/Label\]TrapecioEntrada manual
A[\Label/]Trapecio (alt)Conector fuera de página
A>Label]AsimétricoEtiqueta, anotación
flowchart·§
↘ preview
100%
Flowchart Flowchart with 6 nodes and 6 edges. t → r r → d d → p: branch A branch A d → db: branch B branch B p → sub db → sub Terminal / stadium Terminal / stadium Rectangle process Rectangle process Diamond decision Diamond decision Parallelogram input Parallelogram input Cylinder database Cylinder database Subroutine Subroutine
UTF-8 · LF · 12 lines · 216 chars✓ parsed·2.5 ms·7.7 KB SVG

3. Bordes

Un borde conecta dos nodos. El símbolo de conector determina el estilo visual y si hay una etiqueta o punta de flecha presente.

3.1 Tipos de borde

flowchart·§
↘ preview
100%
Flowchart Flowchart with 14 nodes and 7 edges. A → B C → D E → F G → H I → J K → L M → N A A C C E E G G I I K K M M B B D D F F H H J J L L N N
UTF-8 · LF · 8 lines · 70 chars✓ parsed·3.2 ms·9.6 KB SVG
SintaxisEstiloFlechaUso típico
A --> BSólidoFlechaFlujo normal
A --- BSólidoNingunaAsociación, enlace no dirigido
A -.-> BPunteadoFlechaCamino opcional / asíncrono
A ==> BGruesoFlechaCamino crítico / principal
A <--> BSólidoAmbos extremosFlujo bidireccional
A --x BSólidoCruzCamino bloqueado / rechazado
A --o BSólidoCírculoAgregación / composición

3.2 Etiquetas de borde

Dos sintaxis adjuntan una etiqueta a un borde:

Etiqueta de barra — colocada entre caracteres | directamente después de la flecha:

A -->|Yes| B
A -.->|optional| B
A ==>|critical| B

Etiqueta en línea — texto colocado entre los guiones, antes del carácter de flecha:

A -- success --> B
A -- error --x C

Ambas producen resultados idénticos. La etiqueta de barra es más común al compartir un diagrama con herramientas Mermaid.

flowchart·§
↘ preview
100%
Flowchart Flowchart with 6 nodes and 5 edges. req → proc: valid valid req → err: invalid invalid proc → ok: success success proc → retry: timeout timeout retry → dead: max retries max retries Request received Request received Process Process Return 400 Return 400 Done Done Retry queue Retry queue Dead letter Dead letter
UTF-8 · LF · 7 lines · 208 chars✓ parsed·2.2 ms·8.1 KB SVG

3.3 Cadenas

Conecta tres o más nodos en una sola línea:

A --> B --> C --> D

Esto es equivalente a tres declaraciones de borde separadas.

3.4 Salida múltiple con &

Usa & para incluir múltiples nodos en cualquiera de los lados de una flecha. El analizador genera el producto cruzado completo de bordes:

A & B --> C        %% A→C and B→C
A --> B & C        %% A→B and A→C
A & B --> C & D    %% cuatro bordes: A→C, A→D, B→C, B→D
flowchart·§
↘ preview
100%
Flowchart Flowchart with 5 nodes and 6 edges. deploy → smoke deploy → health smoke → notify_slack: fail fail smoke → notify_email: fail fail health → notify_slack: fail fail health → notify_email: fail fail Deploy service Deploy service Smoke test Smoke test Health check Health check Slack alert Slack alert Email alert Email alert
UTF-8 · LF · 8 lines · 205 chars✓ parsed·1.2 ms·7.6 KB SVG

4. Subgráficas

Una subgraph agrupa nodos relacionados en un clúster etiquetado con un borde visible.

subgraph "Title"
  A --> B
end

Se aceptan tres formas de encabezado de subgráfica:

FormaIDEtiqueta
subgraph "My Group"generado automáticamenteMy Group
subgraph sg1 "My Group"sg1My Group
subgraph sg1 [My Group]sg1My Group

Las subgráficas pueden tener su propia dirección de override:

subgraph sg1 "Frontend"
  direction LR
  ui[React App] --> api[API Client]
end
flowchart·§
↘ preview
100%
Flowchart Flowchart with 6 nodes and 5 edges. Ingestion Storage raw → parse parse → enrich enrich → dw enrich → cache dw → report Raw events Raw events Parse & validate Parse & validate Enrich Enrich Data warehouse Data warehouse Redis cache Redis cache Generate report Generate report
UTF-8 · LF · 12 lines · 261 chars✓ parsed·2.9 ms·7.4 KB SVG

5. Estilo

5.1 Clases semánticas

Asigna nombres de clase CSS a los nodos para la agrupación visual a nivel de tema. Las clases se definen con classDef y se aplican con class. La sintaxis de clase en línea de Mermaid también es aceptada: A[Start]:::critical.

classDef danger fill:#f9c,stroke:#c00
classDef safe fill:#cfc,stroke:#090
class errorNode danger
class successNode safe
B[Review]:::danger

5.2 Overrides de estilo por nodo

style nodeId fill:#f9f,stroke:#333,stroke-width:4px

Acepta nombres de propiedades CSS estándar. Múltiples propiedades se separan con comas.

5.3 Overrides de estilo por borde

linkStyle apunta a bordes por su índice de declaración (basado en 0, en el orden en que aparecen en el código fuente). Múltiples índices separados por comas aplican las mismas propiedades a varios bordes:

flowchart TD
  A --> B
  B ==> C
  B -.-> D
  C --> E
  D --> E
  linkStyle 1 stroke:#d32f2f,stroke-width:4px
  linkStyle 2,4 stroke:#f57c00,stroke-dasharray:5 5

Usa esto para resaltar un camino crítico o distinguir un flujo alternativo.

5.4 Formato de etiquetas en línea

Las etiquetas de nodo aceptan tres etiquetas de formato en línea:

EtiquetaEfecto
<br/> o <br>Salto de línea
<b>…</b>Negrita
<i>…</i>Cursiva
flowchart TD
  M1["0 \| 0<br/><b>START</b>"]
  M2["4 \| 4<br/><b>Phase 1</b><br/><i>est. 4h</i>"]
  M1 --> M2

Las etiquetas pueden anidarse y mezclarse a mitad de línea (Hello <b>world</b>!). Las etiquetas de borde son de una sola línea y actualmente no admiten estas etiquetas.


6. Etiquetas y comentarios

  • Dirección: flowchart TD — primer token después de flowchart o graph. TD y TB son equivalentes.
  • Título: flowchart LR "My diagram" — cadena entre comillas opcional después de la dirección.
  • Etiquetas de borde: sintaxis de barra -->|etiqueta| o en línea -- etiqueta -->.
  • Comentarios: %% al inicio de una línea (después de espacios en blanco iniciales).
flowchart LR
%% This is a comment — ignored by the parser
A[Step 1] --> B[Step 2]  %% inline %% is NOT supported — only line-start %%

7. Palabras reservadas y escape

Reservadas al inicio de línea: flowchart, graph (encabezado), subgraph, end, direction, class, classDef, style, linkStyle.

Caracteres reservados en ID: los IDs coinciden con [A-Za-z0-9_-] comenzando con una letra. No uses espacios ni caracteres de operador en los IDs de nodo.

Tokens de operador a evitar dentro de IDs: -->, ---, -.->, ==>, <-->, --x, --o, |, &.

Etiquetas con caracteres especiales: la etiqueta es todo lo que está dentro de los corchetes de forma. Los caracteres especiales son admitidos dentro de las etiquetas tal cual — los corchetes/llaves que serían ambiguos se cierran con el token de cierre correspondiente.


8. Errores comunes

Lo que escribisteEl analizador diceCorrección
flowchart sin direcciónLa dirección tiene por defecto TBAgrega una dirección: flowchart TD
A --> B antes de declarar formasFunciona — los nodos se crean como rectángulos con el ID como etiquetaDeclara explícitamente cuando necesitas una forma que no sea rect: A([Start])
A[Label with [brackets]]El ] interno cierra la forma antes de tiempoEvita corchetes anidados en etiquetas
subgraph My Group (sin comillas, con espacio)El analizador toma My como ID de subgráfica, Group como token desconocidoEntrecomilla: subgraph "My Group"
Comentario %% comment a mitad de línea tras códigoLos comentarios en línea no son admitidos; %% debe estar al inicio de la líneaMueve los comentarios a su propia línea
A --> B --> C mezclado con A --> BLas cadenas son aditivas — pueden aparecer bordes duplicadosUsa cadenas O líneas separadas, no ambas para el mismo par
direction LR fuera de una subgráficaIgnorado silenciosamente — el override de direction solo aplica dentro de subgraph … endEstablece la dirección en la línea de encabezado del flowchart

9. Gramática (EBNF)

document       = header (blank | comment | subgraph-block | direction-stmt
                        | class-stmt | classdef-stmt | style-stmt
                        | linkstyle-stmt | chain-stmt)*

header         = ("flowchart" | "graph") ( WS direction )? ( WS title )? NEWLINE
direction      = "TD" | "TB" | "BT" | "LR" | "RL"
title          = '"' any-char-but-quote* '"' | bare-word

subgraph-block = "subgraph" ( WS subgraph-header )? NEWLINE
                   ( WS? "direction" WS direction NEWLINE )?
                   statement*
                 "end" NEWLINE
subgraph-header = id WS "[" label "]"
                | id WS quoted-string
                | quoted-string
                | id

chain-stmt     = node-group ( WS edge-op WS pipe-label? WS node-group )* NEWLINE
node-group     = node-ref ( WS "&" WS node-ref )*
node-ref       = id shape-suffix?
shape-suffix   = "[" label "]"          %% rect
               | "(" label ")"          %% round
               | "([" label "])"        %% stadium
               | "{" label "}"          %% diamond
               | "{{" label "}}"        %% hexagon
               | "[[" label "]]"        %% subroutine
               | "[(" label ")]"        %% cylinder
               | "((" label "))"        %% circle
               | "(((" label ")))"      %% double-circle
               | "[/" label "/]"        %% parallelogram
               | "[\" label "\]"        %% parallelogram-alt
               | "[/" label "\]"        %% trapezoid
               | "[\" label "/]"        %% trapezoid-alt
               | ">" label "]"          %% asymmetric

edge-op        = "-->" | "---" | "-."-".->" | "==>" | "<-->" | "--x" | "--o"
               | inline-label variants of the above
pipe-label     = "|" text "|"

class-stmt     = "class" WS id-list WS class-name NEWLINE
               | node-ref ":::" class-name NEWLINE         # Mermaid inline form
classdef-stmt  = "classDef" WS class-name WS css-props NEWLINE
style-stmt     = "style" WS id WS css-props NEWLINE
linkstyle-stmt = "linkStyle" WS index-list WS css-props NEWLINE
index-list     = NUMBER ( "," NUMBER )* | "default"

comment        = "%%" any NEWLINE
id             = [A-Za-z] [A-Za-z0-9_-]*

Fuente autoritativa: src/diagrams/flowchart/parser.ts. Si esto diverge del analizador, el analizador tiene precedencia — por favor abre un issue.


10. Conformidad con estándares

Los diagramas de flujo de Schematex siguen las convenciones de símbolos de ISO 5807:1985. La sintaxis del DSL es intencionalmente compatible con Mermaid flowchart para que los diagramas creados en una herramienta puedan usarse en la otra.

Lo que está implementado hoy:

  • ✅ Las cinco direcciones: TD, TB, BT, LR, RL
  • ✅ 13 formas de nodo (desde rect hasta asimétrico)
  • ✅ 7 tipos de borde: sólido, sin flecha, punteado, grueso, bidireccional, cruzado, extremo redondeado
  • ✅ Etiquetas de barra (-->|text|) y etiquetas en línea (-- text -->)
  • ✅ Cadenas de bordes (A --> B --> C)
  • ✅ Salida múltiple con & (bordes de producto cruzado)
  • ✅ Subgráficas con ID, etiqueta y dirección por subgráfica opcionales
  • ✅ Agrupación semántica classDef / class
  • ✅ Clases de nodo en línea de Mermaid: A[Label]:::className
  • ✅ Overrides CSS de style por nodo
  • ✅ Renderizado de linkStylelinkStyle 1,5,6 stroke:#f00,stroke-width:4px aplica CSS a los bordes correspondientes por orden de declaración
  • <b> / <i> en línea en etiquetas de nodo (se combina con saltos de línea <br/> existentes)
  • ⏳ Renderizado de forma para las 13 formas — M1 renderiza completamente rect/round/stadium/diamond/parallelogram; las formas restantes retroceden a rect
  • ⏳ Variante de diseño de carriles de natación

Referencias:

  • ISO 5807:1985 — Information processing — Documentation symbols and conventions for data, program and system flowcharts, program network charts and system resources charts
  • Documentación de diagrama de flujo Mermaid — https://mermaid.js.org/syntax/flowchart.html

11. Hoja de ruta

Planificado — aún no parseable. No uses esto en DSL generado hoy; el analizador lo rechazará o ignorará.

  • Renderizado completo de formas para las 13 formas — subrutina, cilindro, círculo, círculo doble, hexágono, asimétrico, trapecio y paralelogramo-alt retroceden a rect en M1.
  • Diseño de carril de natación — bandas horizontales que agrupan nodos por actor o sistema (subgraph de Mermaid con direction TB dentro de la raíz LR).
  • Bloque de inicialización %%{init: {…}}%% — bloque de inicialización de tema y diseño compatible con Mermaid.
  • Formato markdown en etiquetas — sintaxis markdown **bold** / *italic* (el HTML <b>/<i> ya funciona — ver §5).

Síguelo en los issues de GitHub si necesitas alguna de estas características antes.


Ejemplos relacionados

Escenarios listos para usar de la galería de ejemplos:

flowchart·§ ISO 5807:1985
Flowchart Flowchart with 9 nodes and 10 edges. start → validate validate → reserve: Yes Yes validate → notify: No No notify → done reserve → payment payment → ship: Yes Yes payment → cancel: No No ship → confirm confirm → done cancel → done New order received New order received Inventory available? Inventory available? Reserve items Reserve items Notify customer Notify customer Payment authorized? Payment authorized? Ship order Ship order Cancel & release Cancel & release Send confirmation email Send confirmation email End End
E-commerce order fulfillment
Flowchart mapping the full order-to-delivery path with inventory and payment decision gates, exception handling, and a single End terminal.
saas
flowchart·§ ISO 5807:1985
Flowchart Flowchart with 14 nodes and 16 edges. commit → build build → unit unit → fail: No No unit → scan: Yes Yes scan → vuln vuln → fail: Yes Yes vuln → stage: No No stage → smoke smoke → fail: No No smoke → approve: Yes Yes approve → wait: No No approve → prod: Yes Yes prod → health health → done: Yes Yes health → rollback: No No rollback → done Push to main Push to main Build artifact Build artifact Unit tests pass? Unit tests pass? Security scan Security scan High-severity CVEs? High-severity CVEs? Deploy to staging Deploy to staging Smoke tests green? Smoke tests green? Fail build Fail build Manual approval? Manual approval? Await approver Await approver Deploy to production Deploy to production Post-deploy health check? Post-deploy health check? Automatic rollback Automatic rollback Release complete Release complete
CI/CD pipeline with gated deploy
Flowchart of a trunk-based CI/CD pipeline — build, test, security scan, staging gate, and production deploy with automatic rollback on failed smoke tests.
saas

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.