
1. 背景
隨著工作時間的增長,越發(fā)覺得用專業(yè)的圖形(用例圖,時序圖,ER圖等等)去準確表達想法是很重要的。比如針對某個需求繪制的的用例圖,比一段乏味的文字來的更加有意義,也便于別人理解。加之最近在學習源碼的時候,發(fā)現(xiàn)很多書籍中都會使用類圖,時序圖等UML語言來描述邏輯關(guān)系。于是就在網(wǎng)上找了找繪制UML語言時,業(yè)界主流的一些工具都用什么,找了半天,大部分都用了下面的工具Visio,StartUML,PlantUML。最終經(jīng)過比較選擇了PlantUML。
2. 選擇PlatnUML原因
- PlantUML是開源的,有一個相對比較成熟的網(wǎng)站,通過簡單的UML語言來實現(xiàn)想要的效果,有點極客范
- PlantUML有比較詳細的各類語言的guide文檔
- PlantUML做了很多的適配,比如常用的編譯器eclipse,IDEA intelliJ都有對應(yīng)的插件,同時還和Maven和JQuery都做了集成,還提供了war包形式,可以在本地的JavaEE容器(比如Tomcat)中運行起來
- PlantUML語言簡單直接易學,就好像Markdown語法一樣,簡單高效
3. UML語言介紹
簡而言之,UML語言是一種面向?qū)ο蟮哪P驼Z言,通過UML語言的組合來表達某些事物之間的邏輯關(guān)系。
詳細概念請參見https://www.w3cschool.cn/uml_tutorial/uml_tutorial-c1gf28pd.html
4. PlantUML語言參考文檔
- HTML版本:http://plantuml.com/zh/
- pdf版本:百度云盤鏈接:https://pan.baidu.com/s/1Eq68CaSmqw3vo5972macNA ,提取碼:g1f2
5. PlantUML語言編寫環(huán)境
目前官方網(wǎng)站給出了好多種的環(huán)境搭建方式,下面著重介紹四種
-
在線通過PlantUML語言繪制對應(yīng)的UML圖,plantUML官網(wǎng)提供了免費的在線編輯服務(wù),通過在左側(cè)輸入對應(yīng)的UML語言來生成對應(yīng)的UML圖,地址如下:online-site
1553415664042.png -
通過本地的JavaEE容器啟動plantUML.war
下載Java J2EE WAR File(plantuml.war),將其放在本地的Tomcat的webapps目錄下,啟動后然后訪問http://localost:8080/plantuml,就可以看到如下圖所示畫面,左側(cè)編寫PlantUML語言的代碼,下面是效果圖
plantuml.war下載地址:https://sourceforge.net/projects/plantuml/files/plantuml.war/download
tomcat-plantuml.war.png -
使用IDEA intelliJ插件繪制
使用之前請安裝PlantUML integration插件,然后就可以愉快的書寫UML語言,右側(cè)會生成對應(yīng)的預覽圖片,可以復制或保存生成的圖片到指定的目錄

- 使用SpringBoot集成plantUML
pom.xml中添加如下依賴,更多關(guān)于PlantUML api的使用請參見具體的官方文檔。參考資料2是一個簡單的demo。
<dependency>
<groupId>net.sourceforge.plantuml</groupId>
<artifactId>plantuml</artifactId>
<version>RELEASE</version>
</dependency>
5. 下面是引用標準庫生成的一個邏輯圖
- PlantUML語言如下
@startuml
!include <cloudinsight/tomcat>
!include <cloudinsight/kafka>
!include <cloudinsight/java>
!include <cloudinsight/cassandra>
title Cloudinsight sprites example
skinparam monochrome true
rectangle "<$tomcat>\nwebapp" as webapp
queue "<$kafka>" as kafka
rectangle "<$java>\ndaemon" as daemon
database "<$cassandra>" as cassandra
webapp -> kafka
kafka -> daemon
daemon --> cassandra
@enduml
-
效果圖
sequence.png


