← Все гайды

Диаграмма активности в PlantUML: алгоритм и бизнес-процесс

· 2 мин чтения

PlantUMLBPMN

Как описать алгоритм или процесс диаграммой активности PlantUML: действия, условия, циклы, параллельные ветки и дорожки исполнителей.

Диаграмма активности (activity) — UML-способ показать поток действий: алгоритм, сценарий использования, несложный бизнес-процесс. В PlantUML она пишется почти как псевдокод.

Пример

@startuml
|Клиент|
start
:Оформить заказ;
|Магазин|
:Проверить наличие;
if (Всё в наличии?) then (да)
  :Зарезервировать товар;
else (нет)
  :Предложить замену;
  stop
endif
fork
  :Собрать заказ;
fork again
  :Выставить счёт;
end fork
|Клиент|
:Получить заказ;
stop
@enduml

Вставьте в песочницу PlantUML или возьмите шаблон Файл → Примеры → Диаграмма активности.

Диаграмма активности с дорожками и ветвлением
Дорожки исполнителей, условие и параллельные ветки

Синтаксис

  • start / stop / end — начало и окончание.
  • :действие; — шаг; точка с запятой обязательна.
  • if (условие?) then (да) … elseif … else (нет) … endif — ветвление.
  • while (есть товары?) … endwhile и repeat … repeat while (…) — циклы.
  • fork / fork again / end fork — параллельные ветки.
  • |Имя| — дорожка исполнителя (swimlane): шаги ниже относятся к ней.
  • note right: … — заметка к шагу.

Активность или BPMN?

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

Вопросы и ответы

Чем новый синтаксис (:действие;) отличается от старого (-->)? Старый синтаксис со стрелками устарел и хуже раскладывается; используйте новый — все шаблоны в редакторе написаны на нём.

Как показать вызов подпроцесса? Обычно — отдельной диаграммой для подпроцесса и шагом с понятным названием («Оплатить заказ (см. диаграмму оплаты)») в основной. Так каждая диаграмма остаётся читаемой.

Можно ли перевести диаграмму в BPMN? Автоматически — нет. Если процесс разросся, нарисуйте его в редакторе BPMN: там есть события, сообщения между участниками и стандартный формат для движков.