Прежний синтаксис, использовавшийся для диаграмм деятельности, имел ряд ограничений и проблем с поддержкой. Признавая эти недостатки, мы представили полностью переработанный синтаксис и реализацию, которые не только удобны для пользователя, но и более стабильны.
Преимущества нового синтаксиса
- Отсутствие зависимости от Graphviz: Как и в случае с диаграммами последовательностей, новый синтаксис исключает необходимость установки Graphviz, упрощая тем самым процесс настройки.
- Простота обслуживания: Интуитивный характер нового синтаксиса облегчает управление и сопровождение диаграмм.
Переход на новый синтаксис
Хотя мы будем продолжать поддерживать старый синтаксис для сохранения совместимости, мы настоятельно рекомендуем пользователям перейти на новый синтаксис, чтобы использовать его расширенные возможности и преимущества.
Сделайте этот переход сегодня и почувствуйте более рациональный и эффективный процесс создания диаграмм с помощью нового синтаксиса диаграмм деятельности.
Описания действий начинаются со знака
:
и заканчиваются —
;
.
Возможно использовать синтаксис
creole wiki syntax для форматирования текста.
Действия автоматически связаются по порядку их определения.
🎉 Copied!
|
@startuml
:Привет мир!;
:Эта активность описывается
несколькими **строчками** текста;
@enduml
|
Следующие ключевые слова используются для:
start
- для обозначения начального состояния активности,
stop
- для обозначения конечного состояния активности,
end
- для обозначения конечного состояния потока,
kill
или detach
- для быстрого прерывания активности без обозначения каких либо значков.
Использование либого из них не обязательно, диаграммы активности можно строить и без указания начального и/или конечного состояний
start
,
stop
или
end
, как было продемонстрировано на примерах выше. Чтобы прервать какую-либо активность без отображения каких-либо значков, нужно использовать идентичные по своему действию ключевые клова
kill
или
detach
.
🎉 Copied!
|
@startuml
start
:Привет мир!;
:Эта активность описывается
несколькими **строчками** текста;
stop
@enduml
|
🎉 Copied!
|
@startuml
start
:Привет мир!;
:Эта активность описывается
несколькими **строчками** текста;
end
@enduml
|
🎉 Copied!
|
@startuml
if (условие) then
:Один\nkill;
kill
else
:Два;
endif
:Три\nstop;
stop
@enduml
|
Можно использовать ключевые слова
if
,
then
,
else
и
endif
, чтобы добавить добавить проверку условия на диаграмму.
Доступно 3 равнозначных варианта записи условия (квадратными скобочками отмечены опциональные поля, которые можно указывать, а можно не указывать):
1 вариант записи:
if (текстУсловия) then [(подписьУспешно)]
else [(подписьНеУспешно)]
endif
🎉 Copied!
|
@startuml
start
if (Graphviz установлен?) then (да)
:доступны все\nдиаграммы;
else (нет)
:доступны только диаграммы
__последовательностей__ и __активностей__;
endif
stop
@enduml
|
2 вариант записи
if (текстУсловия) is (подписьУспешно) then
else [(подписьНеУспешно)]
endif
🎉 Copied!
|
@startuml
if (цвет?) is (<color:red>красный) then
:пачатаем "красный";
else
:печатаем "НЕ красный";
endif
@enduml
|
3 вариант записи
if (текстУсловия) equals (подписьУспешно) then
else [(подписьНеУспешно)]
endif
🎉 Copied!
|
@startuml
if (счетчик?) is (5) then
:пачатаем "5";
else
:печатаем "НЕ 5";
endif
@enduml
|
[Ref. QA-301]
Ряд последовательных проверок условий (горизонтальное отображение)
Вы можете использовать ключевое слово
elseif
, чтобы создать несколько последовательных проверок условий
(по умолчанию используется режим горизонтального отображения):
🎉 Copied!
|
@startuml
start
if (условие 1) then (да)
:Текст 1;
elseif (условие 2) then (да)
:Срочное\nзавершение;
stop
elseif (условие 3) then (да)
:Текст 3;
elseif (условие 4) then (да)
:Текст 4;
else (ничего не\nподходит)
:Текст: ничего\nне подошло;
endif
:продолжение;
stop
@enduml
|
Ряд последовательных проверок условий (вертикальное отображение)
Используйте опцию
!pragma useVerticalIf on
для отображения нескольких последовательных проверок условий в вертикальном режиме:
🎉 Copied!
|
@startuml
!pragma useVerticalIf on
start
if (условие 1) then (да)
:Текст 1;
elseif (условие 2) then (да)
:Срочное\nзавершение;
stop
elseif (условие 3) then (да)
:Текст 3;
elseif (условие 4) then (да)
:Текст 4;
else (ничего не\nподходит)
:Текст: ничего\nне подошло;
endif
:продолжение;
stop
@enduml
|
Также, можно использовать параметр
-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-case), нужно использовать следующие ключевые слова:
switch
,
case
,
endswitch
.
Условно можно изобразить синтаксис этой конструкции следующим образом:
switch ( переметрДляКоторогоПроверяютсяУсловияНиже )
case ( условие1 ? )
:вариант 1;
case ( условие2 ? )
:вариант 2;
...
endswitch
🎉 Copied!
|
@startuml
start
switch ( число потоков )
case ( равно 1 )
:1 поток;
case ( равно 2 )
:2 потока;
case ( равно 3 )
:3 потока;
case ( равно 4 )
:4 потока
----
срочное
завершение
kill;
kill
case ( равно 5 )
:5 потоков;
endswitch
stop
@enduml
|
Как уже было продемонстрировано ранее, можно остановить активность на конкретном действии, используя ключевые слова
stop
для отображения остановки деятельности или
end
для отображения остановки потока.
🎉 Copied!
|
@startuml
if (условие?) then
:ошибка;
stop
endif
#palegreen :активность;
@enduml
|
Если нужно прервать активность на каком-то конкретном действии без отображения каких-либо значков, нужно использовать идентичные по своему действию ключевые слова
kill
или
detach
:
🎉 Copied!
|
@startuml
if (условие?) then
#pink :ошибка;
kill
endif
#palegreen :активность;
@enduml
|
[Ref. QA-265]
🎉 Copied!
|
@startuml
if (условие?) then
#pink :ошибка;
detach
endif
#palegreen :активность;
@enduml
|
Для отображения циклов нужно использовать идентичные по своему действию ключевые слова
repeat
или
repeatwhile
:
🎉 Copied!
|
@startuml
start
repeat
:чтение данных;
:построение диаграмм;
repeat while (есть ли еще данные?)
stop
@enduml
|
Чтобы добавить подписи к стрелочкам после проверки условия, нужно использовать следующую конструкцию:
repeat while (условие) is (подписьКогдаУспешно) not (подписьКогдаНеУспешно)
🎉 Copied!
|
@startuml
start
repeat
:чтение данных;
:построение диаграмм;
repeat while (есть ли еще данные?) is (да) not (нет)
stop
@enduml
|
Можно превратить начало цикла в полноценное действие, если после ключевого слова
repeat
в той же строке указать это действие при помощи конструкции
:действие;
🎉 Copied!
|
@startuml
start
repeat :начало цикла;
:чтение данных;
:построение диаграмм;
repeat while (есть ли еще данные?)
stop
@enduml
|
Чтобы добавить к циклу обратное действие, используйте ключевое слово
backward
и сразу в той же строке укажите это действие при помощи конструкции
:действие;
🎉 Copied!
|
@startuml
start
repeat :начало цикла;
:чтение данных;
:построение диаграмм;
backward :очистка экрана;
repeat while (есть ли еще данные?)
stop
@enduml
|
*[Ref.
QA-5826]*
WARNING
This translation need to be updated. WARNING
Чтобы прервать цикл после определенного действия, нужно использовать ключевое слово
break
🎉 Copied!
|
@startuml
start
repeat
:Тестирование;
if (Что-то пошло не так?) then (нет)
#palegreen :Тест пройден;
break
endif
->ошибка;
:Сообщение: "Длинное сообщение об ошибке";
repeat while (Что-то пошло не так при\nвыводе сообщения об ошибке?) is (да) not (нет)
:Сообщение: "Всё прошло успешно";
stop
@enduml
|
[Ref. QA-6105]
⚠ В настоящее время это только экспериментальный вариант 🚧
Для обозначения обработки goto можно использовать ключевые слова
label
и
goto
, причем:
label <label_name>
goto <label_name>
🎉 Copied!
|
@startuml
title Point two queries to same activity\nwith `goto`
start
if (Test Question?) then (yes)
'space label only for alignment
label sp_lab0
label sp_lab1
'real label
label lab
:shared;
else (no)
if (Second Test Question?) then (yes)
label sp_lab2
goto sp_lab1
else
:nonShared;
endif
endif
:merge;
@enduml
|
[ссылка на QA-15026, QA-12526 и первоначально QA-1626]
Для организации цикла с проверкой условия в начале используйте ключевые слова
while
и
end while
.
🎉 Copied!
|
@startuml
start
while (данные доступны?)
:чтение данных;
:построение диаграммы;
endwhile
stop
@enduml
|
Чтобы добавить пояснения на стрелочки после проверки условия, нужно использовать следующую конструкцию:
while (условие) is ( пояснениеКогдаУспешно )
...
endwhile ( пояснениеКогдаНеУспешно )
Пример:
🎉 Copied!
|
@startuml
while (данные доступны?) is (да)
:чтение данных;
:построение диаграммы;
endwhile (нет)
:окончание работы;
@enduml
|
Чтобы добавить к циклу обратное действие, используйте ключевое слово
backward
и сразу в той же строке укажите это действие при помощи конструкции
:действие
;
🎉 Copied!
|
@startuml
while (данные доступны?) is (да)
:чтение данных;
:построение диаграммы;
backward :очистка экрана;
endwhile (нет)
:окончание работы;
@enduml
|
Чтобы прервать выполнение цикла, используйте ключевое слово
break
:
🎉 Copied!
|
@startuml
while (данные доступны?) is (да)
:чтение данных;
if (данные прочитаны?) then (нет)
#pink :Сообщение об ошибке;
break
endif
:построение диаграммы;
backward :очистка экрана;
endwhile (нет)
->завершение;
#palegreen :окончание работы;
@enduml
|
WARNING
This translation need to be updated. WARNING
Для разделения одной активности на несколько паралелльных активностей можно использовать режим многопоточности. Для этого необходимо использовать ключевые слова:
fork
,
fork again
и
end fork
или
end merge
.
(Также для этих целей можно использовать режим разделения (split), который будет рассмотрен более подробно ниже).
Простой режим многопоточности
🎉 Copied!
|
@startuml
start
fork
:Действие 1;
fork again
:Действие 2;
end fork
stop
@enduml
|
🎉 Copied!
|
@startuml
start
fork
:Действие 1;
fork again
:Действие 2;
fork again
:Действие 3;
end
fork again
:Действие 4;
end fork
stop
@enduml
|
Режим многопоточности с объединением потоков в конце
🎉 Copied!
|
@startuml
start
fork
:Действие 1;
fork again
:Действие 2;
end merge
stop
@enduml
|
🎉 Copied!
|
@startuml
start
fork
:Действие 1;
fork again
:Действие 2;
fork again
:Действие 3;
end
fork again
:Действие 4;
end merge
stop
@enduml
|
[Ref. QA-13731]
Размещение комментария при возвращении к однопоточному режиму (реализация синтакиса UML):
🎉 Copied!
|
@startuml
start
fork
:Действие A;
fork again
:Действие B;
end fork {или}
stop
@enduml
|
🎉 Copied!
|
@startuml
start
fork
:Действие A;
fork again
:Действие B;
end fork {и}
stop
@enduml
|
[Ref. QA-5346]
Еще один пример
🎉 Copied!
|
@startuml
start
if (многопоточность?) then (да)
fork
:Поток 1;
fork again
:Поток 2;
end fork
else (всё в одном\nпотоке)
:Поток 1;
:Поток 2;
endif
stop
@enduml
|
Разделение
Чтобы распараллелить активность на несколько одновременно идущих активностей, можно также использовать режим разделения. Для этого неоходимо использовать следующие ключевые слова:
split
,
split again
и
end split
.
🎉 Copied!
|
@startuml
start
split
:Действие 1;
split again
:Действие 2;
split again
:Действие 3;
split again
:Действие 4.1;
:Действие 4.2;
end split
:окончание работы;
end
@enduml
|
Несколько входов
При помощи режима разделения можно изобразить несколько независимых начальных действий. Для этого необходимо организовать распараллеливание активности на несколько параллельных и при этом скрыть входные стрелочки при помощи добавления конструкции
-[hidden]->
перед каждой активностью:
🎉 Copied!
|
@startuml
split
-[hidden]->
:Действие 1;
split again
-[hidden]->
:Действие 2;
split again
-[hidden]->
:Действие 3;
end split
:окончание работы;
@enduml
|
Более сложный пример:
🎉 Copied!
|
@startuml
split
-[hidden]->
:Действие 1;
->вар1;
split again
-[hidden]->
:Действие 2.1;
:Действие 2.2;
->вар2;
split again
-[hidden]->
(Х)
->вар3;
end split
:окончание работы;
@enduml
|
[Ref. QA-8662]
Несколько выходов
Таким же образом можно организовать несколько параллельно завершаемых действий. Для этого после каждого такого действия нужно указать ключевые слова
kill
или
detach
:
🎉 Copied!
|
@startuml
start
split
:Действие 1;
kill
split again
:Действие 2;
detach
split again
:Действие 3;
kill
end split
@enduml
|
Более сложный пример:
🎉 Copied!
|
@startuml
start
split
->вар1;
:Действие 1;
kill
split again
->вар2;
:Действие 2.1;
:Действие 2.2;
detach
split again
->вар3;
(Z)
detach
split again
->вар4;
end
split again
->вар5;
stop
end split
@enduml
|
На диаграмму активностей (также, как и на остальные диаграммы) можно добавлять заметки.
Текст внутри заметок можно дополнительно форматировать используя
creole и HTML синтаксис.
По умолчанию создаются заметки, которые явно указыавют на элемент, которй был объявлен непосредственно перед объявлением заметки. Чтобы создать отсоединенную заметку, нужно использовать ключевое слово
floating
(она по прежнему будет находится рядом с элементом, но у неё не будет "хвостика" указателя).
🎉 Copied!
|
@startuml
start
:Действие1;
floating note left: Это отсоединенная заметка
:Действие2;
note right
Эта заметка длиной в
//несколько строчек//
и может содержать
в себе <b>HTML</b> теги
и creole синтаксис
====
* Вызов метода ""foo()"" запрещен
end note
stop
@enduml
|
Можно добавлять заметки к обратным действиям в циклах:
🎉 Copied!
|
@startuml
start
repeat :Ввод данных;
:Отправка;
backward :Предупреждение;
note right: Заметка о том\nчто что-то пошло нет так
repeat while (Корректно?) is (Нет) not (Да)
stop
@enduml
|
[Ref. QA-11788]
Можно добавлять заметки к разделам:
🎉 Copied!
|
@startuml
start
partition "**процесс** Привет Мир" {
note
Тут наша заметка
----
//Creole тест//
end note
:Готовность к отправке;
:"Привет Мир" -> получатель Х>
:Привет отправлен;
}
@enduml
|
[Ref. QA-2398]
Можно задавать
цвета для активностей
🎉 Copied!
|
@startuml
:запуск процесса;
#HotPink:чтение конфигурационных файлов
----
На этом этапе указанные файлы
уже должны быть отредактированы!;
#AAAAAA:остановка процесса;
@enduml
|
Также можно задавать заливку
градиентом:
🎉 Copied!
|
@startuml
start
partition #red/white "тестирование раздела" {
#lightblue\palegreen :тестирование активности;
}
stop
@enduml
|
[Ref. QA-4906]
Можно превратить все стрелки на диаграмме в линии, если указать команду
skinparam ArrowHeadColor none
в начале диаграммы.
🎉 Copied!
|
@startuml
skinparam ArrowHeadColor none
start
:Привет Мир!;
:Какое-то дейстиве в
несколько **строчек**;
stop
@enduml
|
🎉 Copied!
|
@startuml
skinparam ArrowHeadColor none
start
repeat :Ввод данных;
:Отправка;
backward :Предупреждение;
repeat while (Коректно?) is (Нет) not (Да)
stop
@enduml
|
Явно объявляя стрелку и указывая для неё дополнительные параметры, можно управлять отображением стрелок между элементами диаграммы.
Стиль линий
Можно задавать различные стили отображения линий при помощи следующей конструкции:
где
типЛинии
может принимать значения:
bold
- жирный,
dashed
- штриховой,
dotted
- пунктирный,
hidden
- скрытый,
plain
- непрерывный.
Заметки на линиях
Можно добавлять текстовые подписи к линиям, используя следующую конструкцию:
Цвет линий
Можно задавать
цвет линий при помощи следующей конструкции:
где
цветЛинии
может принимать текстовые
обозначения цветов или их числовое представление.
Полный синтаксис
Можно смешивать все указанные выше параметры, следующим образом:
-[#цветЛинии,типЛинии]-> Текст заметки
Комплексный пример
🎉 Copied!
|
@startuml
:Действие1;
-> Можно добавлять\nтекст на стрелки;
if (Условие?) then
-[#blue]->
:Действие2;
-[#green,dashed]-> Текст с //пояснениями//
на стрелках может быть
**очень** длинным...;
:Действие3;
else
-[#black,dotted]->
:Действие4.1;
-[hidden]->
:Действие4.2;
endif
-[#gray,bold]->
:Действие5;
@enduml
|
Можно добавлять на диаграмму специальный элемент - коннектор. Для этого необходимо использовать круглые скобки. Чтобы убрать связь между двумя коннекторами, нужно использовать ключевое слово
detach
.
🎉 Copied!
|
@startuml
start
:Некоторое действие;
(A)
detach
(A)
:Следующее действие;
@enduml
|
Можно указать
цвет для коннектора.
🎉 Copied!
|
@startuml
start
:Коннектор ниже
хочет стать синим;
#blue:(B)
:А следующий коннектор
мечтает быть зеленым;
#green:(G)
stop
@enduml
|
[Ref. QA-10077]
Можно объединять (группировать) активности на диаграмме используя:
group
- группы;
partition
- разделы;
package
- пакеты;
rectangle
- прямоугольники;
card
- карточки.
отличаются эти варианты только внешним видом (а для group еще немного другим синтаксисом записи и отсутствием возможности задавать цвет).
Группы
Итак, можно объединять активности используя группы:
group НазваниеГруппы
.. объединяемые активности ..
end group
🎉 Copied!
|
@startuml
start
group Инициализация
:чтение конфигурационного файла;
:инициализация внутренних переменных;
end group
group Выполнение
:ожидание активности пользователя;
:вывод информации;
end group
stop
@enduml
|
Разделы, Пакеты, Прямоугольники и Карточки
Также, можно объединять активности используя Разделы, Пакеты, Прямоугольники и Карточки. Синтаксис у всех этих вариантов одинаковый, отличие состоит только в форме отображения.
partition/package/rectangle/card [#цвет] Название {
.. объединяемые активности ..
}
🎉 Copied!
|
@startuml
start
group Группа
:Действие;
end group
floating note: Заметка для группы
partition Раздел {
:Действие;
}
floating note: Заметка для раздела
package Пакет {
:Действие;
}
floating note: Заметка для пакета
rectangle Прямоугольник {
:Действие;
}
floating note: Заметка для прямоугольника
card Карточа {
:Действие;
}
floating note: Заметка для карточки
end
@enduml
|
Для Разделов, Пакетов, Прямоугольников и Карточек можно задавать
цвет отображения (для Групп этого сделать нельзя):
🎉 Copied!
|
@startuml
start
partition #lightGreen Инициализация {
:чтение конфигурационного файла;
:инициализация внутренних переменных;
}
partition Выполнение {
:ожидание активности пользователя;
:вывод информации;
}
stop
@enduml
|
[Ref. QA-2793]
Также, в названиях можно использовать
гиперссылки:
🎉 Copied!
|
@startuml
start
partition "[[http://plantuml.com имя_раздела]]" {
:см документацию на [[http://plantuml.com сайте plantuml]];
:тестирование диаграммы;
}
end
@enduml
|
[Ref. QA-542]
Можно задать дорожки используя символ
|
.
Также для задаваемых дорожек можно задавать
цвета.
🎉 Copied!
|
@startuml
|Дорожка1|
start
:Действие1;
|#AntiqueWhite|Дорожка2|
:Действие2;
:Действие3;
|Дорожка1|
:Действие4;
|Дорожка2|
:Действие5;
stop
@enduml
|
Можно использовать дорожки вместе с Условиями и Циклами.
🎉 Copied!
|
@startuml
|#pink|Актор_для_красного|
start
if (цвет?) is (красный) then
#pink :**красное действие**;
:Действие1;
else (НЕ красный)
|#lightblue|Актор_для_синего|
#lightblue :**синее действие**;
:Действие2;
endif
|Следующий актор|
#lightgray :Действие3;
:Действие4;
|Финальный актор|
#palegreen :Действие5;
stop
@enduml
|
Также, для того, чтобы каждый раз не писать длинное имя Дорожки, можно задать для дорожки короткое имя и далее использовать везде его. Сделать это можно используя ключевое слово
alias
при первом определении Дорожки:
|[#<color>|]<короткоеИмя>| <ДлинноеИмя>
🎉 Copied!
|
@startuml
|#palegreen|Р| Рыбак
|П| Повар
|#gold|Е| Едок
|Р|
start
:ловит рыбу;
|П|
:жарит рыбу;
|Е|
:ест рыбу;
stop
@enduml
|
[Ref. QA-2681]
Можно прервать активность (удалить стрелку) используя идентичные по своему действию ключевые слова
detach
или
kill
:
🎉 Copied!
|
@startuml
#palegreen :начало;
fork
:Действие1;
:Действие2;
fork again
:Действие3;
detach
endfork
if (Условие) then
:Действие4;
detach
endif
:Действие5;
detach
:Действие6;
stop
@enduml
|
🎉 Copied!
|
@startuml
#palegreen :начало;
fork
:Действие1;
:Действие2;
fork again
:Действие3;
kill
endfork
if (Условие) then
:Действие4;
detach
endif
:Действие5;
detach
:Действие6;
stop
@enduml
|
(еще на русский переводится как "язык спецификаций и описаний")
Заменяя символ
;
, обозначающий конец описания действия, на символы из списка ниже, можно изменять внешний вид действия. Ниже перечислены доступные варианты с указанием обозначаемых ими типов:
;
- STATE
, СОСТОЯНИЕ
|
- CALL
, ВЫЗОВ ПРОЦЕДУРЫ
<
- INPUT
, ВВОД
>
- OUTPUT
, ВЫВОД
/
- SAVE
, СОХРАНЕНИЕ
]
- TASK
, ЗАДАЧА
}
- DECISION
, РЕШЕНИЕ
🎉 Copied!
|
@startuml
:СОСТОЯНИЕ;
:ВЫЗОВ ПРОЦЕДУРЫ|
:ВВОД<
:ВЫВОД>
:СОХРАНЕНИЕ/
:ЗАДАЧА]
:РЕШЕНИЕ}
@enduml
|
Еще один пример:
🎉 Copied!
|
@startuml
:ГОТОВ;
:ПОЛУЧИТЬ_СЛЕД(o)|
:ПОЛУЧЕНИЕ;
split
:СПРОСИТЬ(i)<
:ВЫВЕСТИ(o)>
split again
:СПРОСИТЬ(i)<
:ПОЛУЧИТЬ_СЛЕД(o)
в несколько строчек|
:i := i + 1]
:ВЫВЕСТИ(o)>
split again
:ОШИБКА(i)<
:ВЫВЕСТИ(o)>
split again
:СОХРАНЕНИЕ/
split again
:i > 5}
stop
end split
:КОНЕЦ;
@enduml
|
WARNING
This translation need to be updated. WARNING
🎉 Copied!
|
@startuml
start
:ClickServlet.handleRequest();
:new page;
if (Page.onSecurityCheck) then (true)
:Page.onInit();
if (isForward?) then (no)
:Process controls;
if (continue processing?) then (no)
stop
endif
if (isPost?) then (yes)
:Page.onPost();
else (no)
:Page.onGet();
endif
:Page.onRender();
endif
else (false)
endif
if (do redirect?) then (yes)
:redirect process;
else
if (do forward?) then (yes)
:Forward request;
else (no)
:Render page template;
endif
endif
stop
@enduml
|
Inside style (by default)
🎉 Copied!
|
@startuml
skinparam conditionStyle inside
start
repeat
:act1;
:act2;
repeatwhile (<b>end)
:act3;
@enduml
|
🎉 Copied!
|
@startuml
start
repeat
:act1;
:act2;
repeatwhile (<b>end)
:act3;
@enduml
|
Diamond style
🎉 Copied!
|
@startuml
skinparam conditionStyle diamond
start
repeat
:act1;
:act2;
repeatwhile (<b>end)
:act3;
@enduml
|
InsideDiamond (or Foo1) style
🎉 Copied!
|
@startuml
skinparam conditionStyle InsideDiamond
start
repeat
:act1;
:act2;
repeatwhile (<b>end)
:act3;
@enduml
|
🎉 Copied!
|
@startuml
skinparam conditionStyle foo1
start
repeat
:act1;
:act2;
repeatwhile (<b>end)
:act3;
@enduml
|
[Ref. QA-1290 and #400]
Diamond style (by default)
🎉 Copied!
|
@startuml
skinparam ConditionEndStyle diamond
:A;
if (decision) then (yes)
:B1;
else (no)
endif
:C;
@enduml
|
- With two branches (
B1
, B2
)
🎉 Copied!
|
@startuml
skinparam ConditionEndStyle diamond
:A;
if (decision) then (yes)
:B1;
else (no)
:B2;
endif
:C;
@enduml
@enduml
|
Horizontal line (hline) style
🎉 Copied!
|
@startuml
skinparam ConditionEndStyle hline
:A;
if (decision) then (yes)
:B1;
else (no)
endif
:C;
@enduml
|
- With two branches (
B1
, B2
)
🎉 Copied!
|
@startuml
skinparam ConditionEndStyle hline
:A;
if (decision) then (yes)
:B1;
else (no)
:B2;
endif
:C;
@enduml
@enduml
|
[Ref. QA-4015]
Without style (by default)
🎉 Copied!
|
@startuml
start
:init;
-> test of color;
if (color?) is (<color:red>red) then
:print red;
else
:print not red;
note right: no color
endif
partition End {
:end;
}
-> this is the end;
end
@enduml
|
With style
You can use
style to change rendering of elements.
🎉 Copied!
|
@startuml
<style>
activityDiagram {
BackgroundColor #33668E
BorderColor #33668E
FontColor #888
FontName arial
diamond {
BackgroundColor #ccf
LineColor #00FF00
FontColor green
FontName arial
FontSize 15
}
arrow {
FontColor gold
FontName arial
FontSize 15
}
partition {
LineColor red
FontColor green
RoundCorner 10
BackgroundColor PeachPuff
}
note {
FontColor Blue
LineColor Navy
BackgroundColor #ccf
}
}
document {
BackgroundColor transparent
}
</style>
start
:init;
-> test of color;
if (color?) is (<color:red>red) then
:print red;
else
:print not red;
note right: no color
endif
partition End {
:end;
}
-> this is the end;
end
@enduml
|