1. 程式人生 > >plantuml 之序列圖(二)

plantuml 之序列圖(二)

給自己發訊息

參與者可以給自己發訊息. 如圖 1-6 所示.


圖 1-6
圖 1-6

圖 1-6 程式碼 (摘自官方文件)

@startuml

' 若訊息很長, 可以使用 "\n" 換行.
' 訊息預設是或對齊.
' 參與者名稱則是預設中間對齊.
Alice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext

@enduml

給訊息編號

  • autonumber. 從 1 開始對訊息自動編號.
  • autonumber START. 從 START 開始對訊息自動編號.
  • autonumber START INCREMENT
    . 從 START 開始, 按 增量 INCREMENT 對訊息自動編號.

圖 1-7 展示了上述編號方法.


圖 1-7
圖 1-7

圖 1-7 程式碼

@startuml

autonumber
Bob -> Alice : Message 1
Bob <- Alice : Message 2

autonumber 15
Bob -> Alice : Message 15
Bob <- Alice : Message 16

autonumber 40 10
Bob -> Alice : Message 40
Bob <- Alice : Message
50 @enduml

序列圖分頁

通過關鍵字 newpage 可以將一幅大圖切分成小圖. 可以給分割得到圖加上 title,
語法為 new page TITLE, 如圖 1-8.1, 圖 1-8.2, 圖 1-8.3 所示.

注意: 圖 1-8.1 在底部參與者名稱上方加了一條虛線, 表示有被分割的後續圖.
圖 1-8.2 在頂部參與者名稱下方與底部參與者名稱上方都加了一條虛線,
表示此圖有被分割的前圖與後續圖. 圖 1-8.3 頂部參與者名稱下方加了一條虛線,
表示此圖有被分割的前圖.


圖 1-8.1
圖 1-8.1

圖 1-8.2
圖 1-8.2

圖 1-8.3
圖 1-8.3

圖 1-8.x 程式碼

@startuml

title A title for \nthe first page
Alice -> Bob : message 1
Alice -> Bob : message 2

newpage A title for \nthe middle page
Alice -> Bob : message 3
Alice -> Bob : message 4

newpage A title for \nthe last page
Alice -> Bob : message 5
Alice -> Bob : message 6

@enduml

訊息分組

可使用下面的關鍵字對訊息分組, 並且分組可以巢狀.

  • alt / alt
  • opt
  • par
  • break
  • critical
  • group
  • end, 與上面關鍵字配合, 用於結束一個分組

上述分組關鍵字 (除 end) 可以跟文字. 對於 group LABLE, 作為標籤顯示 “LABEL”,
其它關鍵字顯示為 “[TEXT]“. 圖 1-9 是這些使用上述關鍵字的結果圖.


圖 1-9
圖 1-9

圖 1-9 程式碼

@startuml

Alice -> Bob: Message 1

alt Alt text
    Bob -> Alice: Message 2
else Else text
    Bob -> Alice: Message 3

    group Group label
        Alice -> Log : Message 4
        loop 1000 times
            Alice -> Bob: Message 5
        end

        Alice -> Log : Message 6
    end

else Else another text
    Bob -> Alice: Message 7
end

@enduml

對訊息進行註釋說明

註釋說明使用下面的關鍵, 且放於待註釋訊息緊後一行.

  • note left : TEXT
  • note right : TEXT
  • end note, 當註釋說明文字佔多行時, 使用此來結束註釋

還可以通過 #COLOR 來指定註釋圖示的背景色. 效果見圖 1-10.


圖 1-10
圖 1-10

圖 1-10 程式碼

@startuml

Alice ->Bob : Message 1
note left #Red : Note 1

Bob->Alice : ok
note right : Note 2

Bob->Bob : Message 2
note left
    Note 3 first line
    Note 3 second line
    Note 3 last line
end note

@enduml

還可以使用下面的關鍵字進行註釋

  • note left of 參與者

  • note right of 參與者

  • note over

    後跟多個參與者, 參與者之間用逗號分隔,
    吏得註釋的圖示在指定的多個參與者生命線上方.

上述關鍵字也可以通過 #COLOR 來指定註釋圖示的背景色. 效果見圖 1-11.


圖 1-11
圖 1-11

圖 1-11 程式碼

@startuml

participant Alice

participant Bob
note left of Alice #aqua
    This is
    left note
end note

note right of Alice: This is right note
note over Alice: This is over note
note over Alice , Bob #FFAAAA: This is \n large over note

note over Bob, Alice
    This is
    another large over note
end note

@enduml

改變註釋圖示形狀

  • hnote, 平行六邊形 (hexagon). 若註釋文字多行, 以 endhnote 結束
  • rnote, 知形 (rectangle). 若註釋文字多行, 以 endrnote 結束

這兩個關鍵也可以與 over 邊用, 效果見圖 1-12.


圖 1-12
圖 1-12

圖 1-12 程式碼

@startuml

Bob -> Alice : Message 1
hnote over Bob : "h" note

Bob <- Alice: Message 2
rnote over Alice
    "r" note
endrnote

@enduml