Вы можете внести свой вклад на этой странице, нажав здесь  (Menu)

 

 

Диаграмма последовательности

 

 

Основные примеры

Последовательность -> используется, чтобы отобразить сообщение между двумя участниками (participants). Не обязательно явно объявлять участников.

Для получения пунктирной стрелки (dotted arrow), используйте -->.

Также возможно использовать <- и <--. Это не изменит отображение, но может улучшить читабельность. Заметьте, что это верно только для диаграмм последовательности, для других диаграмм правила другие.

@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml

 

 

Объявление участников

Возможно изменить порядок участников, используя ключевое слово participant.

Так же возможно использование других ключевых слов, для объявления participant'а:

@startuml
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
collections Foo6
Foo1 -> Foo2 : To boundary
Foo1 -> Foo3 : To control
Foo1 -> Foo4 : To entity
Foo1 -> Foo5 : To database
Foo1 -> Foo6 : To collections

@enduml

Можно переименовать участника используя ключевое слово as

Также возможно изменить цвет фона actor-а или участника, используя имя цвета или его html-код

@startuml
actor Bob #red
' The only difference between actor
'and participant is the drawing
participant Alice
participant "I have a really\nlong name" as L #99FF99
/' You can also declare:
   participant L as "I have a really\nlong name"  #99FF99
  '/

Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
@enduml

Использовав ключевое поле order (порядок) можно настроить порядок печати participant (участника).

@startuml
participant Last order 30
participant Middle order 20
participant First order 10
@enduml

 

 

Использование небуквенных символов в названиях участников

Вы можете использовать кавычки для задания участников. Также Вы можете использовать ключевое слово as для присвоения псевдонимов к этим участникам.

@startuml
Alice -> "Bob()" : Hello
"Bob()" -> "This is very\nlong" as Long
' You can also declare:
' "Bob()" -> Long as "This is very\nlong"
Long --> "Bob()" : ok
@enduml

 

 

Сообщения к самому себе

Участник может посылать сообщения сам себе.

Также возможно создание многострочных используя \n.

@startuml
Alice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml

 

 

Изменить стиль стрелок

Вы можете изменить стиль стрелок следующими способами:

@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

 

 

Изменить цвет стрелок

Вы можете изменить цвет отдельных стрелок, используя следующие правила:

@startuml
Bob -[#red]> Alice : hello
Alice -[#0000FF]->Bob : ok
@enduml

 

 

Нумерация сообщений в последовательностях

Ключевое слово autonumber используется для автоматической нумерации сообщений.

@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml

Вы можете обозначить число с которого начнется отсчет autonumber start , и число которое будет использоваться в качестве инкремента autonumber startincrement.

@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.

@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 incrementformat чтобы соотсетственно остановить и продолжить автоматическое нумерование.

@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

 

 

Page Title, Header and Footer

The title keyword is used to add a title to the page.

Pages can display headers and footers using header and footer.

@startuml

header Page Header
footer Page %page% of %lastpage%

title Example Title

Alice -> Bob : message 1
Alice -> Bob : message 2

@enduml

 

 

Разбиение диаграм

Ключевое слово newpage используется для разбиения диаграм на несколько изображений.

Вы можете указать название страницы сразу после ключевого слова newpage.

Это очень полезно для печати длинных диаграмм на нескольких страницах.

@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

 

 

Группировка сообщений

Группировать сообщения возможно используя следующие ключевые слова:

Имеется возможность добавить текст который должен быть отображен в заголовке. Ключевое слово end используется для завершения группы. Имейте ввиду что допускаются вложенные группы.

Ключевое слово end закрывает группу.

Допустимо вложение группы в группу.

@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

 

 

Примечания в сообщениях

Можно помещать заметки к сообщениям, используя ключевые слова note left или note rightсразу после сообщения.

Можно делать многострочные заметки используя ключевое слово end note для завершения.

@startuml
Alice->Bob : hello
note left: this is a first note

Bob->Alice : ok
note right: this is another note

Bob->Bob : I am thinking
note left
	a note
	can also be defined
	on several lines
end note
@enduml

 

 

Другие примечания

Так же возможно размещение примечаний относитьельно участников с использованием ключевых слов note left of , note right of или note over.

Возможно выделить примечание изменив цвет фона.

Так же возможно многостройное примечани, для этого существует ключевое слово end note.

@startuml
participant Alice
participant Bob
note left of Alice #aqua
	This is displayed 
	left of Alice. 
end note
 
note right of Alice: This is displayed right of Alice.

note over Alice: This is displayed over Alice.

note over Alice, Bob #FFAAAA: This is displayed\n over Bob and Alice.

note over Bob, Alice
	This is yet another
	example of
	a long note.
end note
@enduml

 

 

Изменение формы примечаний

Вы можете использовать hnote и rnote для изменения формы примечаний.

@startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
 "r" as rectangle
 "h" as hexagon
endrnote
@enduml

 

 

Creole и HTML

Так же можно использовать форматирование на Creole:

@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

 

 

Разделитель

Вы можете использовать разделитель "==", чтобы разбить диаграмму на несколько этапов.

@startuml

== Initialization ==

Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

== Repetition ==

Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response

@enduml

 

 

Ссылки

Вы можете использовать ссылки в диаграммах с помощью ключевого слова ref over.

@startuml
participant Alice
actor Bob

ref over Alice, Bob : init

Alice -> Bob : hello

ref over Bob
  This can be on
  several lines
end ref
@enduml

 

 

Задержка на диаграммах

Вы можете использовать конструкцию ... для представления временной задержки в процессе на диаграмме. При необходимости можно снабдить задержку комментарием.

@startuml

Alice -> Bob: Authentication Request
...
Bob --> Alice: Authentication Response
...5 minutes later...
Bob --> Alice: Bye !

@enduml

 

 

Промежутки

Вы можете использовать ||| чтобы показать промежутки в диаграммах..

Так же возможно указать промежуток в пикселях.

@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 обозначает конец линии существования участника.

@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

Можно использовать вложенные линии существования, и возможно добавлять цвет линии существования

@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

 

 

Return

A new command return for generating a return message with optional text label. The point returned to is the point that cause the most recently activated life-line. The syntax is simply return label where label, if provided, can be any string acceptable on conventional messages.

@startuml
Bob -> Alice : hello
activate Alice
Alice -> Alice : some action
return bye
@enduml

 

 

Отображение создания участника процессом

Вы можете использовать ключевое слово create перед декларацией сообщения для акцентирования факта, что принимающий участник создается данным сообщением.

@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

 

 

Входящие и исходящие сообщения

Вы можете использовать входящие или исходящие стрелки если вы хотите сфокусироваться на части диаграммы.

Используйте квадратные скобки для указания левой "[" или правой "]" стороны диаграммы

@startuml
[-> A: DoWork

activate A

A -> A: Internal call
activate A

A ->] : << createRequest >>

A<--] : RequestCreated
deactivate A
[<- A: Done
deactivate A
@enduml

Вы также можете использовать следующий синтаксис:

@startuml
[-> Bob
[o-> Bob
[o->o Bob
[x-> Bob

[<- Bob
[x<- Bob

Bob ->]
Bob ->o]
Bob o->o]
Bob ->x]

Bob <-]
Bob x<-]
@enduml

 

 

Шаблоны и отметки

Можно добавить шаблоны к участникам используя << и >>.

В шаблоне вы можете добавить отмеченного участника в цветном круге используя синтаксис (X,color).

@startuml

participant "Famous Bob" as Bob << Generated >>
participant Alice << (C,#ADD1B2) Testable >>

Bob->Alice: First message

@enduml

По умолчанию, символ guillemet используется для отображения шаблона. Вы можете изменить это поведение, используя skinparam guillemet:

@startuml

skinparam guillemet false
participant "Famous Bob" as Bob << Generated >>
participant Alice << (C,#ADD1B2) Testable >>

Bob->Alice: First message

@enduml

@startuml

participant Bob << (C,#ADD1B2) >>
participant Alice << (C,#ADD1B2) >>

Bob->Alice: First message

@enduml

 

 

Больше информации в заголовках

Вы можете использовать форматирование на Creole для заголовков.

@startuml

title __Simple__ **communication** example

Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response

@enduml
C помощью последовательности символов \n вы можете добавить перевод строки в заголовок.
@startuml

title __Simple__ communication example\non several lines

Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response

@enduml
Вы также можете задать заголовок на нескольких строках, используя ключевые слова title и end title .
@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.

Вы можете задать опциональный заголовок и цвет фона, после соммады the box.

@startuml

box "Internal Service" #LightBlue
	participant Bob
	participant Alice
end box
participant Other

Bob -> Alice : hello
Alice -> Other : hello

@enduml

 

 

Удаление футера

Вы можете использовать ключевое слово hide footbox для удаления футера из диаграммы.

@startuml

hide footbox
title Footer removed

Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

@enduml

 

 

Skinparam

Вы можете использовать команду skinparam для изменения шрифтов и цветов диаграммы

Вы можете использовать данную команду :

Вы можете изменить другие параметры отображения, как видно из следующих примеров:

@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

@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

 

 

Изменение отступов

Вы можете изменить некоторые настройки отступов

@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