在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 } }