Диаграмма последовательности
Диаграммы последовательности в PlantUML полностью описываются текстом. Вы указываете участников и сообщения, которыми они обмениваются, а компоновка, интервалы и стрелки формируются автоматически.- Текст на входе, диаграмма на выходе. Исходный код является единственным источником истины: что вы пишете, то и отрисовывается.
- Легко редактировать. Достаточно изменить строку текста вместо перетаскивания блоков.
- Быстрая итерация. Инструменты предпросмотра отрисовывают диаграмму прямо во время ввода, что позволяет замечать ошибки на ранней стадии.
Основные примеры
В диаграммах последовательности на языке PlantUML команда -> используется для отображения сообщения между двумя участниками, которые распознаются автоматически, и не обязательно должны быть объявлены заранее.
Используйте команду -->, чтобы изобразить пунктирную линию и повысить читаемость.
Для того, чтобы улучшить читаемость диаграммы, не меняя визуального представления, используйте команды в виде стрелок, которые направлены обратно <- или <--. Однако, обратите внимание на то, что такое утверждение об использовании этих команд справедливо только для диаграмм последовательности. Для других инструментов правила отличаются.
|
🎉 Copied!
|
|
Объявление участников
При использовании ключевого слова participant возможно получить больший контроль над отображением участников.
Порядок перечисления участников задаёт также пороядок отображения участников по умолчанию.
Использование других ключевых слов (отличных от participant) позволяет изменить форму представления (отображения) участника:
actorboundarycontrolentitydatabasecollectionsqueue
|
🎉 Copied!
|
|
Возможно переименовать участника используя ключевое слово
as.
Также возможно изменить цвет фона участника.
|
🎉 Copied!
|
|
Возможно изменить порядок следования участников с помощью ключевого слова
order.
|
🎉 Copied!
|
|
WARNING
This translation need to be updated. WARNING
Объявление участника в многострочной форме
Вы можете объявить участника в многострочной форме.
|
🎉 Copied!
|
|
[Ссылка QA-15232]
Использование небуквенных символов в названиях участников
Вы можете использовать кавычки для задания участников. Также Вы можете использовать ключевое слово as для присвоения псевдонимов к этим участникам.
|
🎉 Copied!
|
|
Сообщения к самому себе
Участник может посылать сообщения сам себе.
Также возможно создание многострочных сообщений, используя \n.
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
[Ref. QA-1361]
Выравнивание текста
Расположение текста относительно стрелки можно указывать как left (лево), right (право) или center (центер) используя слово skinparam sequenceMessageAlign.
Вы также можете использовать direction или reverseDirection для выравнивания текста относительно направления стрелки. Больше подробнестей и примеров можно найти на странице skinparam.
|
🎉 Copied!
|
|
Текст ответного сообщения под стрелкой
Вы можете разместить текст ответного сообщения под стрелкой используя командуskinparam responseMessageBelowArrow true.
|
🎉 Copied!
|
|
Change Actor style
You can change the actor style from stick man (by default) to:
- an awesome man with the
skinparam actorStyle awesomecommand; - a hollow man with the
skinparam actorStyle hollowcommand.
Stick man (by default)
|
🎉 Copied!
|
|
Awesome man
|
🎉 Copied!
|
|
[Ref. QA-10493]
Hollow man
|
🎉 Copied!
|
|
[Ref. PR#396]
Изменение стиля стрелок
Можно изменить стиль стрелок следующими способами:
- закончить стрелку с помощью
xдля обозначения потерянного сообщения - использовать
\или/вместо<или>для создания только верхней или нижней части стрелки - повторить окончание стрелки (например,
>>or//) для тонкой отрисовки - использовать
--вместо-для создания пунктирной стрелки - заканчивать символом "o" во главе стрелки
- использовать двунаправленные стрелки
<->
|
🎉 Copied!
|
|
Изменить цвет стрелок
Вы можете изменить цвет отдельных стрелок, используя следующие правила:
|
🎉 Copied!
|
|
Нумерация сообщений в последовательностях
Ключевое слово autonumber используется для автоматической нумерации сообщений.
|
🎉 Copied!
|
|
Вы можете обозначить число с которого начнется отсчет
autonumber <start>, а также число которое будет использоваться в качестве инкремента autonumber <start> <increment>.
|
🎉 Copied!
|
|
Можно задавать формат чисел, указав его в двойных кавычках. Форматирование выполнено с использованием класса Java
DecimalFormat
(0 означает цифру, # означает цифру или ноль если пусто).
При форматировании также можно использовать теги html.
|
🎉 Copied!
|
|
Вы так же можете использовать
autonumber stop и autonumber resume <increment> <format> чтобы соотсетственно остановить и продолжить автоматическое нумерование.
|
🎉 Copied!
|
|
Ваше число, с которого начнется отсчет может быть последовательностью из двух или трех цифр, разделенных знаками
., ;, , или :. Также это могут одновременно два разных знака из этого списка. Например: 1.1.1 или 1.1:1.
Автоматически инкрементируется последняяя цифра из указанной последовательности.
Для того, чтобы инкрементировать первую цифру последовательности, укажите autonumber inc A. Для инкрементирования второй цифры последовательности укажите соответственно autonumber inc B.
|
🎉 Copied!
|
|
Вы также можете использовать значение
autonumber вместе с %autonumber% переменной:
|
🎉 Copied!
|
|
[Ref. QA-7119]
Название, Заголовок и подвал страницы
Ключевое слово title используется, чтобы добавить название страницы.
Также страницы могут иметь заголовок и подвал с помощью ключевых слов header и footer.
|
🎉 Copied!
|
|
Разбиение диаграмм
Ключевое слово newpage используется для разбиения диаграм на несколько изображений.
Вы можете указать название страницы сразу после ключевого слова newpage. Это название заменяет указанное ранее название, если таковое имеется.
Это очень полезно для печати длинных диаграмм на нескольких страницах.
(Примечание: это действительно работает. В превью показана только первая страница, но это из-за особенностей онлайн отображения.)
|
🎉 Copied!
|
|
WARNING
This translation need to be updated. WARNING
Группировка сообщений
Группировать сообщения возможно используя следующие ключевые слова:
alt/elseoptloopparbreakcriticalgroup, соответствует тексту который должен быть отображен
group, смотрите следующий параграф 'Дополнительная метка группы').
Ключевое слово end используется для завершения группы.
Допустимо вложение группы в группу.
|
🎉 Copied!
|
|
Дополнительная метка группы
Для group можно добавить дополнительный текст или метку, которые будут отображаться в заголовке. Для этого их надо указать между квадратными скобками [ и ].
|
🎉 Copied!
|
|
[Ссылка QA-2503]
Partition across the entire width
You can use partition command to group messages horizontally across the entire width (full-width).
Messages are not grouped horizontally across the entire width (by default)
|
🎉 Copied!
|
|
Grouping messages horizontally across the entire width (with teoz mode)
|
🎉 Copied!
|
|
[Ref. GH-589]
Примечания в сообщениях
Можно помещать заметки к сообщениям, используя ключевые слова note left (заметка слева)
или note right (заметка справа) сразу после сообщения.
Можно делать многострочные заметки используя ключевое слово end note для завершения заметки.
|
🎉 Copied!
|
|
Другие примечания
Возможно размещение примечаний относительно участников с использованием ключевых слов note left of (разместить слева от), note right of (разместить права от) или note over (разместить над).
Возможно выделить примечание, изменив цвет фона.
Можно делать многострочные заметки используя ключевое слово end note для завершения заметки.
|
🎉 Copied!
|
|
Изменение формы примечаний
Вы можете использовать hnote и rnote для изменения формы примечаний:
hnoteдля примечания в виде шестиугольника;rnoteдля примечания в виде прямоугольника.
|
🎉 Copied!
|
|
[Ref. QA-1765]
Заметка отображаемая поверх всех участников
Вы можете сделать заметку, отображаемую поверх всем участников, используя синтаксис:
note across: note_description
|
🎉 Copied!
|
|
[Ref. QA-9738]
Выравнивание нескольких заметок по одному уровню [/]
Вы можете выровнить несколько заметок по одному уровню используя синтаксис /:
- без
/(по умолчанию заметки не выравниваются)
|
🎉 Copied!
|
|
- с
/(заметки выровнены)
|
🎉 Copied!
|
|
[Ref. QA-354]
Creole и HTML
Так же можно использовать форматирование на Creole:
|
🎉 Copied!
|
|
WARNING
This translation need to be updated. WARNING
Разделитель
Вы можете использовать разделитель ==, чтобы разбить диаграмму на несколько логических этапов.
|
🎉 Copied!
|
|
Ссылки
Вы можете использовать ссылки в диаграммах с помощью ключевого слова ref over.
|
🎉 Copied!
|
|
Задержка на диаграммах
Вы можете использовать конструкцию ... для представления временной задержки в процессе на диаграмме.
При необходимости можно снабдить задержку комментарием.
|
🎉 Copied!
|
|
Перенос текста
По умолчанию текст сообщения отображается в одну строку.
Перенос текста для его отображения на нескольких строках можно сделать:
- вручную, добавив
\nв месте разрыва строки; - автоматически, установив максимальное количество символов в строке с использованием параметра
maxMessageSize. При этом перенос осуществляется по словам.
|
🎉 Copied!
|
|
Message text spans beyond the involved participants
You can use sequenceMessageSpan command to allow message text to span beyond the involved participants.
Without sequenceMessageSpan (by default)
|
🎉 Copied!
|
|
With sequenceMessageSpan (on teoz mode)
|
🎉 Copied!
|
|
[Ref. GH-2386]
Промежутки
Вы можете использовать ||| чтобы показать промежутки в диаграммах..
Так же возможно указать промежуток в пикселях.
|
🎉 Copied!
|
|
Активация и деактивация линии существования
activate и deactivate используются чтобы обозначить активацию участника.
Линия существования появляется в момент активации участника.
activate и deactivate применяются к предыдущему сообщению.
destroy обозначает конец линии существования участника.
|
🎉 Copied!
|
|
Можно использовать вложенные линии существования, и можно указывать цвет для этих линий.
|
🎉 Copied!
|
|
Автоактивация также возможна, для этого используйте команду
autoactivate on. Для определения конца активации используются команды return:
|
🎉 Copied!
|
|
Return
Команда return генерирует сообщение возврата с необязательной текстовой меткой.
Точкой возврата является та линия, которая вызвала последнюю активацию текущей линии жизни.
Синтаксис - return label, где label, если указано, является любой строкой, приемлемой для обычных сообщений.
|
🎉 Copied!
|
|
Отображение создания участника процессом
Вы можете использовать ключевое слово create перед декларацией сообщения для акцентирования факта, что принимающий участник создается данным сообщением.
|
🎉 Copied!
|
|
Быстрый синтаксис для активации, деактивации и создания
Сразу после указания целевого участника можно использовать следующий синтаксис:
++Активировать цель (опционально за этим может следовать цвет)--Деактивировать источник**Создать экземпляр цели!!Уничтожить экземпляр цели
|
🎉 Copied!
|
|
Затем вы можете смешивать активацию и деактивацию в одной строке
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
[Ссылка на QA-4834, QA-9573 и QA-13234]
Входящие и исходящие сообщения
Вы можете использовать входящие или исходящие стрелки если вы хотите сфокусироваться на части диаграммы.
Используйте квадратные скобки для указания левой "[" или правой "]" стороны диаграммы
|
🎉 Copied!
|
|
Вы также можете использовать следующий синтаксис:
|
🎉 Copied!
|
|
Короткие стрелки для входящих и исходящих сообщений
Вы можете использовать короткие стрелки с помощью ?
|
🎉 Copied!
|
|
[Ссылка на QA-310]
Якоря и длительность
С помощью teoz можно добавить якоря на диаграмму и использовать якоря для указания длительности
|
🎉 Copied!
|
|
Для указания прагмы можно использовать опцию командной строки
-P
java -jar plantuml.jar -Pteoz=true
[Ref. issue-582]
Стереотипы и отметки
Можно добавить стереотипы к участникам используя << и >>.
В стереотипе вы можете добавить отмеченного участника в цветном круге используя синтаксис (X,color).
|
🎉 Copied!
|
|
По умолчанию, для отображения стереотипа используются кавычки "ёлочки". Вы можете изменить это поведение, используя skinparam
guillemet:
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
Расположение стереотипов
Чтобы указать желаемое расположение стереотипа используйте команды (top или bottom) вместе с командой skinparam stereotypePosition.
Расположение сверху (настройка по умолчанию)
|
🎉 Copied!
|
|
Расположение снизу
|
🎉 Copied!
|
|
[См. QA-18650]
Больше информации в заголовках
Вы можете использовать форматирование на Creole для заголовков.
|
🎉 Copied!
|
|
C помощью последовательности символов \n вы можете добавить перевод строки в заголовок.
|
🎉 Copied!
|
|
Вы также можете задать заголовок на нескольких строках, используя ключевые слова title и
end title .
|
🎉 Copied!
|
|
Группировка участников
Можно создать прямоугольник вокруг участников, используя комманды box и
end box.
Вы можете задать настраиваемый заголовок и
цвет фона в прямоугольнике группировки после команды box.
|
🎉 Copied!
|
|
Архитектура teoz позволяет также создавать вложенные группы — группы внутри групп — например:
|
🎉 Copied!
|
|
Удаление подвала
Вы можете использовать ключевое слово hide footbox для удаления подвала из диаграммы.
|
🎉 Copied!
|
|
Skinparam
Вы можете использовать команду skinparam для изменения шрифтов и цветов диаграммы
Вы можете использовать данную команду :
- В определении диаграммы, как любую другую команду,
- В подключенном файле,
- В конфигурационном файле, указанном в командной строке в задании ANT.
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
Изменение отступов
Вы можете изменить некоторые настройки отступов
|
🎉 Copied!
|
|
*[Ref. [QA-5493](https://forum.plantuml.net/5493/provide-skinparam-between-participants-sequence-diagrams)]*
Приложение: Примеры всех типов стрелок
Обычная стрелка
|
🎉 Copied!
|
|
Возвращающаяся стрелка
|
🎉 Copied!
|
|
Входящие и исходящие сообщения (с '[', ']')
Входящие сообщения (с '[')
|
🎉 Copied!
|
|
Исходящие сообщения (с ']')
|
🎉 Copied!
|
|
Короткие входящие и исходящие сообщения (с '?')
Короткие входящие (с '?')
|
🎉 Copied!
|
|
Короткие исходящие (с '?')
|
🎉 Copied!
|
|
Разные стили отображения
По умолчанию
|
🎉 Copied!
|
|
LifelineStrategy
- nosolid
|
🎉 Copied!
|
|
[Ссылка на QA-9016]
- solid
skinparam lifelineStrategy solid
|
🎉 Copied!
|
|
[Ссылка на QA-2794]
style strictuml
Для отображения в строгом соответствии с UML (также меняется стиль стрелок: кончики отображаются как треугольники), вы можете использоватьskinparam style strictuml
|
🎉 Copied!
|
|
[ссылка QA-1047]
*[Ref. [GH-2266](https:github.com/plantuml/plantuml/pull/2266) and [GH-2662](https:github.com/plantuml/plantuml/issues/2662)]*WARNING
This translation need to be updated. WARNING
Скрытие ни с кем не связанных участников
По умолчанию отображаются все участники.
|
🎉 Copied!
|
|
Но Вы можете скрыть таких участников использя команду
hide unlinked.
|
🎉 Copied!
|
|
[Ref. QA-4247]
Цвет сгруппированных сообщений
Можно задать цвет для сгруппированных сообщений:
|
🎉 Copied!
|
|
Основной фрейм
|
🎉 Copied!
|
|
[Ref. QA-4019 and Issue#148]
Slanted or odd arrows
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!
|
|
|
🎉 Copied!
|
|
[Ref. QA-14145]
|
🎉 Copied!
|
|
[Ref. QA-6684]
|
🎉 Copied!
|
|
[Ref. QA-1072]
Параллельные сообщения (в архитектуре teoz)
Чтобы отображать команды параллельно используйте команду & (амперсанд) в окружении teoz:
|
🎉 Copied!
|
|
(См. подробнее про архитектуру Teoz)
Style for Solid Lifeline
By default
|
🎉 Copied!
|
|
Solid Lifeline using style
|
🎉 Copied!
|
|