Документация / PlantUML

Диаграммы последовательности

Диаграмма последовательности показывает, как участники обмениваются сообщениями во времени: время идёт сверху вниз, каждый участник — вертикальная «линия жизни».

Сообщения

Сообщение записывается стрелкой между участниками и подписью после двоеточия. Участники, которые не объявлены заранее, создаются автоматически в порядке появления.

@startuml
Alice -> Bob : синхронный вызов
Bob --> Alice : ответ
Alice ->> Bob : асинхронное сообщение
Alice ->x Bob : сообщение потеряно
Alice -> Alice : вызов самого себя
@enduml
СтрелкаЗначение
->синхронное сообщение (сплошная линия)
-->ответ (пунктирная линия)
->>асинхронное сообщение (тонкая стрелка)
->xсообщение, которое не дошло
<->двунаправленное
->oстрелка с кружком на конце
-[#red]>цвет стрелки

Направление можно менять: Bob <- Alice рисует ту же стрелку слева направо.

Участники

Тип участника задаёт его значок; as даёт короткое имя, которым удобно пользоваться в сообщениях, а порядок объявления определяет порядок колонок.

@startuml
actor "Покупатель" as User
boundary "Веб-интерфейс" as UI
control "Контроллер" as Ctrl
entity "Заказ" as Order
database "База данных" as DB
collections "Сервисы" as Svc
queue "Очередь" as Q

User -> UI : клик «Купить»
UI -> Ctrl : POST /orders
Ctrl -> Order : создать
Ctrl -> DB : сохранить
Ctrl -> Q : событие OrderCreated
Q -> Svc : доставить
@enduml

Типы: participant (по умолчанию), actor, boundary, control, entity, database, collections, queue. Цвет участника задаётся после объявления: participant API #lightblue.

Активация и создание

Активация показывает, когда участник занят обработкой. Её можно задать командами activate / deactivate или кратко — суффиксами ++ и -- у стрелки. return возвращает ответ последнему вызвавшему и завершает активацию.

@startuml
participant Клиент
participant Сервис
participant Репозиторий

Клиент -> Сервис ++ : getOrder(42)
Сервис -> Репозиторий ++ : findById(42)
return заказ
return 200 OK

create participant Отчёт
Сервис -> Отчёт : new
destroy Отчёт
@enduml

Группировка: альтернативы, циклы, параллельность

@startuml
Клиент -> Сервис : оплатить
alt средств достаточно
  Сервис -> Банк : списать
  Банк --> Сервис : успешно
else недостаточно средств
  Сервис --> Клиент : 402 Payment Required
else банк недоступен
  Сервис --> Клиент : 503
end

loop каждые 5 секунд, до 3 раз
  Клиент -> Сервис : статус платежа?
end

par
  Сервис -> Почта : письмо
else
  Сервис -> СМС : уведомление
end

opt клиент подписан на новости
  Сервис -> Почта : рассылка
end
@enduml

Операторы групп: alt/else (альтернативы), opt (необязательная часть), loop (цикл), par (параллельно), break (прерывание), critical (критическая секция), group Название (произвольная группа). Каждая группа закрывается end.

Ссылки, разделители и задержки

@startuml
== Авторизация ==
Клиент -> Auth : логин и пароль
Auth --> Клиент : токен
...
== Работа ==
ref over Клиент, API : Получение каталога (см. отдельную диаграмму)
Клиент -> API : GET /orders
... 5 минут спустя ...
Клиент -> API : GET /orders/42
|||
@enduml
  • == Текст == — разделитель этапов;
  • ... или ... текст ... — задержка;
  • ||| — дополнительный отступ;
  • ref over A, B : текст — ссылка на другую диаграмму.

Заметки

@startuml
Alice -> Bob : запрос
note left : слева от последнего сообщения
note right of Bob : справа от участника
note over Alice, Bob : над несколькими участниками
hnote over Bob : шестиугольная заметка
rnote over Alice : прямоугольная заметка
@enduml

Нумерация и оформление

@startuml
autonumber
Alice -> Bob : первый
Bob --> Alice : второй
autonumber 10 10 "<b>[000]"
Alice -> Bob : десятый
Bob --> Alice : двадцатый
@enduml

Другие полезные команды:

  • hide footbox — не повторять участников внизу диаграммы;
  • box "Название" #цвет … end box — объединить участников в рамку;
  • skinparam responseMessageBelowArrow true — подписи ответов под стрелкой.
@startuml
hide footbox
box "Наша система" #EEF3FA
  participant API
  participant Worker
end box
participant "Внешний банк" as Bank

API -> Worker : задача
Worker -> Bank : платёж
@enduml

Обновлено: 30 сентября 2026 г.