Como escrever um diagrama de sequência mermaid

Um diagrama de sequência mostra quem fala com quem, e por que ordem. Em mermaid, demora tanto tempo a escrever como a descrever em voz alta, e é por isso que é o tipo de diagrama que sobrevive mais tempo numa base de código. Tudo abaixo está pronto a copiar e colar no editor.

O mínimo

Declare o tipo de diagrama e depois escreva uma linha por mensagem. Os participantes são criados na primeira menção, pela ordem em que aparecem.

sequenceDiagram
  User->>API: POST /orders
  API->>DB: INSERT order
  DB-->>API: order id
  API-->>User: 201 Created

Declare os participantes explicitamente com participant User quando quiser uma ordem específica da esquerda para a direita, em vez da ordem da primeira menção.

Tipos de seta

SintaxeSignificado
A->>B: textPedido — linha sólida, ponta de seta preenchida
A-->>B: textResposta — linha tracejada, ponta de seta preenchida
A->B: textLinha sólida, ponta de seta aberta
A-)B: textMensagem assíncrona — ponta de seta aberta, sem resposta esperada
A-xB: textMensagem que falha ou é descartada

A convenção que vale a pena manter: sólida para a chamada, tracejada para o retorno. Um leitor consegue então distinguir um pedido de uma resposta sem ler um único texto.

Participantes e apelidos

sequenceDiagram
  participant U as Browser
  participant A as API gateway
  participant S as Order service
  U->>A: GET /orders
  A->>S: list(userId)
  S-->>A: orders
  A-->>U: 200 OK

Use actor U as Browser em vez de participant para desenhar um boneco — vale a pena para a pessoa na extremidade esquerda de um fluxo de autenticação.

Barras de ativação

As barras de ativação mostram durante quanto tempo um participante está ocupado. Marque-as explicitamente com activate/deactivate, ou acrescente + e - às setas, o que é mais curto e mais difícil de desequilibrar.

sequenceDiagram
  User->>+API: POST /pay
  API->>+Bank: charge
  Bank-->>-API: authorised
  API-->>-User: receipt

Loops, condicionais e trabalho em paralelo

sequenceDiagram
  User->>API: POST /import
  loop every row
    API->>DB: upsert row
  end
  alt all rows valid
    API-->>User: 200 OK
  else some failed
    API-->>User: 422 with errors
  end
  par notify
    API->>Email: send summary
  and audit
    API->>Log: write entry
  end
  • loop <label> … end — repetição.
  • alt <label> … else <label> … end — ramos mutuamente exclusivos.
  • opt <label> … end — um ramo que pode simplesmente não acontecer.
  • par <label> … and <label> … end — coisas a acontecer ao mesmo tempo.
  • critical / break — uma secção que não pode ser interrompida, e uma saída antecipada.

Notas

sequenceDiagram
  User->>API: POST /login
  Note right of API: Rate limited<br>5 per minute
  API-->>User: token
  Note over User,API: Token is valid for 30 days

Note over A,B abrange dois participantes e é o lugar certo para uma restrição que pertence à interação, e não a um dos lados dela.

Um exemplo completo

sequenceDiagram
  actor U as User
  participant A as App
  participant P as Provider
  U->>+A: Click "Sign in"
  A-->>-U: Redirect to provider
  U->>+P: Authorise
  P-->>-U: Redirect back with code
  U->>+A: GET /callback?code=…
  A->>+P: Exchange code for token
  P-->>-A: access token
  Note right of A: Session cookie set here
  A-->>-U: Signed in
Início de sessão OAuth, do princípio ao fim.

Edite este diagrama

Cole-o no separador de código e mude uma linha — a pré-visualização redesenha-se à medida que escreve.

Perguntas frequentes

Como numero as mensagens?

Coloque autonumber na linha logo a seguir a sequenceDiagram. Cada mensagem recebe então um número sequencial, o que torna um diagrama muito mais fácil de discutir em comentários de revisão.

Um participante pode enviar uma mensagem a si próprio?

Sim — escreva o mesmo nome dos dois lados: API->>API: retry. O mermaid desenha o ciclo de volta para a mesma linha de vida.

Como mostro que um participante foi destruído?

Use destroy <name> antes da mensagem que o termina, ou create participant <name> para o fazer aparecer a meio do diagrama em vez de no topo.

Posso editar um diagrama de sequência na tela visual?

A tela visual edita fluxogramas. Os diagramas de sequência são escritos no separador de código, onde renderizam ao vivo na pré-visualização — o que normalmente é mais rápido de qualquer forma, já que um diagrama de sequência é essencialmente uma lista de linhas.

Mais guias

  1. Exportar mermaid para PNG ou SVG

    Quatro formas de sair de um diagrama mermaid — PNG, SVG, fonte .mmd e um bloco Markdown — e quando cada uma é a resposta certa.

  2. Guia rápido de sintaxe mermaid

    Formas de nó, setas, subgráficos e estilos numa página — mais um exemplo funcional de cada tipo de diagrama que o mermaid renderiza.

Abra o editor. Grátis — sem cadastro.

Uma tela em branco, um separador de código e todas as opções de exportação — grátis, no seu navegador, agora mesmo.