Диаграммы состояний в PlantUML — must-have инструмент системного аналитика
В микросервисах постоянно нужно описывать жизненный цикл заявок, заказов, пользователей, транзакций и документов. Диаграмма состояний (State Diagram)— лучший способ это сделать понятно и точно
Когда использовать:
- Моделирование поведения объектов (заказ в магазине, задача, регистрация)
- Анализ конечных автоматов (FSM)
- Документирование бизнес-процессов с разными исходами (одобрено / отклонено / отменено)
Как быстро запустить PlantUML Локально через Docker (рекомендую):
Bash docker run -d -p 8080:8080 plantuml/plantuml-server:jetty
Открываете http://localhost:8080
Или сразу онлайн: [plantuml.com/plantuml](https://www.plantuml.com/plantuml/uml/)
Базовый синтаксис
@startuml [*] --> Черновик
Черновик --> На_проверке : submit()
На_проверке --> Одобрено : approve()
На_проверке --> Отклонено : reject()
Одобрено --> [*] Отклонено --> [*]
@enduml
Полезные возможности
Составные (вложенные) состояния:
state Review { [*] --> Draft
Draft --> Approved Approved --> [*] }
Цвета и описания состояний:
state Одобрено #LightGreen : Прошёл все проверки
state Отклонено #LightPink : Отказ
Реальный пример из практики (регистрация ЮЛ + ТСП)
@startuml
[*] --> Черновик
Черновик --> Отправлено_в_Банк : Клиент заполняет анкету
Отправлено_в_Банк --> На_проверке : Анкета передана на проверку
На_проверке --> Отклонено : Не прошло проверку
На_проверке --> Временно_зарегистрировано_ЮЛ : Банк проводит KYC/AML
Временно_зарегистрировано_ЮЛ --> Зарегистрировано_ЮЛ : Получен ticketId
Зарегистрировано_ЮЛ --> Заявка_на_регистрацию_ТСП : Инициирована регистрация торговой точки
Заявка_на_регистрацию_ТСП --> Зарегистрировано_ТСП : Получен merchantId
Отклонено --> [*] state
Отклонено #LightPink state
Зарегистрировано_ТСП #LightGreen
@enduml
Скопируйте код → вставьте в PlantUML → получите готовую диаграмму за 10 секунд
Такие диаграммы отлично ложатся в Confluence, внутреннюю wiki и значительно повышают качество документации.
Хотите разбор других диаграмм PlantUML (Sequence, Component, Deployment, Timing)? Пишите в комментариях
Записывайтесь на курс: https://bsahub.pro