Os três tipos de fluxo que uma analista produz
| Tipo | Quando usar | Mermaid |
|---|---|---|
| Fluxo de negócio | Documentar o processo independente do sistema, com swimlanes por ator | flowchart TD |
| Diagrama de sequência | Troca de mensagens entre sistema, usuário e serviços externos | sequenceDiagram |
| Diagrama de estado | Ciclo de vida de uma entidade: pedido, contrato, ticket | stateDiagram-v2 |
Fluxo de negócio — fluxograma
([Texto])[Texto]{Texto?}subgraph NomeAtorflowchart TD
subgraph Vendedor
A([Início]) --> B[Preenche dados do pedido]
B --> C[Adiciona itens e quantidades]
C --> D[Aplica desconto]
D --> E{Desconto > 15%?}
E -->|Sim| F[Solicita aprovação gerencial]
E -->|Não| G[Clica em Confirmar Pedido]
F --> G
end
subgraph Sistema
G --> H{Valida estoque}
H -->|Insuficiente| I[Alerta de pendência de estoque]
H -->|Disponível| J{Valor total >= R$10.000?}
I --> J
J -->|Sim| K[Status: Aguardando aprovação]
J -->|Não| L[Status: Aprovado automaticamente]
K --> M[Notifica gestor por e-mail]
L --> N[Notifica cliente por e-mail]
M --> O([Fim — aguardando gestor])
N --> P([Fim — pedido confirmado])
end
Diagrama de sequência
Mostra quem fala com quem, em que ordem e com quais dados. É o mais técnico dos três, mas também o mais valioso para o DEV — especialmente em integrações.
| Elemento | Sintaxe Mermaid | Representa |
|---|---|---|
| Ator humano | actor Nome | Pessoa que interage com o sistema |
| Sistema/serviço | participant Nome | Sistema, API, banco, serviço |
| Chamada (request) | A->>B: mensagem | Seta sólida — envio de dado ou ação |
| Resposta (response) | B-->>A: mensagem | Seta tracejada — retorno |
| Condicional | alt Condição … else … end | Bloco de decisão com ramificações |
| Opcional | opt Condição … end | Bloco que pode ou não acontecer |
| Nota | Note over A,B: texto | Comentário contextual no diagrama |
sequenceDiagram
actor Usuario as Usuário
participant App as Sistema (Front)
participant Auth as Serviço de Auth
participant DB as Banco de Dados
participant Email as Serviço de E-mail
Usuario->>App: Informa CPF + senha
App->>Auth: POST /autenticar {cpf, senha}
Auth->>DB: SELECT usuário WHERE cpf = ?
DB-->>Auth: Dados do usuário
alt Credenciais válidas
Auth->>Auth: Valida senha (hash bcrypt)
Auth-->>App: Token JWT + perfil do usuário
App-->>Usuario: Redireciona para dashboard
else Credenciais inválidas
Auth->>DB: Incrementa tentativas_falhas
DB-->>Auth: tentativas_falhas = N
alt 3ª tentativa ou mais
Auth->>DB: Bloqueia conta por 15 min
Auth->>Email: Envia notificação de bloqueio
Email-->>Usuario: E-mail: conta temporariamente bloqueada
Auth-->>App: Erro 403 - Conta bloqueada
App-->>Usuario: "Conta bloqueada. Tente novamente em 15 min."
else Menos de 3 tentativas
Auth-->>App: Erro 401 - Credenciais inválidas
App-->>Usuario: "CPF ou senha incorretos"
end
end
Exemplo: Pedido com aprovação gerencial
Um exemplo mais complexo com múltiplos sistemas integrados, condicionais aninhados e fluxo de aprovação.
sequenceDiagram
actor Vendedor
participant Sistema as Sistema de Vendas
participant Estoque as API de Estoque
participant Aprovacao as Módulo de Aprovação
participant Email as Serviço de E-mail
Vendedor->>Sistema: Confirma pedido
Sistema->>Estoque: GET /estoque/{produto_id}
alt Estoque disponível
Estoque-->>Sistema: {disponivel: true, quantidade: 50}
Sistema->>Sistema: Calcula total e avalia regras
alt Valor total < R$10.000
Sistema->>Sistema: Status = Aprovado automaticamente
Sistema->>Email: Envia confirmação ao cliente
Email-->>Vendedor: Pedido PED-2025-001234 confirmado
else Valor total >= R$10.000
Sistema->>Aprovacao: Cria solicitação de aprovação
Aprovacao->>Email: Notifica gestor responsável
Email-->>Vendedor: Pedido aguardando aprovação gerencial
end
else Estoque insuficiente
Estoque-->>Sistema: {disponivel: false, quantidade: 0}
Sistema-->>Vendedor: Alerta: estoque insuficiente
opt Vendedor opta por salvar com pendência
Vendedor->>Sistema: Confirma com flag pendência de estoque
Sistema->>Sistema: Salva com status Pedido com pendência
Sistema-->>Vendedor: Pedido salvo — estoque pendente
end
end
Diagrama de estado
Documenta os possíveis estados de uma entidade e as transições entre eles. Use sempre que uma entidade muda de status ao longo do tempo — pedido, contrato, ticket, solicitação.
stateDiagram-v2 [*] --> Rascunho : Vendedor inicia pedido Rascunho --> AguardandoAprovacao : Valor >= R$10.000 Rascunho --> AprovadoAutomatico : Valor < R$10.000 Rascunho --> Cancelado : Vendedor cancela AguardandoAprovacao --> Aprovado : Gestor aprova AguardandoAprovacao --> Reprovado : Gestor reprova AguardandoAprovacao --> AjusteSolicitado : Gestor pede ajuste AguardandoAprovacao --> Cancelado : Vendedor cancela AjusteSolicitado --> AguardandoAprovacao : Vendedor corrige e resubmete AjusteSolicitado --> Cancelado : Vendedor cancela AprovadoAutomatico --> EmSeparacao : Separação iniciada pelo estoque Aprovado --> EmSeparacao : Liberado após aprovação EmSeparacao --> Concluido : Separação finalizada e entregue EmSeparacao --> Cancelado : Cancelamento aprovado Reprovado --> [*] Concluido --> [*] Cancelado --> [*]
Tabela de transições — sempre inclua junto com o diagrama
| Estado origem | Evento / Condição | Estado destino | Quem aciona |
|---|---|---|---|
| Rascunho | Valor < R$10.000 e confirma | Aprovado automaticamente | Vendedor |
| Rascunho | Valor ≥ R$10.000 e confirma | Aguardando aprovação | Vendedor |
| Aguardando aprovação | Gestor aprova | Aprovado | Gestor |
| Aguardando aprovação | Gestor reprova com motivo | Reprovado | Gestor |
| Aguardando aprovação | Gestor solicita ajuste | Ajuste solicitado | Gestor |
| Ajuste solicitado | Vendedor corrige e resubmete | Aguardando aprovação | Vendedor |
| Aprovado / Aprov. auto. | Estoque inicia separação | Em separação | Sistema / Estoque |
| Em separação | Separação concluída | Concluído | Sistema |
| Qualquer (exceto Concluído) | Cancelamento aprovado | Cancelado | Vendedor / Gestor |
Editor ao vivo — teste seus próprios diagramas
Cole qualquer código Mermaid abaixo e visualize o diagrama instantaneamente. Use para validar diagramas gerados pela IA antes de incluir na documentação.
Prompts prontos
Onde renderizar os diagramas
| Ferramenta | Como usar |
|---|---|
| Esta página 🎉 | Editor ao vivo acima — cole o código e visualize instantaneamente |
| mermaid.live | Editor online em mermaid.live — sem instalar nada, compartilhável por link |
| GitHub / GitLab | Bloco de código com linguagem "mermaid" renderiza automaticamente no Markdown |
| Notion | Bloco de código com linguagem "mermaid" — nativo no editor |
| VS Code | Extensão "Mermaid Preview" — visualiza enquanto edita o arquivo |
| draw.io | Importa Mermaid pelo menu Extras → Edit Diagram — edita graficamente depois |
| Confluence | Plugin "Mermaid Diagrams" — verificar instalação com a equipe de TI |