在Emacs中使用plantuml画UML图
Table of Contents
- 1. 下载:
- 2. 配置:
- 3. 常见的问题
- 3.1. 中文乱码
- 4. 例子及语法
- 4.1. 时序图
- 4.2. 用例图
- 4.3. 流程图
- 4.4. 组件图
- 4.5. 状态图
Table of Contents
- 1. 下载:
- 2. 配置:
- 3. 常见的问题
- 3.1. 中文乱码
- 4. 例子及语法
- 4.1. 时序图
- 4.2. 用例图
- 4.3. 流程图
- 4.4. 组件图
- 4.5. 状态图
plantuml是一款基于文字生成UML图形的组件。之所以在已经有Visio以及其他图形化的UML画图软件的情况下,我们还需要使用plantuml这种基于文字的画图软件,是因为它可以自动排版,只需要写出核心逻辑,便可以自动的生成图形。所以,当熟悉之后,它的作图效率会更高。
1 下载:
http://www.plantuml.com/download.html
http://www.plantuml.com/graphvizdot.html
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"))
3 常见的问题
3.1 中文乱码
http://www.cnblogs.com/yangwen0228/p/6825554.html
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 } }