1. 背景
2. 選擇PlatnUML原因
- PlantUML是開源的,有一個相對比較成熟的網站,通過簡單的UML語言來實現想要的效果,有點極客范
- PlantUML有比較詳細的各類語言的guide文檔
- PlantUML做了很多的適配,比如常用的編譯器eclipse,IDEA intelliJ都有對應的插件,同時還和Maven和JQuery都做了集成,還提供了war包形式,可以在本地的JavaEE容器(比如Tomcat)中運行起來
- PlantUML語言簡單直接易學,就好像Markdown語法一樣,簡單高效
3. PlantUML語言編寫環境
本文簡單介紹3種使用方法,其它方法讀者可以自行研究
1.在線通過PlantUML語言繪制對應的UML圖,plantUML官網提供了免費的在線編輯服務,通過在左側輸入對應的UML語言來生成對應的UML圖
地址如下:online-site
2.使用IDEA intelliJ插件繪制
使用之前請安裝PlantUML integration插件,然后就可以愉快的書寫UML語言,右側會生成對應的預覽圖片,可以復制或保存生成的圖片到指定的目錄
3.使用Visual Studio Code插件繪制
使用之前請安裝PlantUML插件,然后就可以愉快的書寫UML語言,右側會生成對應的預覽圖片(alt+D顯示)
4. PlantUML常用語法
1.基本用法
用 -> 來繪制參與者之間傳遞的消息
關鍵字 autonumber
用於自動對消息編號
@startuml autonumber Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response Alice -> Bob: Another authentication Request Alice <-- Bob: another authentication Response @enduml
2.聲明參與者
actor
(角色)boundary
(邊界)control
(控制)entity
(實體)database
(數據庫)collections
(集合)queue
(隊列)
@startuml actor Foo1 boundary Foo2 control Foo3 entity Foo4 database Foo5 collections Foo6
queue Foo7 Foo1 -> Foo2: To boundary Foo1 -> Foo3: To control Foo1 -> Foo4: To entity Foo1 -> Foo5: To database Foo1 -> Foo6: To collections
Foo1 -> Foo7: To queue @enduml
3.不同的箭頭樣式
@startuml Bob -> Alice Bob --> Alice Bob ->> Alice Bob ->x Alice Bob -\ Alice Bob \\- Alice Bob \\-- Alice Bob ->o Alice Bob o\\-- Alice Bob <-> Alice Bob <->o Alice Bob -[#red]> Alice: hello Bob <[#0000FF]-- Alice: hello @enduml
4.頁面標題、分頁、頁眉、頁腳
title
關鍵字用於為頁面添加標題。
頁面可以使用header
和footer
顯示頁眉和頁腳。
關鍵字 newpage
用於把一張圖分割成多張。
在 newpage
之后添加文字,作為新的示意圖的標題。
通過手動在文本中添加\n
使長文本換行。
@startuml
autonumber
header Page Header
footer Page %page% of %lastpage%
title test first page
Alice -> Bob: first
newpage
Alice -> Bob: second
newpage A title for test\nlast page
Alice -> Bob: third
@enduml
5.分段
你可以通過使用 ==
關鍵詞來將你的圖表分割成多個邏輯步驟。
@startuml == first == Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response == second == Alice -> Bob: Another authentication Request Alice <-- Bob: Another authentication Response == third == Alice -> Bob: Last authentication Request Alice <-- Bob: Last authentication Response @enduml
6.生命線
關鍵字activate
和deactivate
用來表示參與者的生命活動。
一旦參與者被激活,它的生命線就會顯示出來。
activate
和deactivate
適用於以上情形。
destroy
表示一個參與者的生命線的終結。
@startuml participant user user -> A: DoWork activate A A -> B: <<create Request>> activate B B -> C: DoWork activate C C --> B: WorkDone destroy C B --> A: RequestCreated deactivate B A -> user: Done deactivate A @enduml
還可以使用嵌套的生命線,並且運行給生命線添加顏色。
@startuml participant user user -> A: DoWork activate A #FFBBBB A -> A: Internal call activate A #DarkSalmon A -> B: <<craeteRequest>> activate B B --> A: RequestCreated deactivate B deactivate A A -> user: Done deactivate A @enduml
7.注釋
可以使用note left
或note right
關鍵字在信息后面加上注釋。
可以使用end note
關鍵字有一個多行注釋。
可以使用note left of
,note right of
或note over
在節點(participant)的相對位置放置注釋。
還可以通過修改背景色來高亮顯示注釋。
@startuml Alice -> Bob: hello note left #aqua: This is a first note. Bob -> Alice: hello note right #FFAAAA: This is an another note. note left of Alice: This is displayed left of Alice. note right of Bob: This is displayed right of Bob. note over Alice: This is displayed over Alice. note over Alice, Bob This is a long note. end note @enduml
其他細節請參考中文官網教程:http://plantuml.com/zh/sequence-diagram