Создание диаграмм последовательностей с помощью PlantUML удивительно просто. Эта простота во многом объясняется удобством синтаксиса, который разработан таким образом, чтобы быть интуитивно понятным и легко запоминающимся.
- Интуитивно понятный синтаксис:
Прежде всего, пользователи ценят простой и интуитивно понятный синтаксис PlantUML. Благодаря продуманному дизайну даже новички в области создания диаграмм быстро и без труда постигают его основы.
- Соотношение текста и графики:
Еще одной отличительной особенностью является тесное сходство между текстовым и графическим представлением. Благодаря этой гармоничной взаимосвязи текстовые наброски достаточно точно преобразуются в графические диаграммы, обеспечивая целостность и предсказуемость дизайна без неприятных сюрпризов в конечном результате.
- Эффективный процесс разработки:
Сильная корреляция между текстом и графическим результатом не только упрощает, но и значительно ускоряет процесс разработки. Пользователи выигрывают от более оптимизированного процесса с меньшими затратами времени на доработку и корректировку.
- Визуализация в процессе разработки:
Возможность представить себе конечный графический результат во время работы над текстом - функция, которую многие считают бесценной. Она способствует плавному переходу от первоначального проекта к окончательному варианту, повышая производительность и снижая вероятность ошибок.
- Простота редактирования и внесения изменений:
Важно отметить, что редактирование существующих диаграмм не требует особых усилий. Поскольку диаграммы создаются на основе текста, пользователи обнаруживают, что вносить в них изменения гораздо проще и точнее, чем в графические изображения. Все сводится к простому изменению текста, что гораздо проще и менее подвержено ошибкам, чем внесение изменений через графический интерфейс с помощью мыши.
PlantUML обеспечивает простой и удобный подход к созданию и редактированию диаграмм последовательности, удовлетворяя потребности как новичков, так и опытных разработчиков. Он умело использует простоту текстового ввода для создания визуально описательных и точных диаграмм, тем самым зарекомендовав себя как обязательный инструмент в наборе средств создания диаграмм.
Вы можете узнать больше о некоторых
распространенных командах PlantUML, чтобы расширить свои возможности по созданию диаграмм.
В диаграммах последовательности на языке PlantUML команда
->
используется для отображения сообщения между двумя участниками, которые распознаются автоматически, и не обязательно должны быть объявлены заранее.
Используйте команду
-->
, чтобы изобразить пунктирную линию и повысить читаемость.
Для того, чтобы улучшить читаемость диаграммы, не меняя визуального представления, используйте команды в виде стрелок, которые направлены обратно
<-
или
<--
. Однако, обратите внимание на то, что такое утверждение об использовании этих команд справедливо только для диаграмм последовательности. Для других инструментов правила отличаются.
🎉 Copied!
|
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: Another authentication Response
@enduml
|
При использовании ключевого слова
participant
возможно получить больший контроль над отображением участников.
Порядок перечисления участников задаёт также
пороядок отображения участников по умолчанию.
Использование других ключевых слов (отличных от
participant
) позволяет изменить
форму представления (отображения) участника:
actor
boundary
control
entity
database
collections
queue
🎉 Copied!
|
@startuml
participant Participant as Foo
actor Actor as Foo1
boundary Boundary as Foo2
control Control as Foo3
entity Entity as Foo4
database Database as Foo5
collections Collections as Foo6
queue Queue as Foo7
Foo -> Foo1 : To actor
Foo -> Foo2 : To boundary
Foo -> Foo3 : To control
Foo -> Foo4 : To entity
Foo -> Foo5 : To database
Foo -> Foo6 : To collections
Foo -> Foo7 : To queue
@enduml
|
Возможно переименовать участника используя ключевое слово
as
.
Также возможно изменить
цвет фона участника.
🎉 Copied!
|
@startuml
actor Bob #red
' Единственная разница между actor
' и participant - это разная форма отображения
participant Alice
participant "У меня очень\nдлинное имя" as L #99FF99
/' Эта строчка будет обозначать тоже самое:
participant L as "У меня очень\nдлинное имя" #99FF99
'/
Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
@enduml
|
Возможно изменить порядок следования участников с помощью ключевого слова
order
.
🎉 Copied!
|
@startuml
participant Last order 30
participant Middle order 20
participant First order 10
@enduml
|
Вы можете объявить участника в многострочной форме.
🎉 Copied!
|
@startuml
participant Participant [
=Title
----
""SubTitle""
]
participant Bob
Participant -> Bob
@enduml
|
[Ссылка QA-15232]
Вы можете использовать кавычки для задания участников. Также Вы можете использовать ключевое слово
as
для присвоения псевдонимов к этим участникам.
🎉 Copied!
|
@startuml
Alice -> "Bob()" : Hello
"Bob()" -> "Это что-то\nочень длинное" as Long
' Эта строчка будет обозначать тоже самое:
' "Bob()" -> Long as "Это что-то\nочень длинное"
Long --> "Bob()" : ok
@enduml
|
Участник может посылать сообщения сам себе.
Также возможно создание многострочных сообщений, используя
\n
.
🎉 Copied!
|
@startuml
Alice -> Alice: Это сигнал к самому себе.\nТакже это является демонстрацией\nмногострочного \nтекста.
@enduml
|
🎉 Copied!
|
@startuml
Alice <- Alice: Это сигнал к самому себе.\nТакже это является демонстрацией\nмногострочного \nтекста.
@enduml
|
[Ref. QA-1361]
Расположение текста относительно стрелки можно указывать как
left
(лево),
right
(право) или
center
(центер) используя слово
skinparam sequenceMessageAlign
.
Вы также можете использовать
direction
или
reverseDirection
для выравнивания текста относительно направления стрелки. Больше подробнестей и примеров можно найти на странице
skinparam.
🎉 Copied!
|
@startuml
skinparam sequenceMessageAlign right
Bob -> Alice : Request
Alice -> Bob : Response
@enduml
|
Текст ответного сообщения под стрелкой
Вы можете разместить текст ответного сообщения под стрелкой используя команду
skinparam responseMessageBelowArrow true
.
🎉 Copied!
|
@startuml
skinparam responseMessageBelowArrow true
Bob -> Alice : дай пять рублей
Bob <- Alice : нет, не дам
@enduml
|
Можно изменить стиль стрелок следующими способами:
- закончить стрелку с помощью
x
для обозначения потерянного сообщения
- использовать
\
или /
вместо <
или >
для создания только верхней или нижней части стрелки
- повторить окончание стрелки (например,
>>
or //
) для тонкой отрисовки
- использовать
--
вместо -
для создания пунктирной стрелки
- заканчивать символом "o" во главе стрелки
- использовать двунаправленные стрелки
<->
🎉 Copied!
|
@startuml
Bob ->x Alice
Bob -> Alice
Bob ->> Alice
Bob -\ Alice
Bob \\- Alice
Bob //-- Alice
Bob ->o Alice
Bob o\\-- Alice
Bob <-> Alice
Bob <->o Alice
@enduml
|
Вы можете изменить цвет отдельных стрелок, используя следующие правила:
🎉 Copied!
|
@startuml
Bob -[#red]> Alice : hello
Alice -[#0000FF]->Bob : ok
@enduml
|
Ключевое слово
autonumber
используется для автоматической нумерации сообщений.
🎉 Copied!
|
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml
|
Вы можете обозначить число с которого начнется отсчет
autonumber <start>
, а также число которое будет использоваться в качестве инкремента
autonumber <start> <increment>
.
🎉 Copied!
|
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber 15
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response
autonumber 40 10
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml
|
Можно задавать формат чисел, указав его в двойных кавычках.
Форматирование выполнено с использованием класса Java
DecimalFormat
(
0
означает цифру,
#
означает цифру или ноль если пусто).
При форматировании также можно использовать теги html.
🎉 Copied!
|
@startuml
autonumber "<b>[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber 15 "<b>(<u>##</u>)"
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response
autonumber 40 10 "<font color=red><b>Message 0 "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml
|
Вы так же можете использовать
autonumber stop
и
autonumber resume <increment> <format>
чтобы соотсетственно остановить и продолжить автоматическое нумерование.
🎉 Copied!
|
@startuml
autonumber 10 10 "<b>[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber stop
Bob -> Alice : dummy
autonumber resume "<font color=red><b>Message 0 "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
autonumber stop
Bob -> Alice : dummy
autonumber resume 1 "<font color=blue><b>Message 0 "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml
|
Ваше число, с которого начнется отсчет может быть последовательностью из двух или трех цифр, разделенных знаками
.
,
;
,
,
или
:
. Также это могут одновременно два разных знака из этого списка. Например:
1.1.1
или
1.1:1
.
Автоматически инкрементируется последняяя цифра из указанной последовательности.
Для того, чтобы инкрементировать первую цифру последовательности, укажите
autonumber inc A
. Для инкрементирования второй цифры последовательности укажите соответственно
autonumber inc B
.
🎉 Copied!
|
@startuml
autonumber 1.1.1
Alice -> Bob: Authentication request
Bob --> Alice: Response
autonumber inc A
'Now we have 2.1.1
Alice -> Bob: Another authentication request
Bob --> Alice: Response
autonumber inc B
'Now we have 2.2.1
Alice -> Bob: Another authentication request
Bob --> Alice: Response
autonumber inc A
'Now we have 3.1.1
Alice -> Bob: Another authentication request
autonumber inc B
'Now we have 3.2.1
Bob --> Alice: Response
@enduml
|
Вы также можете использовать значение
autonumber
вместе с
%autonumber%
переменной:
🎉 Copied!
|
@startuml
autonumber 10
Alice -> Bob
note right
<U+0025>autonumber<U+0025> работает везде.
Текущее значение этой переменной равно ** %autonumber% **
end note
Bob --> Alice: //This is the response %autonumber%//
@enduml
|
[Ref. QA-7119]
Ключевое слово
title
используется, чтобы добавить название страницы.
Также страницы могут иметь заголовок и футер с помощью ключевых слов
header
и
footer
.
🎉 Copied!
|
@startuml
header Page Header
footer Page %page% of %lastpage%
title Example Title
Alice -> Bob : message 1
Alice -> Bob : message 2
@enduml
|
Ключевое слово
newpage
используется для разбиения диаграм на несколько изображений.
Вы можете указать название страницы сразу после ключевого слова
newpage
. Это название заменяет указанное ранее название, если таковое имеется.
Это очень полезно для печати длинных диаграмм на нескольких страницах.
(Примечание: это действительно работает. В превью показана только первая страница, но это из-за особенностей онлайн отображения.)
🎉 Copied!
|
@startuml
Alice -> Bob : message 1
Alice -> Bob : message 2
newpage
Alice -> Bob : message 3
Alice -> Bob : message 4
newpage A title for the\nlast page
Alice -> Bob : message 5
Alice -> Bob : message 6
@enduml
|
Группировать сообщения возможно используя следующие ключевые слова:
alt/else
opt
loop
par
break
critical
group
, соответствует тексту который должен быть отображен
Имеется возможность добавить текст который должен быть отображен в заголовке. (для
group
, смотрите следующий параграф
'Дополнительная метка группы').
Ключевое слово
end
используется для завершения группы.
Допустимо вложение группы в группу.
🎉 Copied!
|
@startuml
Alice -> Bob: Authentication Request
alt successful case
Bob -> Alice: Authentication Accepted
else some kind of failure
Bob -> Alice: Authentication Failure
group My own label
Alice -> Log : Log attack start
loop 1000 times
Alice -> Bob: DNS Attack
end
Alice -> Log : Log attack end
end
else Another type of failure
Bob -> Alice: Please repeat
end
@enduml
|
Для
group
можно добавить дополнительный текст или метку, которые будут отображаться в заголовке. Для этого их надо указать между квадратными скобками
[
и
]
.
🎉 Copied!
|
@startuml
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Failure
group Моя основная метка [Моя дополнительна метка]
Alice -> Log : Log attack start
loop 1000 times
Alice -> Bob: DNS Attack
end
Alice -> Log : Log attack end
end
@enduml
|
[Ссылка QA-2503]
Можно помещать заметки к сообщениям, используя ключевые слова
note left
(заметка слева)
или
note right
(заметка справа)
сразу после сообщения.
Можно делать многострочные заметки используя ключевое слово
end note
для завершения заметки.
🎉 Copied!
|
@startuml
Alice->Bob : привет
note left: это первая заметка
Bob->Alice : ага
note right: это другая заметка
Bob->Bob : я размышляю над этим
note left
заметки
могут занимать
несколько строчек
end note
@enduml
|
Возможно размещение примечаний относительно участников с использованием ключевых слов
note left of
(разместить слева от),
note right of
(разместить права от) или
note over
(разместить над).
Возможно выделить примечание, изменив
цвет фона.
Можно делать многострочные заметки используя ключевое слово
end note
для завершения заметки.
🎉 Copied!
|
@startuml
participant Alice
participant Bob
note left of Alice #aqua
Будет отображено
слева от Алисы
end note
note right of Alice: Будет отображено справа от Алисы
note over Alice: Будет отображено над Алисой.
note over Alice, Bob #FFAAAA: Будет отображено\n над Алисой и Бобом.
note over Bob, Alice
А это еще
один пример
длинной заметки.
end note
@enduml
|
Вы можете использовать
hnote
и
rnote
для изменения формы примечаний:
hnote
для примечания в виде шестиугольника;
rnote
для примечания в виде прямоугольника.
🎉 Copied!
|
@startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
"r" as rectangle
"h" as hexagon
endrnote
rnote over server
что-то важное
на нескольких
строчках
endrnote
hnote over caller
что-то не важное
на нескольких
строчках
endhnote
@enduml
|
[Ref. QA-1765]
Вы можете сделать заметку, отображаемую поверх всем участников, используя синтаксис:
note across: note_description
🎉 Copied!
|
@startuml
Alice->Bob:m1
Bob->Charlie:m2
note over Alice, Charlie: Старый способ отображения поверх всех участников. Задается как:\n ""note over //FirstPart, LastPart//"".
note across: Новый метод. Задается как:\n""note across""
Bob->Alice
hnote across:Еще одна заметка поверх всех участников.
@enduml
|
[Ref. QA-9738]
Вы можете выровнить несколько заметок по одному уровню используя синтаксис
/
:
- без
/
(по умолчанию заметки не выравниваются)
🎉 Copied!
|
@startuml
note over Alice : initial state of Alice
note over Bob : initial state of Bob
Bob -> Alice : hello
@enduml
|
🎉 Copied!
|
@startuml
note over Alice : initial state of Alice
/ note over Bob : initial state of Bob
Bob -> Alice : hello
@enduml
|
[Ref. QA-354]
Так же можно использовать форматирование на Creole:
🎉 Copied!
|
@startuml
participant Alice
participant "The **Famous** Bob" as Bob
Alice -> Bob : hello --there--
... Some ~~long delay~~ ...
Bob -> Alice : ok
note left
This is **bold**
This is //italics//
This is ""monospaced""
This is --stroked--
This is __underlined__
This is ~~waved~~
end note
Alice -> Bob : A //well formatted// message
note right of Alice
This is <back:cadetblue><size:18>displayed</size></back>
__left of__ Alice.
end note
note left of Bob
<u:red>This</u> is <color #118888>displayed</color>
**<color purple>left of</color> <s:red>Alice</strike> Bob**.
end note
note over Alice, Bob
<w:#FF33FF>This is hosted</w> by <img sourceforge.jpg>
end note
@enduml
|
Вы можете использовать разделитель
==
, чтобы разбить диаграмму на несколько логических этапов.
🎉 Copied!
|
@startuml
== Initialization ==
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
== Repetition ==
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
|
Вы можете использовать ссылки в диаграммах с помощью ключевого слова
ref over
.
🎉 Copied!
|
@startuml
participant Alice
actor Bob
ref over Alice, Bob : инициализация
Alice -> Bob : hello
ref over Bob
Тут мы можем занять
несколько строчек
end ref
@enduml
|
Вы можете использовать конструкцию
...
для представления временной задержки в процессе на диаграмме.
При необходимости можно снабдить задержку комментарием.
🎉 Copied!
|
@startuml
Alice -> Bob: Запрос авторизации
...
Bob --> Alice: Авторизация
...5 минут спустя...
Bob --> Alice: Пока !
@enduml
|
По умолчанию текст сообщения отображается в одну строку.
Перенос текста для его отображения на нескольких строках можно сделать:
- вручную, добавив
\n
в месте разрыва строки;
- автоматически, установив максимальное количество символов в строке с использованием параметра
maxMessageSize
. При этом перенос осуществляется по словам.
🎉 Copied!
|
@startuml
skinparam maxMessageSize 100
participant a
participant b
a -> b :этот\nтекст\nперенесен\nвручную
a -> b :этот текст очень длинный и перенесен автоматически
@enduml
|
Вы можете использовать
|||
чтобы показать промежутки в диаграммах..
Так же возможно указать промежуток в пикселях.
🎉 Copied!
|
@startuml
Alice -> Bob: message 1
Bob --> Alice: ok
|||
Alice -> Bob: message 2
Bob --> Alice: ok
||45||
Alice -> Bob: message 3
Bob --> Alice: ok
@enduml
|
activate
и
deactivate
используются чтобы обозначить активацию участника.
Линия существования появляется в момент активации участника.
activate
и
deactivate
применяются к предыдущему сообщению.
destroy
обозначает конец линии существования участника.
🎉 Copied!
|
@startuml
participant User
User -> A: DoWork
activate A
A -> B: << createRequest >>
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: RequestCreated
deactivate B
A -> User: Done
deactivate A
@enduml
|
Можно использовать вложенные линии существования, и можно указывать
цвет для этих линий.
🎉 Copied!
|
@startuml
participant User
User -> A: DoWork
activate A #FFBBBB
A -> A: Internal call
activate A #DarkSalmon
A -> B: << createRequest >>
activate B
B --> A: RequestCreated
deactivate B
deactivate A
A -> User: Done
deactivate A
@enduml
|
Autoactivation is possible and works with the return keywords:
Автоактивация также возможна, для этого используйте команду
autoactivate on
. Для определения конца активации используются команды
return
:
🎉 Copied!
|
@startuml
autoactivate on
alice -> bob : старт
bob -> bob : собственный старт
bill -> bob #005500 : старт другого потока
bob -> george ** : создание
return финиш другого потока
return собственный финиш
bob -> george !! : удаление
return финиш
@enduml
|
Команда
return
генерирует сообщение возврата с необязательной текстовой меткой.
Точкой возврата является та линия, которая вызвала последнюю активацию текущей линии жизни.
Синтаксис -
return label
, где
label
, если указано, является любой строкой, приемлемой для обычных сообщений.
🎉 Copied!
|
@startuml
Bob -> Alice : привет
activate Alice
Alice -> Alice : какое-то действие
return пока
@enduml
|
Вы можете использовать ключевое слово
create
перед декларацией сообщения для акцентирования факта, что принимающий участник
создается данным сообщением.
🎉 Copied!
|
@startuml
Bob -> Alice : hello
create Other
Alice -> Other : new
create control String
Alice -> String
note right : You can also put notes!
Alice --> Bob : ok
@enduml
|
Сразу после указания целевого участника можно использовать следующий синтаксис:
++
Активировать цель (опционально за этим может следовать цвет)
--
Деактивировать источник
**
Создать экземпляр цели
!!
Уничтожить экземпляр цели
🎉 Copied!
|
@startuml
alice -> bob ++ : hello
bob -> bob ++ : self call
bob -> bib ++ #005500 : hello
bob -> george ** : create
return done
return rc
bob -> george !! : delete
return success
@enduml
|
Затем вы можете смешивать активацию и деактивацию в одной строке
🎉 Copied!
|
@startuml
alice -> bob ++ : hello1
bob -> charlie --++ : hello2
charlie --> alice -- : ok
@enduml
|
🎉 Copied!
|
@startuml
@startuml
alice -> bob --++ #gold: hello
bob -> alice --++ #gold: you too
alice -> bob --: step1
alice -> bob : step2
@enduml
@enduml
|
[Ссылка на QA-4834, QA-9573 и QA-13234]
Вы можете использовать входящие или исходящие стрелки если вы хотите сфокусироваться на части диаграммы.
Используйте квадратные скобки для указания левой "
[
" или правой "
]
" стороны диаграммы
🎉 Copied!
|
@startuml
[-> A: DoWork
activate A
A -> A: Internal call
activate A
A ->] : << createRequest >>
A<--] : RequestCreated
deactivate A
[<- A: Done
deactivate A
@enduml
|
Вы также можете использовать следующий синтаксис:
🎉 Copied!
|
@startuml
participant Alice
participant Bob #lightblue
Alice -> Bob
Bob -> Carol
...
[-> Bob
[o-> Bob
[o->o Bob
[x-> Bob
...
[<- Bob
[x<- Bob
...
Bob ->]
Bob ->o]
Bob o->o]
Bob ->x]
...
Bob <-]
Bob x<-]
@enduml
|
Вы можете использовать
короткие стрелки с помощью
?
🎉 Copied!
|
@startuml
?-> Alice : ""?->""\n**short** to actor1
[-> Alice : ""[->""\n**from start** to actor1
[-> Bob : ""[->""\n**from start** to actor2
?-> Bob : ""?->""\n**short** to actor2
Alice ->] : ""->]""\nfrom actor1 **to end**
Alice ->? : ""->?""\n**short** from actor1
Alice -> Bob : ""->"" \nfrom actor1 to actor2
@enduml
|
[Ссылка на QA-310]
С помощью
teoz
можно добавить якоря на диаграмму и использовать якоря для указания длительности
🎉 Copied!
|
@startuml
!pragma teoz true
{start} Alice -> Bob : старт некоторых работ, занимающих какое-то время
Bob -> Max : что-то одно
Max -> Bob : что-то другое
{end} Bob -> Alice : конец
{start} <-> {end} : прошедшее время
@enduml
|
Для указания прагмы можно использовать опцию
командной строки -P
java -jar plantuml.jar -Pteoz=true
[Ref. issue-582]
Можно добавить стереотипы к участникам используя
<<
и
>>
.
В стереотипе вы можете добавить отмеченного участника в цветном круге используя синтаксис
(X,color)
.
🎉 Copied!
|
@startuml
participant "Famous Bob" as Bob << Generated >>
participant Alice << (C,#ADD1B2) Testable >>
Bob->Alice: First message
@enduml
|
По умолчанию, для отображения стереотипа используются кавычки "ёлочки".
Вы можете изменить это поведение, используя skinparam
guillemet
:
🎉 Copied!
|
@startuml
skinparam guillemet false
participant "Famous Bob" as Bob << Generated >>
participant Alice << (C,#ADD1B2) Testable >>
Bob->Alice: First message
@enduml
|
🎉 Copied!
|
@startuml
participant Bob << (C,#ADD1B2) >>
participant Alice << (C,#ADD1B2) >>
Bob->Alice: First message
@enduml
|
Чтобы указать желаемое расположение стереотипа используйте команды (
top
или
bottom
) вместе с командой
skinparam stereotypePosition
.
Расположение сверху (настройка по умолчанию)
🎉 Copied!
|
@startuml
skinparam stereotypePosition top
participant A<<st1>>
participant B<<st2>>
A --> B : stereo test
@enduml
|
Расположение снизу
🎉 Copied!
|
@startuml
skinparam stereotypePosition bottom
participant A<<st1>>
participant B<<st2>>
A --> B : stereo test
@enduml
|
[См. QA-18650]
Вы можете использовать форматирование на
Creole для заголовков.
🎉 Copied!
|
@startuml
title __Simple__ **communication** example
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
|
C помощью последовательности символов \n
вы можете добавить перевод строки в заголовок.
🎉 Copied!
|
@startuml
title __Simple__ communication example\non several lines
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
|
Вы также можете задать заголовок на нескольких строках, используя ключевые слова title
и
end title
.
🎉 Copied!
|
@startuml
title
<u>Simple</u> communication example
on <i>several</i> lines and using <font color=red>html</font>
This is hosted by <img:sourceforge.jpg>
end title
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
|
Можно создать прямоугольник вокруг участников, используя комманды
box
и
end box
.
Вы можете задать настраиваемый заголовок и
цвет фона в прямоугольнике группировки после команды
box
.
🎉 Copied!
|
@startuml
box "Internal Service" #LightBlue
participant Bob
participant Alice
end box
participant Other
Bob -> Alice : hello
Alice -> Other : hello
@enduml
|
Архитектура teoz позволяет также создавать вложенные группы — группы внутри групп — например:
🎉 Copied!
|
@startuml
!pragma teoz true
box "Внутренний сервис" #LightBlue
participant Bob
box "Подкоманда"
participant Alice
participant John
end box
end box
participant Other
Bob -> Alice : hello
Alice -> John : hello
John -> Other: Hello
@enduml
|
Вы можете использовать ключевое слово
hide footbox
для удаления футера из диаграммы.
🎉 Copied!
|
@startuml
hide footbox
title Footer removed
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
@enduml
|
Вы можете использовать команду
skinparam для изменения шрифтов и цветов диаграммы
Вы можете использовать данную команду :
Вы можете изменить другие параметры отображения, как видно из следующих примеров:
🎉 Copied!
|
@startuml
skinparam sequenceArrowThickness 2
skinparam roundcorner 20
skinparam maxmessagesize 60
skinparam sequenceParticipant underline
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoWork
activate A
A -> B: Create Request
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: Request Created
deactivate B
A --> User: Done
deactivate A
@enduml
|
🎉 Copied!
|
@startuml
skinparam backgroundColor #EEEBDC
skinparam handwritten true
skinparam sequence {
ArrowColor DeepSkyBlue
ActorBorderColor DeepSkyBlue
LifeLineBorderColor blue
LifeLineBackgroundColor #A9DCDF
ParticipantBorderColor DeepSkyBlue
ParticipantBackgroundColor DodgerBlue
ParticipantFontName Impact
ParticipantFontSize 17
ParticipantFontColor #A9DCDF
ActorBackgroundColor aqua
ActorFontColor DeepSkyBlue
ActorFontSize 17
ActorFontName Aapex
}
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoWork
activate A
A -> B: Create Request
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: Request Created
deactivate B
A --> User: Done
deactivate A
@enduml
|
Вы можете изменить некоторые настройки отступов
🎉 Copied!
|
@startuml
skinparam ParticipantPadding 20
skinparam BoxPadding 10
box "Foo1"
participant Alice1
participant Alice2
end box
box "Foo2"
participant Bob1
participant Bob2
end box
Alice1 -> Bob1 : hello
Alice1 -> Out : out
@enduml
|
Обычная стрелка
🎉 Copied!
|
@startuml
participant Alice as a
participant Bob as b
a -> b : ""-> ""
a ->> b : ""->> ""
a -\ b : ""-\ ""
a -\\ b : ""-\\\\""
a -/ b : ""-/ ""
a -// b : ""-// ""
a ->x b : ""->x ""
a x-> b : ""x-> ""
a o-> b : ""o-> ""
a ->o b : ""->o ""
a o->o b : ""o->o ""
a <-> b : ""<-> ""
a o<->o b : ""o<->o""
a x<->x b : ""x<->x""
a ->>o b : ""->>o ""
a -\o b : ""-\o ""
a -\\o b : ""-\\\\o""
a -/o b : ""-/o ""
a -//o b : ""-//o ""
a x->o b : ""x->o ""
@enduml
|
Возвращающаяся трелка
🎉 Copied!
|
@startuml
participant Alice as a
participant Bob as b
a -> a : ""-> ""
a ->> a : ""->> ""
a -\ a : ""-\ ""
a -\\ a : ""-\\\\""
a -/ a : ""-/ ""
a -// a : ""-// ""
a ->x a : ""->x ""
a x-> a : ""x-> ""
a o-> a : ""o-> ""
a ->o a : ""->o ""
a o->o a : ""o->o ""
a <-> a : ""<-> ""
a o<->o a : ""o<->o""
a x<->x a : ""x<->x""
a ->>o a : ""->>o ""
a -\o a : ""-\o ""
a -\\o a : ""-\\\\o""
a -/o a : ""-/o ""
a -//o a : ""-//o ""
a x->o a : ""x->o ""
@enduml
|
Входящие и исходящие сообщения (с '[', ']')
Входящие сообщения (с '[')
🎉 Copied!
|
@startuml
participant Alice as a
participant Bob as b
[-> b : ""[-> ""
[->> b : ""[->> ""
[-\ b : ""[-\ ""
[-\\ b : ""[-\\\\""
[-/ b : ""[-/ ""
[-// b : ""[-// ""
[->x b : ""[->x ""
[x-> b : ""[x-> ""
[o-> b : ""[o-> ""
[->o b : ""[->o ""
[o->o b : ""[o->o ""
[<-> b : ""[<-> ""
[o<->o b : ""[o<->o""
[x<->x b : ""[x<->x""
[->>o b : ""[->>o ""
[-\o b : ""[-\o ""
[-\\o b : ""[-\\\\o""
[-/o b : ""[-/o ""
[-//o b : ""[-//o ""
[x->o b : ""[x->o ""
@enduml
|
Исходящие сообщения (с ']')
🎉 Copied!
|
@startuml
participant Alice as a
participant Bob as b
a ->] : ""->] ""
a ->>] : ""->>] ""
a -\] : ""-\] ""
a -\\] : ""-\\\\]""
a -/] : ""-/] ""
a -//] : ""-//] ""
a ->x] : ""->x] ""
a x->] : ""x->] ""
a o->] : ""o->] ""
a ->o] : ""->o] ""
a o->o] : ""o->o] ""
a <->] : ""<->] ""
a o<->o] : ""o<->o]""
a x<->x] : ""x<->x]""
a ->>o] : ""->>o] ""
a -\o] : ""-\o] ""
a -\\o] : ""-\\\\o]""
a -/o] : ""-/o] ""
a -//o] : ""-//o] ""
a x->o] : ""x->o] ""
@enduml
|
Короткие входящие и исходящие сообщения (с '?')
Короткие входящие (с '?')
🎉 Copied!
|
@startuml
participant Alice as a
participant Bob as b
a -> b : //Длинная надпись//
?-> b : ""?-> ""
?->> b : ""?->> ""
?-\ b : ""?-\ ""
?-\\ b : ""?-\\\\""
?-/ b : ""?-/ ""
?-// b : ""?-// ""
?->x b : ""?->x ""
?x-> b : ""?x-> ""
?o-> b : ""?o-> ""
?->o b : ""?->o ""
?o->o b : ""?o->o ""
?<-> b : ""?<-> ""
?o<->o b : ""?o<->o""
?x<->x b : ""?x<->x""
?->>o b : ""?->>o ""
?-\o b : ""?-\o ""
?-\\o b : ""?-\\\\o ""
?-/o b : ""?-/o ""
?-//o b : ""?-//o ""
?x->o b : ""?x->o ""
@enduml
|
Короткие исходящие (с '?')
🎉 Copied!
|
@startuml
participant Alice as a
participant Bob as b
a -> b : //Длинная надпись//
a ->? : ""->? ""
a ->>? : ""->>? ""
a -\? : ""-\? ""
a -\\? : ""-\\\\?""
a -/? : ""-/? ""
a -//? : ""-//? ""
a ->x? : ""->x? ""
a x->? : ""x->? ""
a o->? : ""o->? ""
a ->o? : ""->o? ""
a o->o? : ""o->o? ""
a <->? : ""<->? ""
a o<->o? : ""o<->o?""
a x<->x? : ""x<->x?""
a ->>o? : ""->>o? ""
a -\o? : ""-\o? ""
a -\\o? : ""-\\\\o?""
a -/o? : ""-/o? ""
a -//o? : ""-//o? ""
a x->o? : ""x->o? ""
@enduml
|
По умолчанию
🎉 Copied!
|
@startuml
Bob -> Alice : hello
Alice -> Bob : ok
@enduml
|
LifelineStrategy
Этот стиль и используется по умолчанию
🎉 Copied!
|
@startuml
skinparam lifelineStrategy nosolid
Bob -> Alice : hello
Alice -> Bob : ok
@enduml
|
[Ссылка на QA-9016]
Для того, чтобы сделать вертикальные линии сплошными используйте команду
skinparam lifelineStrategy solid
🎉 Copied!
|
@startuml
skinparam lifelineStrategy solid
Bob -> Alice : hello
Alice -> Bob : ok
@enduml
|
[Ссылка на QA-2794]
style strictuml
Для отображения в строгом соответствии с UML
(также меняется стиль стрелок: кончики отображаются как треугольники), вы можете использовать
skinparam style strictuml
🎉 Copied!
|
@startuml
skinparam style strictuml
Bob -> Alice : hello
Alice -> Bob : ok
@enduml
|
[ссылка QA-1047]
По умолчанию отображаются все участники.
🎉 Copied!
|
@startuml
participant Alice
participant Bob
participant Carol
Alice -> Bob : Привет
@enduml
|
Но Вы можете скрыть таких участников использя команду
hide unlinked
.
🎉 Copied!
|
@startuml
hide unlinked
participant Alice
participant Bob
participant Carol
Alice -> Bob : Привет
@enduml
|
[Ref. QA-4247]
Можно задать
цвет для сгруппированных сообщений:
🎉 Copied!
|
@startuml
Alice -> Bob: Запрос авторизации
alt#Gold #LightBlue Успешный кейс
Bob -> Alice: Запрос удовлетворен
else #Pink Ошибка
Bob -> Alice: Запрос отклонен
end
@enduml
|
[Ref. QA-4750 and QA-6410]
🎉 Copied!
|
@startuml
mainframe Это **основной фрейм**
Alice->Bob : Привет
@enduml
|
[Ref. QA-4019 and Issue#148]
You can use the
(nn)
option (before or after arrow) to make the arrows slanted, where
nn is the number of shift pixels.
[Available only after v1.2022.6beta+]
🎉 Copied!
|
@startuml
A ->(10) B: text 10
B ->(10) A: text 10
A ->(10) B: text 10
A (10)<- B: text 10
@enduml
|
🎉 Copied!
|
@startuml
A ->(40) B++: Rq
B -->(20) A--: Rs
@enduml
|
[Ref. QA-14145]
🎉 Copied!
|
@startuml
!pragma teoz true
A ->(50) C: Starts\nwhen 'B' sends
& B ->(25) C: \nBut B's message\n arrives before A's
@enduml
|
[Ref. QA-6684]
🎉 Copied!
|
@startuml
!pragma teoz true
S1 ->(30) S2: msg 1\n
& S2 ->(30) S1: msg 2
note left S1: msg\nS2 to S1
& note right S2: msg\nS1 to S2
@enduml
|
[Ref. QA-1072]
Чтобы отображать команды параллельно используйте команду
&
(амперсанд) в окружении
teoz:
🎉 Copied!
|
@startuml
!pragma teoz true
Alice -> Bob : hello
& Bob -> Charlie : hi
@enduml
|
(См. подробнее про архитектуру Teoz)