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

Диаграммы состояний

Диаграмма состояний показывает, в каких состояниях бывает объект (например, заказ или платёж) и какие события переводят его из одного состояния в другое.

Состояния и переходы

[*] — начальное или конечное псевдосостояние. Переход записывается стрелкой, событие — подписью после двоеточия.

@startuml
[*] --> Новый
Новый --> Оплачен : оплата прошла
Новый --> Отменён : отмена клиентом
Оплачен --> Отгружен : передан в доставку
Отгружен --> Доставлен : получен клиентом
Доставлен --> [*]
Отменён --> [*]
@enduml

Подпись перехода по нотации UML: событие [условие] / действие, например Новый --> Оплачен : оплата [сумма верна] / выдать чек.

Описание состояния

@startuml
state "Ожидает оплаты" as Waiting
Waiting : entry / отправить счёт
Waiting : exit / отменить таймер
state Оплачен #palegreen
[*] --> Waiting
Waiting --> Оплачен
@enduml

Составные состояния

Состояние может содержать вложенную машину состояний.

@startuml
[*] --> Обработка
state Обработка {
  [*] --> Сборка
  Сборка --> Упаковка
  Упаковка --> [*]
}
Обработка --> Отгружен
Отгружен --> [*]
@enduml

Параллельные области

Внутри составного состояния области разделяются -- (горизонтально) или || (вертикально).

@startuml
state Выполнение {
  [*] --> Сборка
  Сборка --> Собран
  --
  [*] --> Оплата
  Оплата --> Оплачен
}
@enduml

Псевдосостояния: выбор, разветвление, история

@startuml
state check <<choice>>
state fork_state <<fork>>
state join_state <<join>>

[*] --> check
check --> Отклонён : [сумма > лимита]
check --> fork_state : [иначе]
fork_state --> Резерв
fork_state --> Уведомление
Резерв --> join_state
Уведомление --> join_state
join_state --> Готов
Готов --> [*]
@enduml

Также доступны <<start>>, <<end>>, <<entryPoint>>, <<exitPoint>>, история [H] и глубокая история [H*].

Заметки

@startuml
[*] --> Активен
Активен --> Заблокирован : 3 неверных пароля
note right of Заблокирован : разблокировка — через поддержку
note on link
  Сбрасывается через 24 часа
end note
@enduml

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