Диаграмма деятельности
Диаграмма деятельности описывает рабочий процесс или последовательность действий: отдельные шаги, их порядок, а также ветвления и параллельные пути. Она хорошо подходит для бизнес-процессов, алгоритмов и всего, что движется от начала к концу. В PlantUML каждое действие записывается в отдельной строке, а для выражения потока управления используются стрелки и ключевые слова, такие какif, repeat и fork. Диаграмма формируется автоматически.
- Текст на входе, диаграмма на выходе. Описание потока сверху вниз, включая ветвления и циклы.
- Читается сверху вниз. Порядок в тексте — это порядок в диаграмме.
- Удобная реструктуризация. Изменить порядок шагов или добавить ветвление — это правка текста, а не перерисовка.
Простое действие
Описания действий начинаются со знака : и заканчиваются — ;.
Возможно использовать синтаксис creole wiki syntax для форматирования текста.
Действия автоматически связаются по порядку их определения.
|
🎉 Copied!
|
|
Other simple action (defined as a list)
Simple action list separated by -
|
🎉 Copied!
|
|
Simple action list separated by *
With one level
|
🎉 Copied!
|
|
With several levels
|
🎉 Copied!
|
|
[Ref. GH-2376]
Старт активности, Стоп активности, Стоп поток, Быстрый стоп
Следующие ключевые слова используются для:
start- для обозначения начального состояния активности,stop- для обозначения конечного состояния активности,end- для обозначения конечного состояния потока,killилиdetach- для быстрого прерывания активности без обозначения каких либо значков.
start, stop или end, как было продемонстрировано на примерах выше. Чтобы прервать какую-либо активность без отображения каких-либо значков, нужно использовать идентичные по своему действию ключевые клова kill или detach.
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
Условия (оператор if)
Можно использовать ключевые слова if, then, else и endif, чтобы добавить добавить проверку условия на диаграмму.
Доступно 3 равнозначных варианта записи условия (квадратными скобочками отмечены опциональные поля, которые можно указывать, а можно не указывать):
1 вариант записи:
if (текстУсловия) then [(подписьУспешно)]else [(подписьНеУспешно)]endif
|
🎉 Copied!
|
|
2 вариант записи
if (текстУсловия) is (подписьУспешно) thenelse [(подписьНеУспешно)]endif
|
🎉 Copied!
|
|
3 вариант записи
if (текстУсловия) equals (подписьУспешно) thenelse [(подписьНеУспешно)]endif
|
🎉 Copied!
|
|
[Ref. QA-301]
Ряд последовательных проверок условий (горизонтальное отображение)
Вы можете использовать ключевое словоelseif, чтобы создать несколько последовательных проверок условий (по умолчанию используется режим горизонтального отображения):
|
🎉 Copied!
|
|
Ряд последовательных проверок условий (вертикальное отображение)
Используйте опцию!pragma useVerticalIf on для отображения нескольких последовательных проверок условий в вертикальном режиме:
|
🎉 Copied!
|
|
Также, можно использовать параметр
-P для установки этой опции для диаграмм по умолчанию из командной строки:
java -jar plantuml.jar -PuseVerticalIf=on
[Refs. QA-3931, issue-582] *[Refs. [QA-3931](https:forum.plantuml.net/3931/please-provide-elseif-structure-vertically-activity-diagrams), [GH-582](https:github.com/plantuml/plantuml/issues/582)]*
WARNING
This translation need to be updated. WARNING
Перебор множества условий для определенного параметра (оператор switch)
Для добавления в диаграмму перебора множества условий для какого-то одного параметра (конструкция switch-case), нужно использовать следующие ключевые слова: switch, case, endswitch.
Условно можно изобразить синтаксис этой конструкции следующим образом:
switch ( параметрДляКоторогоПроверяютсяУсловияНиже )
case ( условие1 ? )
:вариант 1;
case ( условие2 ? )
:вариант 2;
...
endswitch
|
🎉 Copied!
|
|
Остановка активности в теле условия
Как уже было продемонстрировано ранее, можно остановить активность на конкретном действии, используя ключевые слова stop для отображения остановки деятельности или end для отображения остановки потока.
|
🎉 Copied!
|
|
Если нужно прервать активность на каком-то конкретном действии без отображения каких-либо значков, нужно использовать идентичные по своему действию ключевые слова
kill или detach:
kill
|
🎉 Copied!
|
|
[Ref. QA-265]
detach
|
🎉 Copied!
|
|
WARNING
This translation need to be updated. WARNING
Повторяющийся цикл repeat (с проверкой условия в конце цикла)
Для отображения циклов нужно использовать идентичные по своему действию ключевые слова repeat или repeatwhile:
|
🎉 Copied!
|
|
Чтобы добавить подписи к стрелочкам после проверки условия, нужно использовать следующую конструкцию:
repeat while (условие) is (подписьКогдаУспешно) not (подписьКогдаНеУспешно)
|
🎉 Copied!
|
|
Можно превратить начало цикла в полноценное действие, если после ключевого слова
repeat в той же строке указать это действие при помощи конструкции:действие;
|
🎉 Copied!
|
|
Чтобы добавить к циклу обратное действие, используйте ключевое слово
backward и сразу в той же строке укажите это действие при помощи конструкции:действие;
|
🎉 Copied!
|
|
*[Ref. QA-5826]*
WARNING
This translation need to be updated. WARNING
Прерывание цикла repeat при помощи ключевого слова break
Чтобы прервать цикл после определенного действия, нужно использовать ключевое слово break
|
🎉 Copied!
|
|
[Ref. QA-6105]
WARNING
This translation need to be updated. WARNING
Обработка Goto и меток [label, goto]
⚠ В настоящее время это только экспериментальный вариант 🚧
Для обозначения обработки goto можно использовать ключевые слова label и goto, причем:
label <label_name>goto <label_name>
|
🎉 Copied!
|
|
[ссылка на QA-15026, QA-12526 и первоначально QA-1626]
Повторяющийся цикл while (с проверкой условия в начале цикла)
Для организации цикла с проверкой условия в начале используйте ключевые слова while и end while.
|
🎉 Copied!
|
|
Чтобы добавить пояснения на стрелочки после проверки условия, нужно использовать следующую конструкцию:
while (условие) is ( пояснениеКогдаУспешно )
...
endwhile ( пояснениеКогдаНеУспешно )
Пример:
|
🎉 Copied!
|
|
Чтобы добавить к циклу обратное действие, используйте ключевое слово
backward и сразу в той же строке укажите это действие при помощи конструкции :действие;
|
🎉 Copied!
|
|
Чтобы прервать выполнение цикла, используйте ключевое слово
break:
|
🎉 Copied!
|
|
WARNING
This translation need to be updated. WARNING
Распаралелливание активности [ режим многопоточности: fork, fork again, end fork и merge ]
Для разделения одной активности на несколько паралелльных активностей можно использовать режим многопоточности. Для этого необходимо использовать ключевые слова: fork, fork again и end fork или end merge.
(Также для этих целей можно использовать режим разделения (split), который будет рассмотрен более подробно ниже).
Простой режим многопоточности
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
Режим многопоточности с объединением потоков в конце
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
[Ref. QA-13731]
Размещение комментария при возвращении к однопоточному режиму (реализация синтакиса UML):
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
[Ref. QA-5346]
Еще один пример
|
🎉 Copied!
|
|
Распараллеливание активности [ режим разделения: split, split again и end split ]
Разделение
Чтобы распараллелить активность на несколько одновременно идущих активностей, можно также использовать режим разделения. Для этого неоходимо использовать следующие ключевые слова:split, split again и end split.
|
🎉 Copied!
|
|
Несколько входов
При помощи режима разделения можно изобразить несколько независимых начальных действий. Для этого необходимо организовать распараллеливание активности на несколько параллельных и при этом скрыть входные стрелочки при помощи добавления конструкции-[hidden]-> перед каждой активностью:
|
🎉 Copied!
|
|
Более сложный пример:
|
🎉 Copied!
|
|
[Ref. QA-8662]
Несколько выходов
Таким же образом можно организовать несколько параллельно завершаемых действий. Для этого после каждого такого действия нужно указать ключевые словаkill или detach:
|
🎉 Copied!
|
|
Более сложный пример:
|
🎉 Copied!
|
|
Заметки
На диаграмму активностей (также, как и на остальные диаграммы) можно добавлять заметки.
Текст внутри заметок можно дополнительно форматировать используя creole и HTML синтаксис.
По умолчанию создаются заметки, которые явно указыавют на элемент, которй был объявлен непосредственно перед объявлением заметки. Чтобы создать отсоединенную заметку, нужно использовать ключевое слово floating (она по прежнему будет находится рядом с элементом, но у неё не будет "хвостика" указателя).
|
🎉 Copied!
|
|
Можно добавлять заметки к обратным действиям в циклах:
|
🎉 Copied!
|
|
[Ref. QA-11788] Можно добавлять заметки к разделам:
|
🎉 Copied!
|
|
[Ref. QA-2398]
WARNING
This translation need to be updated. WARNING
Цвета
Можно задавать цвета для активностей
|
🎉 Copied!
|
|
Также можно задавать заливку градиентом:
|
🎉 Copied!
|
|
[Ref. QA-4906]
WARNING
This translation need to be updated. WARNING
Линии вместо стрелок
Можно превратить все стрелки на диаграмме в линии, если указать команду skinparam ArrowHeadColor none в начале диаграммы.
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
Изменение цвета и стиля стрелок (синтаксис квадратных скобочек)
Явно объявляя стрелку и указывая для неё дополнительные параметры, можно управлять отображением стрелок между элементами диаграммы.
Стиль линий
Можно задавать различные стили отображения линий при помощи следующей конструкции:-[#типЛинии]->
типЛинии может принимать значения:
bold- жирный,dashed- штриховой,dotted- пунктирный,hidden- скрытый,plain- непрерывный.
Заметки на линиях
Можно добавлять текстовые подписи к линиям, используя следующую конструкцию:--> Текст заметки
Цвет линий
Можно задавать цвет линий при помощи следующей конструкции:-[#цветЛинии]->
цветЛинии может принимать текстовые обозначения цветов или их числовое представление.
Полный синтаксис
Можно смешивать все указанные выше параметры, следующим образом:-[#цветЛинии,типЛинии]-> Текст заметки
Комплексный пример
|
🎉 Copied!
|
|
Simple colored arrow [link]
You can use simple colored arrow with the link keyword.
|
🎉 Copied!
|
|
Multiple colored arrow
You can use multiple colored arrow.
|
🎉 Copied!
|
|
[Ref. QA-4411]
Коннектор
Можно добавлять на диаграмму специальный элемент - коннектор. Для этого необходимо использовать круглые скобки. Чтобы убрать связь между двумя коннекторами, нужно использовать ключевое слово detach.
|
🎉 Copied!
|
|
WARNING
This translation need to be updated. WARNING
Цвет коннектора
Можно указать цвет для коннектора.
|
🎉 Copied!
|
|
[Ref. QA-10077] *[Ref. [QA-19975](https://forum.plantuml.net/19975/please-provide-change-background-connectors-activity-diagrams?show=19976#a19976)]*
WARNING
This translation need to be updated. WARNING
Объединение (группировка) активностей
Можно объединять (группировать) активности на диаграмме используя:
group- группы;partition- разделы;package- пакеты;rectangle- прямоугольники;card- карточки.
Группы
Итак, можно объединять активности используя группы:
group НазваниеГруппы
.. объединяемые активности ..
end group
|
🎉 Copied!
|
|
Разделы, Пакеты, Прямоугольники и Карточки
Также, можно объединять активности используя Разделы, Пакеты, Прямоугольники и Карточки. Синтаксис у всех этих вариантов одинаковый, отличие состоит только в форме отображения.
partition/package/rectangle/card [#цвет] Название {
.. объединяемые активности ..
}
|
🎉 Copied!
|
|
Для Разделов, Пакетов, Прямоугольников и Карточек можно задавать цвет отображения (для Групп этого сделать нельзя):
|
🎉 Copied!
|
|
[Ref. QA-2793] Также, в названиях можно использовать гиперссылки:
|
🎉 Copied!
|
|
[Ref. QA-542]
WARNING
This translation need to be updated. WARNING
Дорожки
Можно задать дорожки используя символ |.
Также для задаваемых дорожек можно задавать цвета.
|
🎉 Copied!
|
|
Можно использовать дорожки вместе с Условиями и Циклами.
|
🎉 Copied!
|
|
Также, для того, чтобы каждый раз не писать длинное имя Дорожки, можно задать для дорожки короткое имя и далее использовать везде его. Сделать это можно используя ключевое слово
alias при первом определении Дорожки:
|[#<color>|]<короткоеИмя>| <ДлинноеИмя>
|
🎉 Copied!
|
|
[Ref. QA-2681]
WARNING
This translation need to be updated. WARNING
Прерывание активности
Можно прервать активность (удалить стрелку) используя идентичные по своему действию ключевые слова detach или kill:
detach
|
🎉 Copied!
|
|
kill
|
🎉 Copied!
|
|
Emoji as action (with icon stereotype)
You can use emoji as action, with the stereotype <<icon>>:
|
🎉 Copied!
|
|
[Ref. GH-2436]
SDL (язык спецификаций с формальной семантикой)
(еще на русский переводится как "язык спецификаций и описаний")
Заменяя символ ;, обозначающий конец описания действия, на символы из списка ниже, можно изменять внешний вид действия. Ниже перечислены доступные варианты с указанием обозначаемых ими типов:
;-STATE,СОСТОЯНИЕ|-CALL,ВЫЗОВ ПРОЦЕДУРЫ<-INPUT,ВВОД>-OUTPUT,ВЫВОД/-SAVE,СОХРАНЕНИЕ]-TASK,ЗАДАЧА}-DECISION,РЕШЕНИЕ
|
🎉 Copied!
|
|
Еще один пример:
|
🎉 Copied!
|
|
WARNING
This translation need to be updated. WARNING
UML (Unified Modeling Language) Shape (with UML stereotype)
Table of UML Shape Name
| Name | Stereotype syntax |
| ObjectNode |
<<object>>
|
|
ObjectNode typed by signal |
<<objectSignal>> or <<object-signal>>
|
|
AcceptEventAction without TimeEvent trigger |
<<acceptEvent>> or <<accept-event>>
|
|
AcceptEventAction with TimeEvent trigger |
<<timeEvent>> or <<time-event>>
|
|
SendSignalAction SendObjectAction with signal type |
<<sendSignal>> or <<send-signal>>
|
| Trigger |
<<trigger>>
|
UML Shape Example using Stereotype
|
🎉 Copied!
|
|
[Ref. GH-2185, QA-16558, GH-1659]
Полноценный пример
|
🎉 Copied!
|
|
Condition Style
Inside style (by default)
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
Diamond style
|
🎉 Copied!
|
|
InsideDiamond (or Foo1) style
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
[Ref. QA-1290 and #400]
Condition End Style
Diamond style (by default)
- With one branch
|
🎉 Copied!
|
|
- With two branches (
B1,B2)
|
🎉 Copied!
|
|
Horizontal line (hline) style
- With one branch
|
🎉 Copied!
|
|
- With two branches (
B1,B2)
|
🎉 Copied!
|
|
[Ref. QA-4015]
Using (global) style
Without style (by default)
|
🎉 Copied!
|
|
With style
You can use style to change rendering of elements.
|
🎉 Copied!
|
|
Creole on Activity
You can use Creole or HTML Creole on Activity diagram:
|
🎉 Copied!
|
|