<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
最近通過程式碼來畫時序圖,UML用例圖,感覺很不錯,所以給大家分享一下。
日常開發,一般在設計階段,我們都需要畫時序圖、用例圖等等。大家平時畫圖的時候,是用draw.io
還是processOn
呢?用它們畫出的圖,其實都很挺好看的。但是呢,今天田螺哥介紹一個款開源的,畫圖神器!用程式碼就能畫圖,配合IDE使用,畫圖高效簡單,信手拈來,還挺美觀的。這個神奇就是PlantUML
。
PlantUML是一個開源專案,可以快速編寫UML圖的工具。它可以支援編碼的方式來生成圖形。可以用來畫時序圖、UML用例圖、類圖、思維導圖、ER圖等等。
PlantUML 畫出來的圖,簡潔美觀,先給大家看看,一個用PlantUML畫出來的登入時序圖,以及對應畫圖的程式碼,如下:
@startuml title Sequence Diagram of User login actor User as user participant "gateway" as gateway participant "user-core" as userCore database "MySQL" as mysql database "Redis" as redis autonumber user-> gateway:login request,param:username,password activate gateway gateway-> userCore:forward the login request activate userCore userCore-> userCore :check the login param userCore-> mysql:query user info from mysql by username activate mysql mysql-> userCore:response with username and password deactivate mysql userCore->userCore:compare the requested password with the DB's password userCore-> userCore: generate an unique token userCore--> redis: save the token to redis userCore-> gateway: response with the token deactivate userCore gateway-> user: login success with the token deactivate gateway @enduml
登入用例時序圖如下:
PlantUML的安裝很方便的.有個外掛,名字是:PlantUML Integration
,大家可以去IDE的外掛市場,搜尋安裝即可,如下:
安裝成功後,想快速體驗一般的話.可以新建一個專案,然後新建一個plantUML File檔案,然後把我上個小節,登入時序圖那個程式碼複製進去,就可以看到登入時序圖啦.
什麼是時序圖?
時序圖(Sequence Diagram),又名序列圖、循序圖,是一種UML互動圖。它通過描述物件之間傳送訊息的時間順序顯示多個物件之間的動態共同作業。它可以表示用例的行為順序,當執行一個用例行為時,其中的每條訊息對應一個類操作或狀態機中引起轉換的觸發事件。
如何用PlantUML畫時序圖呢?
你可以先新建一個PlantUML檔案
然後選擇Sequence,並定義一個檔名稱
就會有預設的時序圖生成啦.
我們照著登入時序圖的程式碼,來大概說下每個關鍵詞的意思吧.
@startuml title Sequence Diagram of User login actor User as user participant "gateway" as gateway participant "user-core" as userCore database "MySQL" as mysql database "Redis" as redis autonumber user-> gateway:login request,param:username,password activate gateway gateway-> userCore:forward the login request activate userCore userCore-> userCore :check the login param userCore-> mysql:query user info from mysql by username activate mysql mysql-> userCore:response with username and password deactivate mysql userCore->userCore:compare the requested password with the DB's password userCore-> userCore: generate an unique token userCore--> redis: save the token to redis userCore-> gateway: response with the token deactivate userCore gateway-> user: login success with the token deactivate gateway @enduml
關鍵詞解釋如下:
title
:表示該UML用例圖的標題actor
:表示人形的參與者as
: 使用as 關鍵字命名參與者。你可以把它理解成定義變數一樣,as後面跟著的就是變數,宣告後,我們後面就可以使用這個變數啦participant
:表示普通的參與者,它跟actor的主要區別是:形狀不一樣database
:表示參與者形狀是資料庫.autonumber
:可以給參與者新增順序->
:表示繪製兩個參與者之間的資訊,如果你希望是虛線,可以使用-->
.activate
和deactivate
:表示參與者的生命線當然,PlantUML
功能挺豐富的,它還可以組合訊息,雖然在我的登入時序圖還沒體現出來. 它提供了alt/else、opt、loop
來組合訊息.如下:
@startuml Alice -> Bob: 認證請求 alt 登入成功 Bob -> Alice: 認證接受 else 某種失敗情況 Bob -> Alice: 認證失敗 group 我自己的標籤 Alice -> Log : 開始記錄攻擊紀錄檔 loop 1000次 Alice -> Bob: DNS 攻擊 end Alice -> Log : 結束記錄攻擊紀錄檔 end else 另一種失敗 Bob -> Alice: 請重複 end @enduml
對應的時序圖如下:
什麼是用例圖?
用例圖(英語:use case diagram)是使用者與系統互動的最簡表示形式,展現了使用者和與他相關的用例之間的關係。通過用例圖,人們可以獲知系統不同種類的使用者和用例。用例圖也經常和其他圖表配合使用。
如何用PlantUML畫UML用例圖呢?
你可以先新建一個PlantUML檔案,然後選擇user case,並定義個檔名
就會有預設的UNML用例圖生成啦
我挑官網一個用例圖demo來介紹吧,程式碼如下:
@startuml left to right direction actor Guest as g package Professional { actor Chef as c actor "Food Critic" as fc } package Restaurant { usecase "Eat Food" as UC1 usecase "Pay for Food" as UC2 usecase "Drink" as UC3 usecase "Review" as UC4 } fc --> UC4 g --> UC1 g --> UC2 g --> UC3 @enduml
對應生成的用例圖如下:
來看下每個關鍵詞的意思:
left to right direction
:表示從左到右繪製用例圖actor Guest as g
:定義一個人形參與者,變數別名是g.package Professional
:定義一個包package
,名字為Professional
.package
可以用來對用例和角色分組.usecase "Eat Food" as UC1
:定義一個用例,別名為UC1
.fc --> UC4
:表示角色fc
和用例UC4
關聯起來.角色和用例之間的關係,用-->
來表示。什麼是思維導圖?
英文是The Mind Map,又名心智導圖,是表達發散性思維的有效圖形思維工具 ,它簡單卻又很有效同時又很高效,是一種實用性的思維工具。
寫了一個簡單的思維導圖,程式碼如下:
@startmindmap * ** 計算機網路面試題 *** TCP/IP十五連問 *** 兩萬字計算機面試題彙總 ** MySQL面試題 ** Redis面試題 ** 大廠面試真題 *** 蝦皮十五連問 *** 五年Oppo後端面試真題 *** 騰訊雲十五連問 @endmindmap
plantUML畫思維導圖,還是挺簡單的,大家可以看下效果
什麼是活動圖?
動態圖(activity diagram,活動圖)是闡明瞭業務用例實現的工作流程。
我畫了一個簡單版的登入活動流程圖:
@startuml title Activity Diagram of User login start :user request login; if (is request param null?) then (N) :query user info by username; if (is user info null ?) then (N) :compare the password; if (Is password right?) then (Y) :generate a token ,and set it to redis; :response with login success; else(N) :response with wrong password code; stop endif else(Y) :response with error userinfo; stop endif else(Y) :response with error param; stop endif stop @enduml
生成的流程圖如下:
活動圖關鍵解釋如下:
start
表示活動圖流程的開始stop
表示活動圖流程的結束:user request login;
:表示活動流程節點為user request login
,需要加:
和;
的哈if+then+endif
表示一個完整的條件判斷本文介紹了plantUML畫圖,有興趣的小夥伴,可以移步官網學習哈.
plantUM 官網 https://plantuml.com/zh/
更多關於plantuml畫圖時序圖的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45