Диаграмма деятельности UML моделирует как выполняется работав рамках процесса: выполняемые действия, принимаемые решения, параллельная работа и пути завершения. PlantUML позволяет описать эту модель в виде текста, а затем отобразить её в виде диаграммы — полезный подход, когда вам нужны диаграммы, которые легко редактировать, проверять и хранить вместе с проектной документацией. Текущий синтаксис диаграмм деятельности в PlantUML использует читаемые ключевые слова, такие как start, if, repeat, а также fork; его более старый синтаксис диаграмм деятельности по-прежнему поддерживается, но для новых диаграмм рекомендуется использовать новый синтаксис.

1. Что моделировать
Используйте диаграмму деятельности для объяснения процесса или алгоритма, например:

-
Рабочий процесс оформления заказа клиентом
-
Процесс согласования
-
Конвейер импорта данных
-
Шаги в сценарии использования
-
Работа, распределённая между людьми, командами или компонентами системы
Деятельность — это единица работы, например «Проверить заказ». поток управлениясвязывает деятельности и указывает их порядок. решениевыбирает из альтернативных путей; параллельные потокипоказывают работу, которая может выполняться одновременно. Диаграмма должна прояснять поведение, а не пытаться задокументировать каждую деталь реализации.
Полезное эмпирическое правило: если главный вопрос — «Что происходит дальше и при каких условиях?», диаграмма деятельности — подходящий выбор.
2. Основы PlantUML
Диаграмма PlantUML начинается с @startuml и заканчивается на @enduml. В текущем синтаксисе активности:

-
startобозначает начальный узел. -
:Action;определяет действие. -
if (...) then (...)разветвляется по условию. -
endifзакрывает условный блок. -
stopзавершает поток. -
repeatиrepeat whileмоделирует повторение. -
fork,fork again, иend forkмоделирует параллельную работу.
Действия записываются в порядке и неявно связаны. Вы можете добавлять метки к ветвям и использовать partition для группировки работы по ответственности или роли.
Вот минимальный пример:

@startuml
start
:Получить запрос;
:Проверить запрос;
stop
@enduml
3. Решения и альтернативные пути
Используйте if когда процесс принимает решение. Подписи ветвей должны передавать результаты условия, а не просто повторять само условие.

@startuml
start
:Получить заказ;
:Проверить наличие;
if (Все товары в наличии?) then (Да)
:Зарезервировать товары;
:Запросить оплату;
else (Нет)
:Уведомить клиента;
stop
endif
:Подтвердить заказ;
stop
@enduml
Здесь, if вводит решение и endif закрывает его. Подписи Да и Нет делают альтернативы видимыми. Когда пути после endif они снова присоединяются к основному потоку.
Совет по моделированию: Будьте явны в отношении того, что происходит при каждом значимом исходе. Если путь ошибки, истечения времени или отклонения важен для заинтересованных сторон, покажите его, а не оставляйте неявным.
4. Циклы и повторные попытки
Используйте цикл, когда действие или группа действий могут повторяться. В этом примере запрос ввода повторяется до тех пор, пока он не пройдет проверку:

@startuml
start
:Читать отправленные данные;
repeat
:Проверить данные;
if (Данные верны?) then (Да)
:Сохранить данные;
break
else (Нет)
:Показать ошибки проверки;
:Попросить пользователя исправить данные;
endif
repeat while (Пользователь продолжает?) is (Да) not (Нет)
stop
@enduml
Циклы может быть трудно понять, если условие выхода сформулировано нечётко. Укажите, что вызывает новую попытку и что завершает повторение — особенно когда количество повторений ограничено или их можно отменить.
5. Параллельная работа и синхронизация
Используйте fork когда независимые действия могут выполняться одновременно, и end fork когда пути должны синхронизироваться перед продолжением процесса.

@startuml
start
:Заказ подтверждён;
fork
:Отправить письмо с подтверждением;
fork again
:Подготовить список для комплектации склада;
fork again
:Обновить панель продаж;
end fork
:Пометить заказ как в обработке;
stop
@enduml
Конструкция fork не обязательно означает отдельных людей; она может представлять параллельное поведение системы. Используйте её только тогда, когда действия действительно могут выполняться параллельно. Если одна задача должна завершиться перед началом другой, моделируйте их последовательно.
6. Дорожки с разделами
Разделы группируют действия по роли, команде или системе, отвечающей за них. Это позволяет сделать передачу задач понятной без изменения самого процесса. PlantUML поддерживает группировку действий с помощью partition.

@startuml
start
partition Customer {
:Оформить заказ;
}
partition "Order Service" {
:Проверить заказ;
if (Заказ корректен?) then (Да)
:Создать запись о заказе;
else (Нет)
:Вернуть ошибки валидации;
stop
endif
}
partition Warehouse {
:Подготовить отгрузку;
}
partition "Order Service" {
:Отправить подтверждение;
}
stop
@enduml
Выбирайте подписи дорожек, соответствующие реальному разделению ответственности. Избегайте создания новой области (partition) для каждого мелкого компонента; слишком большое количество дорожек может затруднить восприятие диаграммы.
7. Объекты данных и заметки
Некоторые рабочие процессы выигрывают от отображения важных входных или выходных данных. Диаграммы деятельности PlantUML поддерживают стереотипы узлов объектов; заметки также могут добавлять контекст, не превращая каждую метку действия в абзац текста.

@startuml
start
:Получить запрос на оплату;
:Авторизовать оплату;
note right
Используется ответ от провайдера
платежей на авторизацию.
end note
:Зафиксировать результат оплаты;
stop
@enduml
Делайте основные метки действий краткими. Бизнес-правила, допущения или уточнения помещайте в заметки, когда они нужны читателям, но сами не являются шагами в потоке.
8. Полный пример: онлайн-оформление заказа
Этот крупный пример объединяет области (partitions), принятие решений, альтернативные пути и параллельную работу.

@startuml
title Онлайн-оформление заказа
start
partition Customer {
:Просмотреть корзину;
:Оформить заказ;
}
partition "Order Service" {
:Проверить корзину и адрес;
if (Корзина и адрес корректны?) then (Да)
:Рассчитать итоговую сумму;
else (Нет)
:Показать ошибки валидации;
stop
endif
}
partition "Payment Service" {
:Авторизовать оплату;
if (Оплата одобрена?) then (Одобрено)
:Провести оплату;
else (Отклонено)
:Вернуть ошибку оплаты;
stop
endif
}
partition "Order Service" {
:Создать заказ;
}
fork
partition "Notification Service" {
:Отправить подтверждение заказа;
}
fork again
partition Warehouse {
:Поставить заказ в очередь на комплектацию;
}
end fork
partition "Order Service" {
:Показать подтверждение заказа;
}
stop
@enduml

Читайте сверху вниз: клиент оформляет заказ, сервис заказов проверяет его, оплата авторизуется, и заказ создается. После этого подтверждение и подготовка на складе выполняются параллельно. Если проверка или оплата не удаются, поток завершается через соответствующий путь ошибки.
9. Рабочий процесс «диаграмма как код»
Практичный рабочий процесс выглядит так:
Рабочий процесс «диаграмма как код»
Практичный рабочий процесс выглядит так:
-
Опишите процесс простым языком.Определите его начало, конец, основные действия, решения, исключения, параллельные задачи и ответственные роли.
-
Создайте первый черновик PlantUML.Сосредоточьтесь на логике перед оформлением.
-
Сгенерируйте и проверьте его.Проверьте, чтобы результат читался естественно и чтобы ветвления и циклы были понятны.
-
Согласуйте логику с заинтересованными сторонами.Рендеринг проверяет синтаксис, а не правильность процесса.
-
Внесите правки в исходный код и сохраните его вместе с проектом.Текстовые диаграммы легко сравнивать и проверять вместе с другой документацией.
Для локального рендеринга инструмент PlantUML из командной строки может генерировать файлы диаграмм; браузерные редакторы удобны для быстрых черновиков и предварительного просмотра. PlantUML также предлагает браузерный редактор, тогда как VPasCode предоставляет браузерный редактор с живым предпросмотром и поддержкой диаграмм деятельности PlantUML.
-
Опишите процесс простым языком.Определите его начало, конец, основные действия, решения, исключения, параллельные задачи и ответственные роли.
-
Создайте первый черновик PlantUML.Сосредоточьтесь на логике перед оформлением.
-
Сгенерируйте и проверьте его.Проверьте, чтобы результат читался естественно и чтобы ветвления и циклы были понятны.
-
Согласуйте логику с заинтересованными сторонами.Рендеринг проверяет синтаксис, а не правильность процесса.
-
Внесите правки в исходный код и сохраните его вместе с проектом.Текстовые диаграммы легко сравнивать и проверять вместе с другой документацией.
Для локального рендеринга инструмент PlantUML из командной строки может генерировать файлы диаграмм; браузерные редакторы удобны для быстрых черновиков и предварительного просмотра. PlantUML также предлагает браузерный редактор, тогда как VPasCode предоставляет браузерный редактор с живым предпросмотром и поддержкой диаграмм деятельности PlantUML.
10. Использование Visual Paradigm VPasCode и помощи ИИ
VPasCode — это браузерный редактор Visual Paradigm для преобразования текста в диаграммы. Его поддержка PlantUML включает диаграммы деятельности, а редактор обеспечивает живое отображение. Visual Paradigm также описывает встроенную генерацию диаграмм на естественном языке и помощь ИИ для модификации или исправления кода диаграмм.
Полезный рабочий процесс с помощью ИИ:

-
Запрашивайте описание поведения, а не только тип диаграммы.Например:
«Создайте диаграмму деятельности PlantUML для онлайн-оформления заказа. Включите проверку корзины, проверку адреса, авторизацию платежа, пути при ошибках, создание заказа, а также параллельные отправку подтверждающего письма и подготовку на складе. Используйте разделы для Клиента, Сервиса заказов, Сервиса платежей, Сервиса уведомлений и Склада. Используйте текущий синтаксис диаграмм деятельности PlantUML.» -
Проверьте сгенерированный исходный код.Проверьте, что он использует
@startuml/@enduml, что каждая ветвь представляет реальное условие, и что неудачные или альтернативные пути обрабатываются. -
Отрендерите его в VPasCode.Используйте предпросмотр, чтобы выявить синтаксические ошибки, запутанные подписи или чрезмерно сложные макеты.
-
Уточните PlantUML самостоятельно или с помощью целенаправленных правок с помощью ИИ.Запросите конкретное изменение, например: «Добавить путь таймаута оплаты» или «Сделать подготовку на складе последовательной после создания заказа».
-
Проверьте процесс с кем-то, кто его знает.ИИ может набросать правдоподобную диаграмму, но он не может подтвердить, что фактический процесс вашей организации корректен.
Точный набор элементов управления и доступность функций VPasCode могут различаться в зависимости от редакции продукта; подтвердите текущие опции в используемом вами редакторе.
11. Рабочий процесс моделирования в Visual Paradigm
Используйте VPasCode, когда хотите работать непосредственно с исходным кодом диаграммы и её предпросмотром. Используйте среду моделирования Visual Paradigm, когда задача требует графического редактирования или более широкой работы с моделями. Руководство Visual Paradigm описывает рабочий процесс генерации или импорта диаграммы, а затем её уточнения в визуальном редакторе; точные пути импорта могут зависеть от продукта и версии.
Разумная передача выглядит так:

-
Создавайте черновики и итеративно дорабатывайте в PlantUML.
-
Поделитесь отрендеренной диаграммой и исходным кодом для проверки.
-
Откройте или импортируйте его в соответствующий редактор Visual Paradigm, если вам требуется визуальное редактирование или другие возможности моделирования.
-
Сохраняйте исходный код PlantUML как поддерживаемую версию, если это выбранный командой источник истины; избегайте тихого внесения противоречивых правок в двух местах.
12. Типичные ошибки и чек-лист качества
Перед публикацией диаграммы проверьте:

-
Есть ли у неё чёткое начало и осмысленный конец?
-
Описывает ли каждое действие узнаваемый фрагмент работы?
-
Чётко ли обозначены исходы решений?
-
Включены ли пути отклонения, ошибки, таймаута или отмены там, где это важно?
-
Делают ли условия цикла понятными поведение повторения и выхода?
-
Являются ли параллельные действия действительно независимыми, и показано ли синхронизирование там, где это необходимо?
-
Представляют ли разделы полезные границы ответственности?
-
Может ли читатель понять поток без чтения длинных подписей действий?
-
Соответствует ли отрендеренная диаграмма фактическому процессу?
Хорошая диаграмма деятельности — это не самая длинная или самая детальная. Это наименьшая диаграмма, которая делает понятными рабочий процесс, решения, ответственность и важные исключения.
Быстрая справка по синтаксису
| Назначение | Шаблон PlantUML |
|---|---|
| Начало | start |
| Действие | :Выполнить что-то; |
| Решение | if (Условие?) then (Да) ... else (Нет) ... endif |
| Цикл | repeat ... repeat while (Условие?) |
| Параллельная работа | fork ... fork again ... end fork |
| Группа ответственности | partition Role { ... } |
| Конец | stop |
Примеры используют текущий синтаксис диаграмм деятельности PlantUML. Для нестандартных конструкций или специфичного для версии поведения рендеринга проверьте справочник диаграмм деятельности PlantUML.
Эта статья также доступна на English, Español, فارسی, Français, Bahasa Indonesia, 日本語 and Polski







