在Emacs中使用plantuml畫UML圖
Table of Contents
plantuml是一款基於文字生成UML圖形的組件。之所以在已經有Visio以及其他圖形化的UML畫圖軟件的情況下,我們還需要使用plantuml這種基於文字的畫圖軟件,是因為它可以自動排版,只需要寫出核心邏輯,便可以自動的生成圖形。所以,當熟悉之后,它的作圖效率會更高。
2 配置:
1: ;; active Org-babel languages 2: (org-babel-do-load-languages 3: 'org-babel-load-languages 4: '(;; other Babel languages 5: (plantuml . t))) 6: 7: (setq org-plantuml-jar-path 8: (expand-file-name "/path/to/plantuml.jar"))
4 例子及語法
4.1 時序圖
title 時序圖 == 鑒權階段 == Alice -> Bob: 請求 Bob -> Alice: 應答 == 數據上傳 == Alice -> Bob: 上傳數據 note left: 這是顯示在左邊的備注 Bob --> Canny: 轉交數據 ... 不超過 5 秒鍾 ... Canny --> Bob: 狀態返回 note right: 這是顯示在右邊的備注 Bob -> Alice: 狀態返回 == 狀態顯示 == Alice -> Alice: 給自己發消息

4.2 用例圖
title 用例圖
left to right direction
actor 消費者
actor 銷售員
rectangle 買單 {
消費者 -- (買單)
(買單) .> (付款) : include
(幫助) .> (買單) : extends
(買單) -- 銷售員
}

4.3 流程圖
start
:"步驟1處理";
:"步驟2處理";
if ("條件1判斷") then (true)
:條件1成立時執行的動作;
if ("分支條件2判斷") then (no)
:"條件2不成立時執行的動作";
else
if ("條件3判斷") then (yes)
:"條件3成立時的動作";
else (no)
:"條件3不成立時的動作";
endif
endif
:"順序步驟3處理";
endif
if ("條件4判斷") then (yes)
:"條件4成立的動作";
else
if ("條件5判斷") then (yes)
:"條件5成立時的動作";
else (no)
:"條件5不成立時的動作";
endif
endif
stop

4.4 組件圖
package "組件1" {
["組件1.1"] - ["組件1.2"]
["組件1.2"] -> ["組件2.1"]
}
node "組件2" {
["組件2.1"] - ["組件2.2"]
["組件2.2"] --> [負載均衡服務器]
}
cloud {
[負載均衡服務器] -> [邏輯服務器1]
[負載均衡服務器] -> [邏輯服務器2]
[負載均衡服務器] -> [邏輯服務器3]
}
database "MySql" {
folder "This is my folder" {
[Folder 3]
}
frame "Foo" {
[Frame 4]
}
}
[邏輯服務器1] --> [Folder 3]
[邏輯服務器2] --> [Frame 4]
[邏輯服務器3] --> [Frame 4]

4.5 狀態圖
scale 640 width
[*] --> NotShooting
state NotShooting {
[*] --> Idle
Idle --> Processing: SignalEvent
Processing --> Idle: Finish
Idle --> Configuring : EvConfig
Configuring --> Idle : EvConfig
}
state Configuring {
[*] --> NewValueSelection
NewValueSelection --> NewValuePreview : EvNewValue
NewValuePreview --> NewValueSelection : EvNewValueRejected
NewValuePreview --> NewValueSelection : EvNewValueSaved
state NewValuePreview {
State1 -> State2
}
}

