Use PlantUML to write the Sequence Diagram

这篇具有很好参考价值的文章主要介绍了Use PlantUML to write the Sequence Diagram。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Sequence Diagram

Back to top

Basic examples

Back to top

The sequence -> is used to draw a message between two participants. Participants do not have to be explicitly declared.

To have a dotted arrow, you use -->

It is also possible to use <- and <--. That does not change the drawing, but may improve readability. Note that this is only true for sequence diagrams, rules are different for the other diagrams.

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

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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Declaring participant

Back to top

If the keyword participant is used to declare a participant, more control on that participant is possible.

The order of declaration will be the (default) order of display.

Using these other keywords to declare participants will change the shape of the participant representation:

  • actor
  • boundary
  • control
  • entity
  • database
  • collections
  • queue
@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Rename a participant using the as keyword.

You can also change the background color of actor or participant.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

You can use the order keyword to customize the display order of participants.

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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Declaring participant on multiline

Back to top

You can declare participant on multi-line.

@startuml
participant Participant [
    =Title
    ----
    ""SubTitle""
]

participant Bob

Participant -> Bob
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-15232]

Use non-letters in participants

Back to top

You can use quotes to define participants. And you can use the as keyword to give an alias to those participants.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Message to Self

Back to top

A participant can send a message to itself.

It is also possible to have multi-line using \n.

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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-1361]

Text alignment

Back to top

Text alignment on arrows can be set to leftright or center using skinparam sequenceMessageAlign.

You can also use direction or reverseDirection to align text depending on arrow direction. Further details and examples of this are available on the skinparam page.

@startuml
skinparam sequenceMessageAlign right
Bob -> Alice : Request
Alice -> Bob : Response
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Text of response message below the arrow

You can put the text of the response message below the arrow, with the skinparam responseMessageBelowArrow true command.

@startuml
skinparam responseMessageBelowArrow true
Bob -> Alice : hello
Alice -> Bob : ok
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Change arrow style

Back to top

You can change arrow style by several ways:

  • add a final x to denote a lost message
  • use \ or / instead of < or > to have only the bottom or top part of the arrow
  • repeat the arrow head (for example, >> or //) head to have a thin drawing
  • use -- instead of - to have a dotted arrow
  • add a final "o" at arrow head
  • use bidirectional arrow <->
@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Change arrow color

Back to top

You can change the color of individual arrows using the following notation:

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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Message sequence numbering

Back to top

The keyword autonumber is used to automatically add an incrementing number to messages.

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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

You can specify a startnumber with autonumber <start> , and also an increment with autonumber <start> <increment>.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

You can specify a format for your number by using between double-quote.

The formatting is done with the Java class DecimalFormat (0 means digit, # means digit and zero if absent).

You can use some html tag in the format.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

You can also use autonumber stop and autonumber resume <increment> <format> to respectively pause and resume automatic numbering.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Your startnumber can also be a 2 or 3 digit sequence using a field delimiter such as .;,: or a mix of these. For example: 1.1.1 or 1.1:1.

Automatically the last digit will increment.

To increment the first digit, use: autonumber inc A. To increment the second digit, use: autonumber inc B.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

You can also use the value of autonumber with the %autonumber% variable:

@startuml
autonumber 10
Alice -> Bob
note right
  the <U+0025>autonumber<U+0025> works everywhere.
  Here, its value is ** %autonumber% **
end note
Bob --> Alice: //This is the response %autonumber%//
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-7119]

Page Title, Header and Footer

Back to top

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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Splitting diagrams

Back to top

The newpage keyword is used to split a diagram into several images.

You can put a title for the new page just after the newpage keyword. This title overrides the previously specified title if any.

This is very handy with Word to print long diagram on several pages.

(Note: this really does work. Only the first page is shown below, but it is a display artifact.)

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Grouping message

Back to top

It is possible to group messages together using the following keywords:

  • alt/else
  • opt
  • loop
  • par
  • break
  • critical
  • group, followed by a text to be displayed

It is possible to add a text that will be displayed into the header (for group, see next paragraph 'Secondary group label').

The end keyword is used to close the group.

Note that it is possible to nest groups.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Secondary group label

Back to top

For group, it is possible to add, between[ and ], a secondary text or label that will be displayed into the header.

@startuml
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Failure
group My own label [My own label 2]
    Alice -> Log : Log attack start
    loop 1000 times
        Alice -> Bob: DNS Attack
    end
    Alice -> Log : Log attack end
end
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-2503]

Notes on messages

Back to top

It is possible to put notes on message using the note left or note right keywords just after the message.

You can have a multi-line note using the end note keywords.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Some other notes

Back to top

It is also possible to place notes relative to participant with note left of , note right of or note over keywords.

It is possible to highlight a note by changing its background color.

You can also have a multi-line note using the end note keywords.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Changing notes shape [hnote, rnote]

Back to top

You can use hnote and rnote keywords to change note shapes :

  • hnote for hexagonal note;
  • rnote for rectangle note.
@startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
 "r" as rectangle
 "h" as hexagon
endrnote
rnote over server
 this is
 on several
 lines
endrnote
hnote over caller
 this is
 on several
 lines
endhnote
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-1765]

Note over all participants [across]

Back to top

You can directly make a note over all participants, with the syntax:

  • note across: note_description
@startuml
Alice->Bob:m1
Bob->Charlie:m2
note over Alice, Charlie: Old method for note over all part. with:\n ""note over //FirstPart, LastPart//"".
note across: New method with:\n""note across""
Bob->Alice
hnote across:Note across all part.
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-9738]

Several notes aligned at the same level [/]

Back to top

You can make several notes aligned at the same level, with the syntax /:

  • without / (by default, the notes are not aligned)
@startuml
note over Alice : initial state of Alice
note over Bob : initial state of Bob
Bob -> Alice : hello
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

  • with / (the notes are aligned)
@startuml
note over Alice : initial state of Alice
/ note over Bob : initial state of Bob
Bob -> Alice : hello
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-354]

Creole and HTML

Back to top

It is also possible to use creole formatting:

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Divider or separator

Back to top

If you want, you can split a diagram using == separator to divide your diagram into logical steps.

@startuml

== Initialization ==

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

== Repetition ==

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

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Reference

Back to top

You can use reference in a diagram, using the keyword 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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Delay

Back to top

You can use ... to indicate a delay in the diagram. And it is also possible to put a message with this delay.

@startuml

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

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Text wrapping

Back to top

To break long messages, you can manually add \n in your text.

Another option is to use maxMessageSize setting:

@startuml
skinparam maxMessageSize 50
participant a
participant b
a -> b :this\nis\nmanually\ndone
a -> b :this is a very long message on several words
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Space

Back to top

You can use ||| to indicate some spacing in the diagram.

It is also possible to specify a number of pixel to be used.

@startuml

Alice -> Bob: message 1
Bob --> Alice: ok
|||
Alice -> Bob: message 2
Bob --> Alice: ok
||45||
Alice -> Bob: message 3
Bob --> Alice: ok

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Lifeline Activation and Destruction

Back to top

The activate and deactivate are used to denote participant activation.

Once a participant is activated, its lifeline appears.

The activate and deactivate apply on the previous message.

The destroy denote the end of the lifeline of a participant.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Nested lifeline can be used, and it is possible to add a color on the lifeline.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Autoactivation is possible and works with the return keywords:

@startuml
autoactivate on
alice -> bob : hello
bob -> bob : self call
bill -> bob #005500 : hello from thread 2
bob -> george ** : create
return done in thread 2
return rc
bob -> george !! : delete
return success

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Return

Back to top

Command return generates a return message with optional text label.

The return point is that which caused the most recent life-line activation.

The syntax is return label where label if provided is any string acceptable for conventional messages.

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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Participant creation

Back to top

You can use the create keyword just before the first reception of a message to emphasize the fact that this message is actually creating this new object.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Shortcut syntax for activation, deactivation, creation

Back to top

Immediately after specifying the target participant, the following syntax can be used:

  • ++ Activate the target (optionally a color may follow this)
  • -- Deactivate the source
  • ** Create an instance of the target
  • !! Destroy an instance of the target
@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Then you can mix activation and deactivation, on same line:

@startuml
alice   ->  bob     ++   : hello1
bob     ->  charlie --++ : hello2
charlie --> alice   --   : ok
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

@startuml
@startuml
alice -> bob   --++ #gold: hello
bob   -> alice --++ #gold: you too
alice -> bob   --: step1
alice -> bob   : step2
@enduml
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-4834, QA-9573 and QA-13234]

Incoming and outgoing messages

Back to top

You can use incoming or outgoing arrows if you want to focus on a part of the diagram.

Use square brackets to denote the left "[" or the right "]" side of the diagram.

@startuml
[-> A: DoWork

activate A

A -> A: Internal call
activate A

A ->] : << createRequest >>

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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

You can also have the following syntax:

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Short arrows for incoming and outgoing messages

Back to top

You can have short arrows with using ?.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-310]

Anchors and Duration

Back to top

With teoz it is possible to add anchors to the diagram and use the anchors to specify duration time.

@startuml
!pragma teoz true

{start} Alice -> Bob : start doing things during duration
Bob -> Max : something
Max -> Bob : something else
{end} Bob -> Alice : finish

{start} <-> {end} : some time

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

You can use the -P command-line option to specify the pragma:

java -jar plantuml.jar -Pteoz=true

[Ref. issue-582]

Stereotypes and Spots

Back to top

It is possible to add stereotypes to participants using << and >>.

In the stereotype, you can add a spotted character in a colored circle using the syntax (X,color).

@startuml

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

Bob->Alice: First message

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

By default, the guillemet character is used to display the stereotype. You can change this behavious using the skinparam guillemet:

@startuml

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

Bob->Alice: First message

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

@startuml

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

Bob->Alice: First message

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

More information on titles

Back to top

You can use creole formatting in the title.

@startuml

title __Simple__ **communication** example

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

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

You can add newline using \n in the title description.

@startuml

title __Simple__ communication example\non several lines

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

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

You can also define title on several lines using title and end title keywords.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Participants encompass

Back to top

It is possible to draw a box around some participants, using box and end box commands.

You can add an optional title or a optional background color, after the box keyword.

@startuml

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

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

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

It is also possible to nest boxes - to draw a box within a box - when using the teoz rendering engine, for example:

@startuml

!pragma teoz true
box "Internal Service" #LightBlue
participant Bob
box "Subteam"
participant Alice
participant John
end box

end box
participant Other

Bob -> Alice : hello
Alice -> John : hello
John -> Other: Hello

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Removing Foot Boxes

Back to top

You can use the hide footbox keywords to remove the foot boxes of the diagram.

@startuml

hide footbox
title Foot Box removed

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

@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Skinparam

Back to top

You can use the skinparam command to change colors and fonts for the drawing.

You can use this command:

  • In the diagram definition, like any other commands,
  • In an included file,
  • In a configuration file, provided in the command line or the ANT task.

You can also change other rendering parameter, as seen in the following examples:

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Changing padding

Back to top

It is possible to tune some padding settings.

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Appendix: Examples of all arrow type

Back to top

Normal arrow

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Itself arrow

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Incoming and outgoing messages (with '[', ']')

Incoming messages (with '[')
@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Outgoing messages (with ']')
@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Short incoming and outgoing messages (with '?')

Short incoming (with '?')
@startuml
participant Alice as a
participant Bob   as b
a ->     b : //Long long label//
?->      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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Short outgoing (with '?')
@startuml
participant Alice as a
participant Bob   as b
a ->     b : //Long long label//
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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

Specific SkinParameter

Back to top

By default

@startuml
Bob -> Alice : hello
Alice -> Bob : ok
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

LifelineStrategy

  • nosolid (by default)
@startuml
skinparam lifelineStrategy nosolid
Bob -> Alice : hello
Alice -> Bob : ok
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-9016]

  • solid

In order to have solid life line in sequence diagrams, you can use: skinparam lifelineStrategy solid

@startuml
skinparam lifelineStrategy solid
Bob -> Alice : hello
Alice -> Bob : ok
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-2794]

style strictuml

To be conform to strict UML (for arrow style: emits triangle rather than sharp arrowheads), you can use:

  • skinparam style strictuml
@startuml
skinparam style strictuml
Bob -> Alice : hello
Alice -> Bob : ok
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-1047]

Hide unlinked participant

Back to top

By default, all participants are displayed.

@startuml
participant Alice
participant Bob
participant Carol

Alice -> Bob : hello
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

But you can hide unlinked participant.

@startuml
hide unlinked
participant Alice
participant Bob
participant Carol

Alice -> Bob : hello
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-4247]

Color a group message

Back to top

It is possible to color a group messages:

@startuml
Alice -> Bob: Authentication Request
alt#Gold #LightBlue Successful case
    Bob -> Alice: Authentication Accepted
else #Pink Failure
    Bob -> Alice: Authentication Rejected
end
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-4750 and QA-6410]

Mainframe

Back to top
@startuml
mainframe This is a **mainframe**
Alice->Bob : Hello
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-4019 and Issue#148]

Slanted or odd arrows

Back to top

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+]

@startuml
A ->(10) B: text 10
B ->(10) A: text 10

A ->(10) B: text 10
A (10)<- B: text 10
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

@startuml
A ->(40) B++: Rq
B -->(20) A--: Rs
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-14145]

@startuml
!pragma teoz true
A ->(50) C: Starts\nwhen 'B' sends
& B ->(25) C: \nBut B's message\n arrives before A's
@enduml

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-6684]

@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

 

Use PlantUML to write the Sequence Diagram,Architect架构,UML,Diagram

[Ref. QA-1072]文章来源地址https://www.toymoban.com/news/detail-704405.html

到了这里,关于Use PlantUML to write the Sequence Diagram的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • How to Use the Git Reset Command

    The git reset command is used to move the current branch to a specific commit, effectively resetting the branch to that commit. It allows you to undo commits, unstage changes, or move the branch pointer to a different commit. The basic syntax of git reset is as follows: Here are three common usages of git reset : Soft Reset : To undo the most recent commit w

    2024年02月02日
    浏览(41)
  • How to Use the Git Restore Command

    The git restore command is used to restore files in your working directory to a previous state. It allows you to discard changes made to files or restore files that were deleted. The basic syntax of git restore is as follows: Here are a few common use cases of git restore : Discard Local Changes : To discard the changes made to a specific file and revert it

    2024年01月16日
    浏览(46)
  • You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the

    问题: Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file. 解决方法 找到build目录下的webpack.base.conf.js文件,注释掉其中的与有关的eslint规则即可。 关闭编码规范检查,编辑webpack.base.conf.js,找到module节点下的rules节点,注释掉这一行:

    2024年04月09日
    浏览(54)
  • minio报错:Unable to use the drive /data: invalid argument

    docker 安装 minio (时间点:2022-09-07) 拉取得最新版本 latest 显示创建于5天前。 Unable to use the drive /data: invalid argument Error: Read failed. Insufficient number of drives online Waiting for a minimum of 0 drives to come online 我用这个命令: 然后 docker logs id 试了n次,一直是下边的错误。查阅了各种文档

    2024年02月16日
    浏览(48)
  • check the manual that corresponds to your MySQL server version for the right syntax to use完美解决

    数据库有如下错误信息:check the manual that corresponds to your MySQL server version for the right syntax to use near 解决check the manual that corresponds to your MySQL server version for the right syntax to use near方法有六个:  1、在数据库表冲突字段前后加 `符号(键盘Tab键上面那个键),就不会再报语法错误了

    2024年04月09日
    浏览(84)
  • mysql授权失败:check the manual that corresponds to your MySQL server version for the right syntax to use

    最近新部署了一个mysql,然后进入mysql 之后授权失败,然后发现原来是数据库的版本太高导致的,下面是记录如何操作的。 结果执行的时候出现报错: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘iden

    2024年02月03日
    浏览(46)
  • Ability to Use Oracle Data Pump to Export and Import the Unified Audit Trail

    从18c版本开始才能使用数据泵工具导出统一审计的记录

    2024年01月20日
    浏览(44)
  • 成功解决Pycharm报错:Note: you may need to restart the kernel to use updated packages.

    pycharm中 import sklearn 报错: 然后在pycharm的控制台console中使用 pip install sklearn 安装了sklearn包,使用 pip list 命令查看安装成功: 但是,最 玄学 的事情来了,明明安装成功,import却还是和刚开始一样的报错。 细看发现 pip list 的末尾有一句: 我知道jupyter怎么重启内核,但是p

    2024年02月04日
    浏览(84)
  • python报错:Note: you may need to restart the kernel to use updated packages终极解决办法

    python执行:pip install 库名 报错:Note: you may need to restart the kernel to use updated packages. 翻译过来为: 注意:你可能需要重新启动内核才能使用更新的软件包 。 于是到网上找各种解决方法,重新按照python、设置环境变量,cmd中找路径什么的,能试的方法都试了,最终费了九牛二虎

    2024年02月11日
    浏览(51)
  • 解决The default interactive shell is now zsh.To update your account to use zsh ... 的问题

    Mac电脑升级系统后,打开终端就出现这个提示 原因是从 macOS Catalina 版开始,Mac 将使用 zsh 作为默认登录 Shell 和交互式 Shell 官方详细说明链接贴在这里:在 Mac 上将 zsh 用作默认 Shell - 官方 Apple 支持 (中国) 要处理这个问题,需要更改默认Shell 1、打开【系统偏好设置】   2、找

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包