日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

PlantUML畫時序圖,真香!

來源: 責編: 時間:2024-05-16 09:04:12 149觀看
導讀引言大家好,我是老三,最近在做系統設計的時候,發現要畫不少時序圖,以前我用的最順手的工具是draw.io,后來也嘗試了語雀自帶的畫圖工具,感覺畫畫簡單的圖還行,但是復雜一點的,就比較吃力了。圖片哎,這條線怎么又歪了?布局怎么又

引言

大家好,我是老三,最近在做系統設計的時候,發現要畫不少時序圖,以前我用的最順手的工具是draw.io,后來也嘗試了語雀自帶的畫圖工具,感覺畫畫簡單的圖還行,但是復雜一點的,就比較吃力了。qBu28資訊網——每日最新資訊28at.com

圖片圖片qBu28資訊網——每日最新資訊28at.com

哎,這條線怎么又歪了?布局怎么又亂了?這個條怎么又對不齊了?……手忙腳亂才畫好一張圖,這時候我就想,有沒有其它更專業的畫圖工具呢?大部分同事都在用Visio,輝哥給我推薦了PlantUML,說非常好用!這時候旁邊來了一句—— “他就是裝比!”qBu28資訊網——每日最新資訊28at.com

 還有這樣的事?那我不能讓他一個人都裝了。qBu28資訊網——每日最新資訊28at.com

最開始看下官方文檔,發現PlantUML類似MarkDown,似乎需要一點學習成本,簡單用了一下,曲線還是挺平緩的,上手相當快!推薦大家也用一下試試。qBu28資訊網——每日最新資訊28at.com

一、什么是PlantUML?

PlantUML是一個多功能組件,可快速、直接地創建圖表。用戶可以使用簡單直觀的語言起草各種圖表。qBu28資訊網——每日最新資訊28at.com

PlantUML是一個開源工具,它允許我們用簡單的文本描述來創建UML圖,包括序列圖、用例圖、類圖、對象圖、活動圖、組件圖、部署圖、狀態圖,以及我們今天要講的時序圖。qBu28資訊網——每日最新資訊28at.com

圖片圖片qBu28資訊網——每日最新資訊28at.com

除了UML圖之外,PlantUML 還支持一系列其他圖表,例如JSON數據、YAML數據、EBNF圖表、架構圖等等。PlantUML的一大優勢,是圖表完全用文本代碼描述,這就意味著它可以作為文檔嵌入到源代碼中,也非常方便版本控制和多人協作,不管是迭代設計、文檔編寫、系統建模,PlantUML都能勝任。qBu28資訊網——每日最新資訊28at.com

二、快速入門

PlantUML插件

為了便捷地使用PlantUML,許多流行的IDE和代碼編輯器提供了集成PlantUML的插件,如Visual Studio Code、IntelliJ IDEA、Eclipse等。插件提供了實時預覽、語法高亮和圖表導出等功能,能幫助我們更快捷,更高效地畫圖,整體上IDEA的插件用起來體驗最好,但是IDEA大家懂的,太占內存了,VS Code相對而言,用起來就會輕量很多。qBu28資訊網——每日最新資訊28at.com

  • IntelliJ IDEA:比如 "PlantUML integration" 可以讓我們直接在 IDE 中查看和編輯 PlantUML 圖表

圖片圖片qBu28資訊網——每日最新資訊28at.com

  • PlantUML integration

插件使用效果qBu28資訊網——每日最新資訊28at.com

圖片圖片qBu28資訊網——每日最新資訊28at.com

  • VS Code:https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml

插件市場:qBu28資訊網——每日最新資訊28at.com

圖片圖片qBu28資訊網——每日最新資訊28at.com

  • 插件使用效果:

圖片圖片qBu28資訊網——每日最新資訊28at.com

Hello World!

我們先來看個最簡單的例子,通過-> 、-->和 :就可以在參與者之間傳遞消息,不用明確聲明參與者。qBu28資訊網——每日最新資訊28at.com

@startuml老張 -> 老王 : 老王,你好啊老王--> 老張: 老張,你好啊老張 -> 老王: 最近有空一起喝茶老張 <-- 老王: OK@enduml

圖片圖片qBu28資訊網——每日最新資訊28at.com

三、PlantUML時序圖語法

接下來,我們看看PlantUML時序圖的一些具體語法。qBu28資訊網——每日最新資訊28at.com

聲明參與者

我們使用關鍵字participant 來聲明參與者,就可以對該參與者進行更多的控制。聲明的順序就是默認的顯示順序。我們也可以用這些關鍵字來聲明參與者,給參與者設置不同的形狀。qBu28資訊網——每日最新資訊28at.com

  • actor(角色)
  • boundary(邊界)
  • control(控制)
  • entity(實體)
  • database(數據庫)
  • collections(集合)
  • queue(隊列)

我們還可以通過 as關鍵字重命名參與者。qBu28資訊網——每日最新資訊28at.com

@startumlparticipant Participant as Fooactor       Actor       as Foo1boundary    Boundary    as Foo2control     Control     as Foo3entity      Entity      as Foo4database    Database    as Foo5collections Collections as Foo6queue       Queue       as Foo7@enduml

圖片參與者qBu28資訊網——每日最新資訊28at.com

默認的顏色比較單調,也可以通過#來設置參與者的顏色:qBu28資訊網——每日最新資訊28at.com

@startumlactor Bob #blue' The only difference between actor'and participant is the drawingparticipant Alice #SkyBlueparticipant "I have a really/nlong name" as L #00ff00Alice->Bob: Authentication RequestBob->Alice: Authentication ResponseBob->L: Log transaction@enduml

上顏色的參與者上顏色的參與者qBu28資訊網——每日最新資訊28at.com

消息傳遞

在不同參與者之間,通過箭頭+:來表示消息傳遞。qBu28資訊網——每日最新資訊28at.com

  • 同步消息:
A -> B: 同步消息文本

同步消息同步消息qBu28資訊網——每日最新資訊28at.com

  • 異步消息:由發送者A指向接收者B,表示A發送后不需要等待B立即處理。
A ->> B: 異步消息文本

異步消息異步消息qBu28資訊網——每日最新資訊28at.com

  • 返回消息:通常從接收者返回到發送者,標識一個回應。
A <-- B: 返回消息文本

返回消息返回消息qBu28資訊網——每日最新資訊28at.com

  • 自調用:一個參與者直接發送消息給自己,表示自我處理或運算。
A ->A: 自調用
  • 自調用

生命線(Lifeline)與激活條(Activation Bar)

在時序圖中,生命線表示對象在一段時間內的活動狀態,也就是從參與者往下延伸的那條虛線。激活條用來表示參與者或對象在處理某個任務期間的活動狀態,是生命線的一部分,矩形條形式出現。qBu28資訊網——每日最新資訊28at.com

  • 生命線的激活與撤銷:可以用下面這些關鍵字來控制生命線的激活與撤銷

activate: 顯示參與者的活動狀態開始qBu28資訊網——每日最新資訊28at.com

deactivate: 指示參與者的活動狀態結束。qBu28資訊網——每日最新資訊28at.com

destroy: 用于表示參與者的生命線終結,通常表示對象生命周期的結束。qBu28資訊網——每日最新資訊28at.com

@startumlparticipant UserUser -> A: DoWorkactivate AA -> B: << createRequest >>activate BB -> C: DoWorkactivate CC --> B: WorkDonedestroy CB --> A: RequestCreateddeactivate BA -> User: Donedeactivate A@enduml

生命線的激活與撤銷生命線的激活與撤銷qBu28資訊網——每日最新資訊28at.com

  • 生命線的嵌套與顏色:我們還可以使用嵌套激活條來表示內部調用,并可以給生命線添加顏色。
@startumlparticipant UserUser -> A: DoWorkactivate A #FFBBBBA -> A: Internal callactivate A #DarkSalmonA -> B: << createRequest >>activate BB --> A: RequestCreateddeactivate Bdeactivate AA -> User: Donedeactivate A@enduml

生命線的嵌套與顏色生命線的嵌套與顏色qBu28資訊網——每日最新資訊28at.com

  • 自動激活:在發送消息時自動顯示激活條。
A->B++: 激活B并發送消息

自動激活自動激活qBu28資訊網——每日最新資訊28at.com

  • 自動去激活:在接收回應時自動隱藏激活條。
A->B++: 激活B并發送消息A <--B--: B去激活并回應消息

自動去激活自動去激活qBu28資訊網——每日最新資訊28at.com

分組和替代

  • 分組:用于邏輯上分組一系列交互。
group 分組名A -> B: 消息...end group

分組分組qBu28資訊網——每日最新資訊28at.com

  • 替代(Alt/Else):表示基于條件的替代執行流程。
alt 條件1A -> B: 滿足條件1的消息else 條件2A -> B: 滿足條件2的消息end

替代替代qBu28資訊網——每日最新資訊28at.com

注釋

注釋用于添加說明性文本。qBu28資訊網——每日最新資訊28at.com

  • 可以用note left of,note right of或note over來控制注釋相對節點的位置,還可以通過修改背景色來高亮顯示注釋。
@startumlparticipant Aliceparticipant Bobnote left of Alice #aquaThis is displayedleft of Alice.end notenote 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, AliceThis is yet anotherexample ofa long note.end note@enduml

注釋注釋qBu28資訊網——每日最新資訊28at.com

顏色

Choosing colors在 PlantUML 中,我們可以對時序圖的各個元素自定義顏色,比如參與者(actors)、對象(objects)、激活條(activation bars)等,來讓我們的時序圖更加美觀。在聲明元素時,可以直接指定顏色,格式為#顏色代碼。顏色代碼可以是不同的形式:qBu28資訊網——每日最新資訊28at.com

  • 直接指定顏色:顏色代碼可以是一個十六進制顏色值,也可以是預定義的顏色名稱。
@startumlactor 用戶  #Greenparticipant 參與者  #B4A7E5用戶-[#red]>參與者:消息activate 參與者 #Blue@enduml

直接指定顏色直接指定顏色qBu28資訊網——每日最新資訊28at.com

  • 使用 skinparam 設置顏色:除了直接為特定元素指定顏色外,還可以使用 skinparam 全局設置時序圖中的顏色。用這種方式更改元素的默認顏色比較方便:
@startumlskinparam ActorBorderColor #DarkOrangeskinparam ParticipantBackgroundColor #SkyBlueactor 用戶participant 參與者@enduml

使用 skinparam 設置顏色使用 skinparam 設置顏色qBu28資訊網——每日最新資訊28at.com

當使用 skinparam 時,我們可以設置許多不同屬性的顏色,如邊框顏色(BorderColor)、背景顏色(BackgroundColor)、字體顏色(FontColor)和激活條顏色(SequenceGroupBodyBackgroundColor)。更多語法可以直接查看官方文檔:順序圖的語法和功能,目前這些內容,已經足夠我們常見的時序圖需求了。qBu28資訊網——每日最新資訊28at.com

四、完整實例

我們接下來看一個稍微完整一點的例子,在這個例子中,我們的需求,是要在原本的登錄的基礎上,引入Google登錄。qBu28資訊網——每日最新資訊28at.com

@startumlskinparam ParticipantBackgroundColor #DeepSkyBlueactor 用戶 as c  #DeepSkyBlueparticipant "客戶端" as clientparticipant "服務網關" as gaparticipant "用戶服務" as userdatabase "數據庫" as DB  #DeepSkyBlueparticipant "Google服務" as google  #LightCoralactivate c #DeepSkyBlueactivate client #DeepSkyBluec->client:用戶登錄group#LightCoral #LightCoral Google登錄客戶端流程  client -> google : 請求Google OAuth登錄            activate google #DeepSkyBlue            google-->client:登錄url            client->google:跳轉登錄頁            google -> google : 用戶登錄            google --> client : Google登錄Token            deactivate googleend|||client -> ga : 登錄請求note right#LightCoral:新增登錄方式,三方登錄請求實體activate ga #DeepSkyBluega ->user:請求轉發activate user #DeepSkyBluealt#DeepSkyBlue 常規登錄    user -> DB : 查詢用戶信息    activate DB #DeepSkyBlue    DB -> user : 用戶信息    deactivate DB    user->user:登錄密碼校驗|||else Google登錄    group#LightCoral #LightCoral Google登錄服務端流程          user->google:驗證token          activate google #DeepSkyBlue          google-->user:用戶信息          deactivate google          user->user:存儲或更新用戶信息    end groupenduser-->ga:登錄結果deactivate userga -> client : 響應deactivate gaalt#DeepSkyBlue 成功        client -> c : 登錄成功else 失敗        client -> c : 登錄失敗enddeactivate client|||@enduml

登錄時序圖登錄時序圖qBu28資訊網——每日最新資訊28at.com

五、總結

PlantUML使用起來整體上還是非常舒服的,對我而言,這幾個特點讓我愛不釋手:qBu28資訊網——每日最新資訊28at.com

  • 提供了類似MarkDown的所見即所得的使用體驗,免去調整圖形之擾
  • PlantUML本質是文本,可以進行版本控制,多人協同
  • 語雀支持文本畫圖的功能,可以嵌入PlantUML文本,支持在語雀文檔里直接修改

本文鏈接:http://www.www897cc.com/showinfo-26-88327-0.htmlPlantUML畫時序圖,真香!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 我用 Flutter、React Native 和 Ionic 構建了相同的應用程序

下一篇: 這一次,徹底搞懵 CRDT

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 宁蒗| 新乐市| 湖南省| 梅州市| 河南省| 全州县| 墨竹工卡县| 高唐县| 高要市| 漳州市| 栾城县| 滁州市| 丰台区| 宁安市| 横山县| 太湖县| 萍乡市| 吴旗县| 彰武县| 江达县| 长阳| 安徽省| 宿州市| 陵川县| 永嘉县| 明水县| 新余市| 保定市| 延边| 永靖县| 龙山县| 虹口区| 泾阳县| 卓尼县| 内江市| 宁波市| 纳雍县| 济阳县| 县级市| 神农架林区| 西乌珠穆沁旗|