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