Документация / 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 г.
