PlantUML 快速入门(二) UML 时序图
UML 序列圖
序列圖是僅次于類圖的最常用 UML 圖。 序列圖將交互關(guān)系表示為一個(gè)二維圖,縱向是時(shí)間軸,時(shí)間沿豎線向下延伸;橫向軸代表了在協(xié)作中各個(gè)角色,一般是一個(gè) Class 的對(duì)象,用一條虛線代表各角色的生命線,生命線上用矩形豎條表示是否處于活躍狀態(tài)。對(duì)象之間可以發(fā)送同步或異步消息。
相對(duì)于類圖,序列圖可能更能體現(xiàn) PlantUML 的價(jià)值
同步消息
@startuml Alice -> Bob: Hi Bob --> Alice: HiAlice -> Bob: Is this a pen? Bob --> Alice: No! This is an apple!! @enduml- 序列圖基本構(gòu)成: <角色> <消息類型> <角色> : <消息內(nèi)容>
- 消息類型中 -> 表示同步消息
- --> 虛線表示返回消息
異步消息
@startuml Alice ->> Bob: Hi Alice ->> Bob: Is this a pen? Alice ->> Bob: Is this a pen?? Alice ->> Bob: Is this a pen??? Alice ->> Bob: Is this a pen????Bob -> Alice: This is an apple!!! @enduml--> 代表異步消息
角色生命線
@startuml participant Alice participant Bob participant CarolCarol -> Bob: Who is Alice? Bob -> Alice: Are you Alice? @enduml- 多個(gè)participant 會(huì)按照從左往右的順序顯示各角色生命線
- 如果沒有任何 participant, 則會(huì)角色出現(xiàn)的順序顯示從左往右顯示其生命線
角色圖例
@startuml actor Actor boundary Boundary control Control entity Entity database Database collections Collections @enduml除了 participant 之外, 使用其他關(guān)鍵字可以表示特殊的角色類型
發(fā)給自己的消息
@startuml Aclie -> Aclie: do something by yourself Aclie -> Aclie: do something by yourself Aclie -> Aclie: do something by yourself Aclie -> Aclie: do something by yourself @enduml消息序號(hào)
@startuml Alice -> Bob: Hi autonumber Bob -> Carol: Hi Carol -> Dave: Hi Bob -> Dave: Hi @enduml有時(shí)候需要為消息添加序號(hào)以表示順序,可以在第一個(gè)消息前添加 autonumber,后續(xù)消息自動(dòng)添加序號(hào)。
起始序號(hào)與增量
@startuml autonumber 3 Alice -> Bob: Hi Bob -> Carol: Hi autonumber 2 3 Carol -> Dave: Hi Bob -> Dave: Hi @endumlautonumber <開始序號(hào)> <增量> 用來指定其實(shí)序號(hào)和序號(hào)遞增的增量
消息序號(hào)暫停
@startuml autonumber Alice -> Bob: Hi autonumber stop Bob -> Carol: Hi Carol -> Dave: Hi autonumber resume Bob -> Dave: Hi Carol -> Dave: Hi @enduml- autonumber stop: 自動(dòng)序號(hào)暫停
- autonumber resume: 自動(dòng)序號(hào)繼續(xù)
消息組
@startuml Alice -> Bob: Is this a pen? alt yesAlice <-- Bob: Yes! This is a pen!! else noAlice <-- Bob: No! This is an apple!!!!! end @enduml- 有時(shí)候需要多個(gè)消息表示一組相關(guān)的邏輯,此時(shí)可以使用預(yù)置的關(guān)鍵字來表示各種邏輯,例如
- alt/else
- opt
- loop
- par
- break
- critical
- 關(guān)鍵詞之后添加表示邏輯的文字,例如 yes, no等
- 消息信息的縮進(jìn)不是必須的,但是加上可讀性更好
消息組嵌套
消息組內(nèi)可以嵌套其他消息組,如下:
@startuml Alice -> Bob: Is this a pen? alt yesAlice <-- Bob: Yes! This is a pen!! else noAlice <-- Bob: Noooooooo! This is an apple!!!!!loop ∞Alice -> Bob: Oh sorry! By the way, is this a pen?Alice <-- Bob: No!!!!end end @enduml自定義消息組
除了使用預(yù)置關(guān)鍵字的消息組,還可以使用任意名字自定義一個(gè)消息組
@startuml group copyAlice -> Bob: Is this a pen?Alice <-- Bob: No! This is an apple!! end @endumlgroup 之后添加消息組的名字
生命線活躍狀態(tài)
@startuml activate Alice Alice -> Bobactivate Bob Bob -> Carolactivate Carol Bob <-- Caroldeactivate Carol Alice <-- Bobdeactivate Bob @enduml- activate <name> 指定name的生命線進(jìn)入活躍狀態(tài)
- deactive <name> 指定name的生命線退出活躍狀態(tài)
嵌套活躍狀態(tài)
@startuml activate Alice Alice -> Bobactivate Bob Bob -> Bob activate Bob Bob -> Carolactivate Carol Bob <-- Caroldeactivate Carol Alice <-- Bobdeactivate Bob @endumlactivate 中繼續(xù) activate 可以嵌套活躍狀態(tài)
創(chuàng)建角色和生命線
@startuml Alice -> Bob create Carol Bob -> Carol: new Bob -> Carol Bob <-- Carol Alice <-- Bob @endumlcreate <name> 用來創(chuàng)建一個(gè)角色和其生命線,此時(shí)消息箭頭會(huì)執(zhí)行角色圖例
參考、引用
@startuml Alice -> Bob ref over Bob, Carol: ... Alice <-- Bob ref over Alice ... ... end ref @enduml可以在時(shí)序圖中添加參考信息
- ref over <生命線名稱> : <內(nèi)容> : reference 的范圍和參考內(nèi)容
- ref over ... end ref: 可以換行寫參考內(nèi)容
邊界線
@startuml == Foo == Alice -> Bob Alice <-- Bob== Bar == Bob -> Carol Bob <-- Carol @enduml== <name> == 添加邊界線,跨越所有角色的生命線
外部消息
@startuml [-> Alice: Hello Alice ->]: Hello @enduml消息箭頭的前后使用 [ , ] ,表示一個(gè)來自外部或者指向外部的消息
消息間隔
@startuml Alice -> Bob Alice <-- BobAlice -> Bob Alice <-- Bob ||| Alice -> Bob Alice <-- Bob ||80|| Alice -> Bob Alice <-- Bob @enduml- 消息之間加 ||| , 會(huì)適當(dāng)拉開消息間隔
- ||<pixel>||:pixel可以指定具體間隔的像素?cái)?shù)
備注
@startuml Alice -> Bob note left: Hello Alice <-- Bob note right: World Alice -> Alice note left Hello World end note @enduml- 消息后緊跟 note left 或者 note right 表示在相應(yīng)位置添加備注,注意note 不能指定 top 或 bottom
- note <left|right> ... end note 可以換行寫備注
- 備注內(nèi)容支持 Creole 格式,Creole 的語法類似 Markdown
Creole 語法示例
@startuml note left--標(biāo)題--= 標(biāo)題1== 標(biāo)題2=== 標(biāo)題3--列表--* 列表1* 列表2** 列表2-1# 有序列表1# 有序列表2## 有序列表2-1--字體--* **粗體*** //斜體//* ""等寬字體(monospace)""* --刪除線--* __下劃線__--表格--|= |= Column1 |= Column2 ||1 |Value1-1 |Value1-2 ||2 |Value2-1 |Value2-2 |--HTML--* <color:red>設(shè)置顏色</color>* <color:#00FF00>色號(hào)</color>* <back:skyblue>背景色</back>* <size:18>字號(hào)</size>* <b>粗體</b>--目錄--|_build.gradle|_src|_main|_java|_...|_...|_testend note @enduml- PlantUML 快速入門(一) UML 類圖
總結(jié)
以上是生活随笔為你收集整理的PlantUML 快速入门(二) UML 时序图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python采集CSDN博客排行榜数据
- 下一篇: 【MQ笔记】聊一聊空间(线性空间、赋范空