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
