一.時序圖
(1) -> 來繪制參與者之間傳遞的消息, 而不必顯式地聲明參與者。
? ? -->繪制一個虛線箭頭。(<-? <--)
? 注意:僅適用與時序圖 其他示意圖規(guī)則是不同的
? 實例: ?語法?
? ?@startuml
? ? Alice -> Bob: Authentication Request
? ? Bob --> Alice: Authentication Response
? ? Alice -> Bob: Another authentication Request
? ? Alice <-- Bob: another authentication Response
? ? @enduml

(2)聲明參與者(Declaring participant)
? ? 聲明參與者的關鍵字有 actor,boundary,control,entity,database,collections
? ? 關鍵字as用于重命名參與者
? ? @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
? ? ? actor Bob #red
? ? ? 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
(3)給自己發(fā)消息(Message to self)
? ? @startuml
? ? Alice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
? ? @enduml
(4)修改箭頭樣式(Change arrow style)
? ? 表示一條丟失的消息:末尾加x
? 讓箭頭只有上半部分或者下半部分:將<和>替換成\或者/
? 細箭頭:將箭頭標記寫兩次 (如>>或//)
? 虛線箭頭:用--替代-
? 箭頭末尾加圈:->o
? 雙向箭頭:<->
示例?
@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

(5)修改箭頭顏色(Change arrow color)
? ? @startuml
? ? Bob -[#red]> Alice : hello
? ? Alice -[#0000FF]->Bob : ok
? ? @enduml
(6)對消息序列編號(Message sequence numbering)
? ? @startuml
? ? ? autonumber? 1 2 "<font color=red><b>messge 0"? /** 第一個數(shù)字代表初始值 第二個代表步長(step) */
? ? ? 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
? @enduml
? 注意:(1)autonumber? 1 2? "<font color=red><b>message"
? ? ? ? ? ? ? /** 第一個數(shù)字代表初始值 第二個代表步長(step) */?
? ? ? ? ? (2)autonumber stop和autonumber resume 'increment' 'format'來表示暫?;蚶^續(xù)使用自動編號
(7)分割示意圖(Splitting diagrams)?
? ? newpage關鍵字分割幾頁? 本地不成功
(8)組合消息
? ? 關鍵字 alt/else , opt,loop,par,break,critical,group, 后面緊跟著消息內容
? ? 注意:
? ? ? ? ? (1)可以在標頭(header)添加需要顯示的文字(group除外)。關鍵詞end用來結束分? ? ? ? ? ? ? ? 組.分組可以嵌套使用。
? ? ? ? ? (2)可以使用note left of,note right of或note over在節(jié)點(participant)的相對位? ? ? ? ? ? ? 置放置注釋。
示例:?
@startuml
? ? Alice -> Bob: Authentication Request
? ? note left:this is frist note /**添加注釋(左側)*/
? ? alt successful case
? ? ? Bob -> Alice: Authentication Accepted
? ? note right: this is right note? /**添加注釋(左側)*/
? 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
? note? left? ? /**添加多行注釋(左側)*/
? ? ? ? this is a note
? ? ? last note
? end note? /**添加多行注釋(左側) 以end note結束*/
? end
? @enduml
(9)改變備注框的形狀
? ? 可以使用hnote和rnote這兩個關鍵字來修改備注框的形狀
? ? 示例:
? ? @startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
"r" as rectangle
"h" as hexagon
endrnote
@enduml
(10)分隔符?
? ? ? 可以通過使用==關鍵詞來將你的圖表分割多個步驟。
(11)引用
? ? 可以在圖中通過使用ref over關鍵詞來實現(xiàn)引用
? ? @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
(12)延遲
可以使用...來表示延遲,并且還可以給延遲添加注釋。
(13)空間
你可以使用|||來增加空間 ||45||指定增加的空間
(14)生命線的激活與撤銷
? ? ? 關鍵字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
(15)創(chuàng)建參與者
? ? ? 關鍵字create放在第一次接收到消息之前,以強調本次消息實際上是在創(chuàng)建新的對象
(16)進入和發(fā)出消息
? ? ? 如果只想關注部分圖示,你可以使用進入和發(fā)出箭頭。使用方括號[和]表示圖示的左、右兩側。
? ? ? @startuml
? ? ? [-> A: DoWork
? ? ? activate A
? A -> A: Internal call
? ? activate A
? ? A ->] : << createRequest >>
? ? A<--] : RequestCreated
? ? deactivate A
? ? [<- A: Done
? ? deactivate A
? ? @enduml
(17)構造類型和圈點
? ? 可以使用<<和>>給參與者添加構造類型。在構造類型中,你可以使用(X,color)格式的語法添加一個圓圈圈起來的字符。
默認使用guillemet字符來顯示構造類型。 你可以使用外觀參數(shù)guillemet來修改顯示行為。
(18)包裹參與者
? ? 可以使用box和end box畫一個盒子將參與者包裹起來。還可以在box關鍵字之后添加標題或者背景顏色
? @startuml
? ? box "Internal Service" #LightBlue
? ? participant Bob
? ? participant Alice
? ? end box
? ? participant Other
? ? Bob -> Alice : hello
? ? Alice -> Other : hello
? ? @enduml
(19)移除腳注
? 使用hide footbox關鍵字移除腳注
? @startuml
? hide footbox
? title Footer removed
? Alice -> Bob: Authentication Request
? Bob --> Alice: Authentication Response
? @enduml
(20)外觀參數(shù)(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
/**********************************************************************************************/
參考文檔 http://plantuml.com/
?