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

當(dāng)前位置:首頁(yè) > 科技  > 軟件

PlantUML畫(huà)時(shí)序圖,真香!

來(lái)源: 責(zé)編: 時(shí)間:2024-05-16 09:04:12 219觀看
導(dǎo)讀引言大家好,我是老三,最近在做系統(tǒng)設(shè)計(jì)的時(shí)候,發(fā)現(xiàn)要畫(huà)不少時(shí)序圖,以前我用的最順手的工具是draw.io,后來(lái)也嘗試了語(yǔ)雀自帶的畫(huà)圖工具,感覺(jué)畫(huà)畫(huà)簡(jiǎn)單的圖還行,但是復(fù)雜一點(diǎn)的,就比較吃力了。圖片哎,這條線怎么又歪了?布局怎么又

引言

大家好,我是老三,最近在做系統(tǒng)設(shè)計(jì)的時(shí)候,發(fā)現(xiàn)要畫(huà)不少時(shí)序圖,以前我用的最順手的工具是draw.io,后來(lái)也嘗試了語(yǔ)雀自帶的畫(huà)圖工具,感覺(jué)畫(huà)畫(huà)簡(jiǎn)單的圖還行,但是復(fù)雜一點(diǎn)的,就比較吃力了。o6d28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片o6d28資訊網(wǎng)——每日最新資訊28at.com

哎,這條線怎么又歪了?布局怎么又亂了?這個(gè)條怎么又對(duì)不齊了?……手忙腳亂才畫(huà)好一張圖,這時(shí)候我就想,有沒(méi)有其它更專業(yè)的畫(huà)圖工具呢?大部分同事都在用Visio,輝哥給我推薦了PlantUML,說(shuō)非常好用!這時(shí)候旁邊來(lái)了一句—— “他就是裝比!”o6d28資訊網(wǎng)——每日最新資訊28at.com

 還有這樣的事?那我不能讓他一個(gè)人都裝了。o6d28資訊網(wǎng)——每日最新資訊28at.com

最開(kāi)始看下官方文檔,發(fā)現(xiàn)PlantUML類似MarkDown,似乎需要一點(diǎn)學(xué)習(xí)成本,簡(jiǎn)單用了一下,曲線還是挺平緩的,上手相當(dāng)快!推薦大家也用一下試試。o6d28資訊網(wǎng)——每日最新資訊28at.com

一、什么是PlantUML?

PlantUML是一個(gè)多功能組件,可快速、直接地創(chuàng)建圖表。用戶可以使用簡(jiǎn)單直觀的語(yǔ)言起草各種圖表。o6d28資訊網(wǎng)——每日最新資訊28at.com

PlantUML是一個(gè)開(kāi)源工具,它允許我們用簡(jiǎn)單的文本描述來(lái)創(chuàng)建UML圖,包括序列圖、用例圖、類圖、對(duì)象圖、活動(dòng)圖、組件圖、部署圖、狀態(tài)圖,以及我們今天要講的時(shí)序圖。o6d28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片o6d28資訊網(wǎng)——每日最新資訊28at.com

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

二、快速入門(mén)

PlantUML插件

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

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

圖片圖片o6d28資訊網(wǎng)——每日最新資訊28at.com

  • PlantUML integration

插件使用效果o6d28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片o6d28資訊網(wǎng)——每日最新資訊28at.com

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

插件市場(chǎng):o6d28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片o6d28資訊網(wǎng)——每日最新資訊28at.com

  • 插件使用效果:

圖片圖片o6d28資訊網(wǎng)——每日最新資訊28at.com

Hello World!

我們先來(lái)看個(gè)最簡(jiǎn)單的例子,通過(guò)-> 、-->和 :就可以在參與者之間傳遞消息,不用明確聲明參與者。o6d28資訊網(wǎng)——每日最新資訊28at.com

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

圖片圖片o6d28資訊網(wǎng)——每日最新資訊28at.com

三、PlantUML時(shí)序圖語(yǔ)法

接下來(lái),我們看看PlantUML時(shí)序圖的一些具體語(yǔ)法。o6d28資訊網(wǎng)——每日最新資訊28at.com

聲明參與者

我們使用關(guān)鍵字participant 來(lái)聲明參與者,就可以對(duì)該參與者進(jìn)行更多的控制。聲明的順序就是默認(rèn)的顯示順序。我們也可以用這些關(guān)鍵字來(lái)聲明參與者,給參與者設(shè)置不同的形狀。o6d28資訊網(wǎng)——每日最新資訊28at.com

  • actor(角色)
  • boundary(邊界)
  • control(控制)
  • entity(實(shí)體)
  • database(數(shù)據(jù)庫(kù))
  • collections(集合)
  • queue(隊(duì)列)

我們還可以通過(guò) as關(guān)鍵字重命名參與者。o6d28資訊網(wǎng)——每日最新資訊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

圖片參與者o6d28資訊網(wǎng)——每日最新資訊28at.com

默認(rèn)的顏色比較單調(diào),也可以通過(guò)#來(lái)設(shè)置參與者的顏色:o6d28資訊網(wǎng)——每日最新資訊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

上顏色的參與者上顏色的參與者o6d28資訊網(wǎng)——每日最新資訊28at.com

消息傳遞

在不同參與者之間,通過(guò)箭頭+:來(lái)表示消息傳遞。o6d28資訊網(wǎng)——每日最新資訊28at.com

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

同步消息同步消息o6d28資訊網(wǎng)——每日最新資訊28at.com

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

異步消息異步消息o6d28資訊網(wǎng)——每日最新資訊28at.com

  • 返回消息:通常從接收者返回到發(fā)送者,標(biāo)識(shí)一個(gè)回應(yīng)。
A <-- B: 返回消息文本

返回消息返回消息o6d28資訊網(wǎng)——每日最新資訊28at.com

  • 自調(diào)用:一個(gè)參與者直接發(fā)送消息給自己,表示自我處理或運(yùn)算。
A ->A: 自調(diào)用
  • 自調(diào)用

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

在時(shí)序圖中,生命線表示對(duì)象在一段時(shí)間內(nèi)的活動(dòng)狀態(tài),也就是從參與者往下延伸的那條虛線。激活條用來(lái)表示參與者或?qū)ο笤谔幚砟硞€(gè)任務(wù)期間的活動(dòng)狀態(tài),是生命線的一部分,矩形條形式出現(xiàn)。o6d28資訊網(wǎng)——每日最新資訊28at.com

  • 生命線的激活與撤銷:可以用下面這些關(guān)鍵字來(lái)控制生命線的激活與撤銷

activate: 顯示參與者的活動(dòng)狀態(tài)開(kāi)始o6d28資訊網(wǎng)——每日最新資訊28at.com

deactivate: 指示參與者的活動(dòng)狀態(tài)結(jié)束。o6d28資訊網(wǎng)——每日最新資訊28at.com

destroy: 用于表示參與者的生命線終結(jié),通常表示對(duì)象生命周期的結(jié)束。o6d28資訊網(wǎng)——每日最新資訊28at.com

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

生命線的激活與撤銷生命線的激活與撤銷o6d28資訊網(wǎng)——每日最新資訊28at.com

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

生命線的嵌套與顏色生命線的嵌套與顏色o6d28資訊網(wǎng)——每日最新資訊28at.com

  • 自動(dòng)激活:在發(fā)送消息時(shí)自動(dòng)顯示激活條。
A->B++: 激活B并發(fā)送消息

自動(dòng)激活自動(dòng)激活o6d28資訊網(wǎng)——每日最新資訊28at.com

  • 自動(dòng)去激活:在接收回應(yīng)時(shí)自動(dòng)隱藏激活條。
A->B++: 激活B并發(fā)送消息A <--B--: B去激活并回應(yīng)消息

自動(dòng)去激活自動(dòng)去激活o6d28資訊網(wǎng)——每日最新資訊28at.com

分組和替代

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

分組分組o6d28資訊網(wǎng)——每日最新資訊28at.com

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

替代替代o6d28資訊網(wǎng)——每日最新資訊28at.com

注釋

注釋用于添加說(shuō)明性文本。o6d28資訊網(wǎng)——每日最新資訊28at.com

  • 可以用note left of,note right of或note over來(lái)控制注釋相對(duì)節(jié)點(diǎn)的位置,還可以通過(guò)修改背景色來(lái)高亮顯示注釋。
@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

注釋注釋o6d28資訊網(wǎng)——每日最新資訊28at.com

顏色

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

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

直接指定顏色直接指定顏色o6d28資訊網(wǎng)——每日最新資訊28at.com

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

使用 skinparam 設(shè)置顏色使用 skinparam 設(shè)置顏色o6d28資訊網(wǎng)——每日最新資訊28at.com

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

四、完整實(shí)例

我們接下來(lái)看一個(gè)稍微完整一點(diǎn)的例子,在這個(gè)例子中,我們的需求,是要在原本的登錄的基礎(chǔ)上,引入Google登錄。o6d28資訊網(wǎng)——每日最新資訊28at.com

@startumlskinparam ParticipantBackgroundColor #DeepSkyBlueactor 用戶 as c  #DeepSkyBlueparticipant "客戶端" as clientparticipant "服務(wù)網(wǎng)關(guān)" as gaparticipant "用戶服務(wù)" as userdatabase "數(shù)據(jù)庫(kù)" as DB  #DeepSkyBlueparticipant "Google服務(wù)" as google  #LightCoralactivate c #DeepSkyBlueactivate client #DeepSkyBluec->client:用戶登錄group#LightCoral #LightCoral Google登錄客戶端流程  client -> google : 請(qǐng)求Google OAuth登錄            activate google #DeepSkyBlue            google-->client:登錄url            client->google:跳轉(zhuǎn)登錄頁(yè)            google -> google : 用戶登錄            google --> client : Google登錄Token            deactivate googleend|||client -> ga : 登錄請(qǐng)求note right#LightCoral:新增登錄方式,三方登錄請(qǐng)求實(shí)體activate ga #DeepSkyBluega ->user:請(qǐng)求轉(zhuǎn)發(fā)activate user #DeepSkyBluealt#DeepSkyBlue 常規(guī)登錄    user -> DB : 查詢用戶信息    activate DB #DeepSkyBlue    DB -> user : 用戶信息    deactivate DB    user->user:登錄密碼校驗(yàn)|||else Google登錄    group#LightCoral #LightCoral Google登錄服務(wù)端流程          user->google:驗(yàn)證token          activate google #DeepSkyBlue          google-->user:用戶信息          deactivate google          user->user:存儲(chǔ)或更新用戶信息    end groupenduser-->ga:登錄結(jié)果deactivate userga -> client : 響應(yīng)deactivate gaalt#DeepSkyBlue 成功        client -> c : 登錄成功else 失敗        client -> c : 登錄失敗enddeactivate client|||@enduml

登錄時(shí)序圖登錄時(shí)序圖o6d28資訊網(wǎng)——每日最新資訊28at.com

五、總結(jié)

PlantUML使用起來(lái)整體上還是非常舒服的,對(duì)我而言,這幾個(gè)特點(diǎn)讓我愛(ài)不釋手:o6d28資訊網(wǎng)——每日最新資訊28at.com

  • 提供了類似MarkDown的所見(jiàn)即所得的使用體驗(yàn),免去調(diào)整圖形之?dāng)_
  • PlantUML本質(zhì)是文本,可以進(jìn)行版本控制,多人協(xié)同
  • 語(yǔ)雀支持文本畫(huà)圖的功能,可以嵌入PlantUML文本,支持在語(yǔ)雀文檔里直接修改

本文鏈接:http://m.www897cc.com/showinfo-26-88327-0.htmlPlantUML畫(huà)時(shí)序圖,真香!

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 我用 Flutter、React Native 和 Ionic 構(gòu)建了相同的應(yīng)用程序

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

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产精品福利影院| 亚洲午夜精品久久久久久浪潮| 国产精品久久看| 国产精品免费一区二区三区观看 | 欧美精品在线观看一区二区| 黄色成人av在线| 国内不卡一区二区三区| 欲香欲色天天天综合和网| 亚洲欧洲在线视频| 亚洲午夜精品久久久久久app| 亚洲欧美综合v| 久久综合九色欧美综合狠狠| 欧美日本国产视频| 国产精品一区二区欧美| 激情综合色综合久久| 亚洲免费电影在线观看| 亚洲欧美一级二级三级| 久久在线精品| 国产精品扒开腿做爽爽爽软件 | 久久久久久久久久久久久久一区| 欧美大片免费久久精品三p| 国产精品久久久久免费a∨大胸| 国精品一区二区| 一区二区欧美日韩视频| 久久久久久一区| 欧美性猛交视频| 伊人精品在线| 一本久道久久综合狠狠爱| 国产婷婷色一区二区三区| 在线不卡中文字幕| 亚洲大胆女人| 一区二区三区四区国产| 久久视频在线免费观看| 欧美婷婷久久| 在线看国产一区| 亚洲男女自偷自拍| 欧美黄色免费| 国产精品日本一区二区| 最新日韩在线视频| 久久久久久亚洲精品不卡4k岛国| 欧美视频网址| 亚洲激情国产| 久久久水蜜桃| 国产农村妇女精品一二区| 9i看片成人免费高清| 噜噜噜91成人网| 国产亚洲人成a一在线v站| 一区二区三区鲁丝不卡| 国产欧美日本| 亚洲精品黄色| 亚洲综合三区| 欧美精品一区二区三区蜜桃 | 欧美在现视频| 欧美日韩一区免费| 91久久精品网| 久热这里只精品99re8久| 国产日韩亚洲| 亚洲欧美日韩在线观看a三区| 欧美理论视频| 亚洲欧洲日产国码二区| 久久综合电影| 黄网动漫久久久| 久久精品国产亚洲5555| 国产乱人伦精品一区二区| 亚洲天堂第二页| 欧美日韩成人一区| 国产欧美日韩不卡| 欧美在线视频免费观看| 久久精品一区二区三区不卡| 欧美天天影院| 亚洲国产精品欧美一二99| 午夜宅男欧美| 国产精品另类一区| 亚洲一区二区三区精品在线| 美日韩在线观看| 禁断一区二区三区在线 | 亚洲欧美日韩在线不卡| 欧美亚洲成人精品| 久久国产视频网站| 欧美成熟视频| 伊人久久大香线| 午夜日韩在线观看| 国产精品一区二区黑丝| 亚洲电影欧美电影有声小说| 西西人体一区二区| 欧美视频在线观看一区| 激情欧美一区二区三区| 欧美一区二区三区另类 | 久久亚洲国产成人| 国外成人在线视频| 欧美中文字幕精品| 国产亚洲一区二区三区在线观看 | 久久伊人一区二区| 亚洲激精日韩激精欧美精品| 欧美成人精品在线| 亚洲美女毛片| 欧美午夜理伦三级在线观看| 日韩亚洲在线| 欧美高清视频| 夜夜嗨av一区二区三区| 欧美丝袜第一区| 午夜视频在线观看一区二区三区| 国产热re99久久6国产精品| 久久精品中文字幕一区| 一区二区在线视频播放| 欧美成人国产| 中日韩午夜理伦电影免费| 欧美亚一区二区| 性亚洲最疯狂xxxx高清| 悠悠资源网亚洲青| 欧美日本一道本| 亚洲欧美视频在线观看视频| 国产亚洲人成a一在线v站| 美国十次了思思久久精品导航| 亚洲精品乱码久久久久| 欧美亚州一区二区三区| 欧美有码在线观看视频| 亚洲国产天堂久久综合| 国产精品a级| 久久噜噜噜精品国产亚洲综合| 亚洲国产日韩在线| 欧美午夜一区二区福利视频| 久久国产精品72免费观看| 91久久精品美女| 国产精品久久国产精品99gif| 久久久www成人免费毛片麻豆| 亚洲日本无吗高清不卡| 国产精品亚洲综合一区在线观看| 欧美有码视频| 亚洲美女福利视频网站| 国产精品羞羞答答| 欧美电影在线播放| 校园春色综合网| 亚洲人久久久| 国产日产欧美a一级在线| 欧美大秀在线观看| 午夜精品久久久久久久久久久久| 亚洲国产高清一区| 国产精品色网| 美女视频一区免费观看| 亚洲女人天堂av| 亚洲国产精品美女| 国产精品久久久久9999| 久久久久久久一区二区| 99视频日韩| 亚洲福利免费| 国产人妖伪娘一区91| 欧美日一区二区在线观看 | 国产精品视频免费在线观看| 美女诱惑黄网站一区| 亚洲欧美影院| 亚洲激情在线观看| 国产日韩一区欧美| 欧美三级网址| 你懂的成人av| 午夜欧美大尺度福利影院在线看 | 亚洲男人的天堂在线| 日韩午夜精品视频| 韩国成人福利片在线播放| 欧美日韩国产精品一区| 欧美一区二区在线观看| 中文欧美在线视频| 亚洲精品久久久久久久久| 激情综合色综合久久| 国产欧美日韩精品专区| 欧美日本在线看| 女女同性精品视频| 久久人人爽人人爽| 亚洲午夜视频| 亚洲伦理中文字幕| 亚洲激情综合| 1024成人网色www| 黄页网站一区| 国产亚洲毛片| 国产日韩欧美a| 国产精品男gay被猛男狂揉视频| 欧美精品一区在线| 蜜桃av一区二区在线观看| 久久久久一区二区三区| 欧美在线三级| 性色av一区二区三区在线观看 | 亚洲一级二级| 正在播放欧美视频| 亚洲欧美一区二区精品久久久| 亚洲视频一区| 在线日韩欧美视频| 欧美三级黄美女| 欧美精品麻豆| 久久在线免费视频| 欧美专区在线| 欧美一区二区精品久久911| 亚洲淫片在线视频| 正在播放欧美视频| 夜夜嗨av一区二区三区免费区| 亚洲国产一区二区三区在线播| 国内精品嫩模av私拍在线观看 | 国产精品乱子乱xxxx| 欧美成人r级一区二区三区| 久久久久九九视频| 久久九九精品| 久久久久国产成人精品亚洲午夜| 久久精品成人欧美大片古装| 久久本道综合色狠狠五月| 欧美伊人久久大香线蕉综合69|