Fluxograma

Sobre fluxogramas

Um fluxograma mapeia as etapas de um processo — decisões, operações, entradas, saídas e os caminhos entre elas — usando um conjunto padronizado de símbolos conectados por setas. Engenheiros os utilizam para especificar algoritmos; analistas de negócios, para documentar fluxos de trabalho; equipes de qualidade, para rastrear modos de falha. São uns dos diagramas técnicos mais universalmente compreendidos em todos os setores.

O Schematex segue as convenções de símbolos do ISO 5807:1985 para formas de fluxograma e usa uma DSL compatível com Mermaid para que fluxogramas Mermaid existentes possam ser transferidos diretamente. Esta página documenta o que o parser aceita atualmente.

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·1.7 ms·10.4 KB SVG

1. Seu primeiro fluxograma

O menor fluxograma útil: uma decisão com dois 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·0.8 ms·6.5 KB SVG

Quatro regras cobrem 80% do uso:

  1. Comece com flowchart seguido de uma direção: TD, LR, BT ou RL.
  2. Cada nó é ID[Rótulo] — os colchetes de forma determinam o tipo do nó (veja §2).
  3. Conecte nós com -->. Adicione um rótulo entre caracteres de pipe: -->|Yes|.
  4. Os nós são criados automaticamente quando referenciados pela primeira vez em uma aresta — mas declarações explícitas permitem definir formas e rótulos de forma independente.

Comentários começam com %% em sua própria linha.


2. Formas de nós

Cada forma de nó é escrita como ID<colchetes>Rótulo<colchetes>. O ID deve começar com uma letra e pode conter letras, dígitos, _ e -.

SintaxeFormaUso típico
A[Label]RetânguloEtapa de processo, operação
A(Label)Retângulo arredondadoSub-processo, etapa suave
A([Label])Estádio (pílula)Terminal de início / fim
A{Label}LosangoDecisão / condição
A{{Label}}HexágonoPreparação, configuração
A[[Label]]Sub-rotinaProcesso predefinido
A[(Label)]CilindroBanco de dados, armazenamento
A((Label))CírculoConector, junção
A(((Label)))Círculo duploEstado final
A[/Label/]ParalelogramoEntrada / saída
A[\Label\]Paralelogramo (alt)Operação manual
A[/Label\]TrapézioEntrada manual
A[\Label/]Trapézio (alt)Conector fora de página
A>Label]AssimétricoTag, anotação
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·3.7 ms·7.7 KB SVG

3. Arestas

Uma aresta conecta dois nós. O símbolo do conector determina o estilo visual e se há rótulo ou ponta de seta.

3.1 Tipos de aresta

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·1.0 ms·9.6 KB SVG
SintaxeEstiloSetaUso típico
A --> BSólidaSetaFluxo normal
A --- BSólidaNenhumaAssociação, link não direcionado
A -.-> BPontilhadaSetaCaminho opcional / assíncrono
A ==> BGrossaSetaCaminho crítico / primário
A <--> BSólidaAmbas as pontasFluxo bidirecional
A --x BSólidaCruzCaminho bloqueado / rejeitado
A --o BSólidaCírculoAgregação / composição

3.2 Rótulos de aresta

Duas sintaxes adicionam um rótulo a uma aresta:

Rótulo pipe — colocado entre caracteres | diretamente após a seta:

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

Rótulo inline — texto colocado entre os traços, antes do caractere de seta:

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

Ambos produzem resultados idênticos. O rótulo pipe é mais comum ao compartilhar um diagrama com ferramentas 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·1.0 ms·8.1 KB SVG

3.3 Cadeias

Conecte três ou mais nós em uma única linha:

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

Isso é equivalente a três declarações de aresta separadas.

3.4 Fan-out com &

Use & para incluir vários nós em qualquer lado de uma seta. O parser gera o produto cruzado completo de arestas:

A & B --> C        %% A→C e B→C
A --> B & C        %% A→B e A→C
A & B --> C & D    %% quatro arestas: 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·0.7 ms·7.6 KB SVG

4. Subgráficos

Um subgraph agrupa nós relacionados em um cluster rotulado com uma borda visível.

subgraph "Title"
  A --> B
end

Três formas de cabeçalho de subgráfico são aceitas:

FormaIDRótulo
subgraph "My Group"gerado automaticamenteMy Group
subgraph sg1 "My Group"sg1My Group
subgraph sg1 [My Group]sg1My Group

Subgráficos podem ter sua própria substituição de direction:

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·1.6 ms·7.4 KB SVG

5. Estilização

5.1 Classes semânticas

Atribua nomes de classes CSS aos nós para agrupamento visual em nível de tema. As classes são definidas com classDef e aplicadas com class. A sintaxe de classe inline do Mermaid também é aceita: 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 Substituições de estilo por nó

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

Aceita nomes de propriedades CSS padrão. Múltiplas propriedades são separadas por vírgula.

5.3 Substituições de estilo por aresta

linkStyle tem como alvo arestas pelo seu índice de declaração (base 0, na ordem em que aparecem no fonte). Índices múltiplos separados por vírgula aplicam as mesmas propriedades a várias arestas:

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

Use isso para destacar um caminho crítico ou distinguir um fluxo alternativo.

5.4 Formatação inline de rótulos

Rótulos de nós aceitam três tags de formatação inline:

TagEfeito
<br/> ou <br>Quebra de linha
<b>…</b>Negrito
<i>…</i>Itálico
flowchart TD
  M1["0 \| 0<br/><b>START</b>"]
  M2["4 \| 4<br/><b>Phase 1</b><br/><i>est. 4h</i>"]
  M1 --> M2

Tags podem ser aninhadas e misturadas no meio de uma linha (Hello <b>world</b>!). Rótulos de arestas são de linha única e atualmente não suportam essas tags.


6. Rótulos e comentários

  • Direção: flowchart TD — primeiro token após flowchart ou graph. TD e TB são equivalentes.
  • Título: flowchart LR "My diagram" — string entre aspas opcional após a direção.
  • Rótulos de aresta: sintaxe pipe -->|label| ou inline -- label -->.
  • Comentários: %% no início de uma linha (após espaços em branco iniciais).
flowchart LR
%% Este é um comentário — ignorado pelo parser
A[Step 1] --> B[Step 2]  %% %% inline NÃO é suportado — apenas %% no início da linha

7. Palavras reservadas e escape

Reservadas no início de linha: flowchart, graph (cabeçalho), subgraph, end, direction, class, classDef, style, linkStyle.

Caracteres reservados em IDs: IDs correspondem a [A-Za-z0-9_-] começando com uma letra. Não use espaços ou caracteres de operador em IDs de nós.

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

Rótulos com caracteres especiais: O rótulo é tudo que está dentro dos colchetes de forma. Caracteres especiais são suportados dentro de rótulos como estão — colchetes/chaves que seriam ambíguos são fechados pelo token de fechamento correspondente.


8. Erros comuns

Você escreveuO parser dizCorreção
flowchart sem direçãoDireção padrão para TBAdicione uma direção: flowchart TD
A --> B antes de declarar formasFunciona — nós criados como retângulos com o ID como rótuloDeclare explicitamente quando precisar de uma forma não retangular: A([Start])
A[Label with [brackets]]] interno fecha a forma prematuramenteEvite colchetes aninhados em rótulos
subgraph My Group (sem aspas, com espaço)O parser toma My como id do subgráfico, Group como token desconhecidoUse aspas: subgraph "My Group"
%% comment no meio de linha após códigoComentários inline não são suportados; %% deve estar no início da linhaMova comentários para sua própria linha
A --> B --> C misturado com A --> BCadeias são aditivas — arestas duplicadas podem aparecerUse cadeias OU linhas separadas, não ambas para o mesmo par
direction LR fora de um subgráficoSilenciosamente ignorado — substituição de direction só se aplica dentro de subgraph … endDefina a direção na linha de cabeçalho do 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_-]*

Fonte autoritativa: src/diagrams/flowchart/parser.ts. Se houver divergência com o parser, o parser prevalece — abra uma issue.


10. Conformidade com o padrão

Os fluxogramas do Schematex seguem as convenções de símbolos do ISO 5807:1985. A sintaxe DSL é intencionalmente compatível com Mermaid flowchart para que diagramas criados em uma ferramenta possam ser usados na outra.

O que está implementado hoje:

  • ✅ Todas as cinco direções: TD, TB, BT, LR, RL
  • ✅ 13 formas de nó (de rect até assimétrico)
  • ✅ 7 tipos de aresta: sólida, sem seta, pontilhada, grossa, bidirecional, cruzada, com extremidade redonda
  • ✅ Rótulos pipe (-->|text|) e rótulos inline (-- text -->)
  • ✅ Cadeias de arestas (A --> B --> C)
  • ✅ Fan-out com & (arestas em produto cruzado)
  • ✅ Subgráficos com id opcional, rótulo e direção por subgráfico
  • ✅ Agrupamento semântico com classDef / class
  • ✅ Classes inline de nós Mermaid: A[Label]:::className
  • ✅ Substituições CSS style por nó
  • ✅ Renderização linkStylelinkStyle 1,5,6 stroke:#f00,stroke-width:4px aplica CSS às arestas correspondentes por ordem de declaração
  • <b> / <i> inline em rótulos de nós (combinados com <br/> existente para quebras de linha)
  • ⏳ Renderização de forma para todas as 13 formas — M1 renderiza completamente rect/round/stadium/diamond/parallelogram; as formas restantes recuam para rect
  • ⏳ Variante de layout com swim-lane

Referências:

  • ISO 5807:1985 — Information processing — Documentation symbols and conventions for data, program and system flowcharts, program network charts and system resources charts
  • Documentação de flowchart do Mermaid — https://mermaid.js.org/syntax/flowchart.html

11. Roadmap

Planejado — ainda não parseável. Não use esses recursos em DSL gerado hoje; o parser irá rejeitá-los ou ignorá-los.

  • Renderização completa de forma para todas as 13 formas — subroutine, cylinder, circle, double-circle, hexagon, asymmetric, trapezoid e parallelogram-alt recuam para rect no M1.
  • Layout com swim-lane — faixas horizontais agrupando nós por ator ou sistema (Mermaid subgraph com direction TB dentro de raiz LR).
  • Bloco %%{init: {…}}%% — bloco de inicialização de tema e layout compatível com Mermaid.
  • Formatação Markdown em rótulos — sintaxe markdown **bold** / *italic* (HTML <b>/<i> já funciona — veja §5).

Acompanhe as issues do GitHub se precisar de algum desses recursos mais cedo.


Exemplos relacionados

Cenários prontos para uso da galeria de exemplos:

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.