PlantUML(程序员绘制流程图专用工具)

写在开头:本文大部分内容为转载,安装后先后遇到"unable to load diagram plugin"和"No diagrams overlap selections"的问题,折腾后参考其他文章解决。解决办法和链接地址已加红标记,希望有需要的朋友们不用再走弯路

什么是 PlantUML

PlantUML 是一个画图脚本语言,用它可以快速地画出:

  • 时序图
  • 流程图
  • 用例图
  • 状态图
  • 组件图

简单地讲,我们使用 visio 画图时需要一个一个图去画,但使用 PlantUML 只需要用文字表达出图的内容,然后就可以直接生成图片。看一个最简单的例子:


   
   
   
   
  1. B ob -> Alice : Hello, how are you
  2. A lice -> Bob : Fine, thank you, and you?

demo

软件安装

这些软件全部是开源或共享软件,不存在版权问题,可以放心使用。

  • 安装 Sublime
    Sublime 是个强大的可扩展的文本编辑器。进入官网下载对应操作系统下的版本安装即可。
  • 安装 graphviz
    graphviz 是个开源的图片渲染库。安装了这个库才能在 Windows 下实现把 PlantUML 脚本转换为图片。
  • 安装 PlantUML for Sublime 插件
    有了这个插件后,我们就可以在 Sublime 里写 PlantUML 脚本,然后直接通过一个快捷键生成图片。安装步骤如下
    • 下载插件,并解压
    • 通过 Preferences -> Browse Packages ... 打开 sublime 的 Packages 目录,解压后的插件放在Packages 目录下
    • 重启 Sublime

为了简化使用,可以在 Sublime 里配置个快捷键。打开 Preferences -> Key Binding - User,添加一个快捷键:

{ "keys": ["alt+d"], "command": "display_diagrams"}
   
   
   
   

上面的代码配置成按住 Alt + d 来生成 PlantUML 图片,你可以修改成你自己喜欢的按键。

效果检验

最后检验一下工作安装是否正确。打开 Sublime 输入:


   
   
   
   
  1. B ob -> Alice : Hello, how are you
  2. A lice -> Bob : Fine, thank you, and you?

选中这些文本内容,按 Alt + d 会在当前工作目录下生成这个图片文件,同时自动弹出窗口显示图片。

注意事项

  • Sublime Text 3 安装失败问题
    安装plantUML插件时,出现 unable to load diagram plugin,check console for details. 把例子粘过来 alt+D 时显示nothing to process. 刚刚找到了解决办法:原因是下载的插件里无法加载文件:Diagram.sublime-settings,其中第三行将编码方式"charset": null改为"charset": "UTF-8",关掉sublime Text 3重启即可。感谢@niminote 提供的解决方案。注意"UTF-8"的括号;如果漏掉,Sublime启动时会继续报错"unable to load diagram plugin,check console for details. "。
  • 按 Alt + d 前需要让要生成图片的 PlantUML 脚本处于选中状态,否则会提示 No diagrams overlap selections 。留言里有不止一位同学犯了这个错误。
  • 另外一个可能的原因是Graphviz没有安装成功,需要特别注意其环境变量。参考这里修改配置后运行OK。

PlantULM 快速入门

时序图


   
   
   
   
  1. @startuml
  2. title 时序图
  3. == 鉴权阶段 ==
  4. Alice -> Bob: 请求
  5. Bob -> Alice: 应答
  6. == 数据上传 ==
  7. Alice -> Bob: 上传数据
  8. note left: 这是显示在左边的备注
  9. Bob --> Canny: 转交数据
  10. ... 不超过 5 秒钟 ...
  11. Canny --> Bob: 状态返回
  12. note right: 这是显示在右边的备注
  13. Bob -> Alice: 状态返回
  14. == 状态显示 ==
  15. Alice -> Alice: 给自己发消息
  16. @enduml

sequence diagram

TIPS:

  • 使用 title 来指定标题
  • '->' 和 '-->' 来指示线条的形式
  • 在每个时序后面加冒号 : 来添加注释
  • 使用 note 来显示备注,备注可以指定显示在左边或右边
  • 使用 == xxx == 来分隔时序图
  • 使用 ... 来表示延迟省略号
  • 节点可以给自己发送消息,方法是发送方和接收方使用同一个主体即可

用例图


   
   
   
   
  1. @startuml
  2. left to right direction
  3. actor 消费者
  4. actor 销售员
  5. rectangle 买单 {
  6. 消费者 -- (买单)
  7. (买单) .> (付款) : include
  8. (帮助) .> (买单) : extends
  9. (买单) -- 销售员
  10. }
  11. @ enduml

use case

TIPS:

  • 用例图
    • 用例图是指由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的静态视图
    • 百度百科上有简易的入门资料,其中用例之间的关系 (include, extends) 是关键
  • 使用 actor 来定义参与者
  • 使用括号 (xxx) 来表示用例,用例用椭圆形表达
  • 使用不同的线条表达不同的关系。包括参与者与用例的关系,用例与用例的关系

流程图


   
   
   
   
  1. @startuml
  2. title 流程图
  3. (*) --> "步骤1处理"
  4. --> "步骤2处理"
  5. if "条件1判断" then
  6. ->[ true] "条件1成立时执行的动作"
  7. if "分支条件2判断" then
  8. ->[ no] "条件2不成立时执行的动作"
  9. -> === 中间流程汇总点 1 ===
  10. else
  11. -->[ yes] === 中间流程汇总点 1 ===
  12. endif
  13. if "分支条件3判断" then
  14. -->[ yes] "分支条件3成立时执行的动作"
  15. --> "Page.onRender ()" as render
  16. --> === REDIRECT_CHECK ===
  17. else
  18. -->[ no] "分支条件3不成立时的动作"
  19. --> render
  20. endif
  21. else
  22. -->[ false] === REDIRECT_CHECK ===
  23. endif
  24. if "条件4判断" then
  25. ->[ yes] "条件4成立时执行的动作"
  26. --> "流程最后结点"
  27. else
  28. endif
  29. --> "流程最后结点"
  30. -->(*)
  31. @enduml

activity diagram

上面的流程图写的时候还是挺直观的,但画出来的图片渲染效果不好,对逻辑的显示不清楚。由于这个原因 PlantUML 实现了另外版本的流程图脚本。

下面是 PlantUML 支持的新版本的流程图脚本,从使用角度来讲,更直观,画出来的图片也更漂亮,推荐使用。


   
   
   
   
  1. @startuml
  2. start
  3. : "步骤1处理";
  4. : "步骤2处理";
  5. if ( "条件1判断") then ( true)
  6. :条件 1成立时执行的动作;
  7. if ( "分支条件2判断") then ( no)
  8. : "条件2不成立时执行的动作";
  9. else
  10. if ( "条件3判断") then ( yes)
  11. : "条件3成立时的动作";
  12. else ( no)
  13. : "条件3不成立时的动作";
  14. endif
  15. endif
  16. : "顺序步骤3处理";
  17. endif
  18. if ( "条件4判断") then ( yes)
  19. : "条件4成立的动作";
  20. else
  21. if ( "条件5判断") then ( yes)
  22. : "条件5成立时的动作";
  23. else ( no)
  24. : "条件5不成立时的动作";
  25. endif
  26. endif
  27. stop
  28. @enduml

active diagram 2

TIPS:

  • 使用 start 来表示流程开始,使用 stop 来表示流程结束
  • 顺序流程使用冒号和分号 :xxx; 来表示
  • 条件语句使用 if ("condition 1") then (true/yes/false/no) 来表示
  • 条件语句可以嵌套

组件图

我们经常使用组件图来画部署视图,或者用来画系统的拓扑结构图。


   
   
   
   
  1. @startuml
  2. package "组件1" {
  3. [ "组件1.1"] - [ "组件1.2"]
  4. [ "组件1.2"] -> [ "组件2.1"]
  5. }
  6. node "组件2" {
  7. [ "组件2.1"] - [ "组件2.2"]
  8. [ "组件2.2"] --> [负载均衡服务器]
  9. }
  10. cloud {
  11. [ 负载均衡服务器] -> [逻辑服务器 1]
  12. [ 负载均衡服务器] -> [逻辑服务器 2]
  13. [ 负载均衡服务器] -> [逻辑服务器 3]
  14. }
  15. database "MySql" {
  16. folder "This is my folder" {
  17. [ Folder 3]
  18. }
  19. frame "Foo" {
  20. [ Frame 4]
  21. }
  22. }
  23. [ 逻辑服务器 1] --> [ Folder 3]
  24. [ 逻辑服务器 2] --> [ Frame 4]
  25. [ 逻辑服务器 3] --> [ Frame 4]
  26. @enduml

component diagram

TIPS:

  • 使用方括号 [xxx] 来表示组件
  • 可以把几个组件合并成一个包,可以使用的关键字为 package, node, folder, frame, cloud, database。不同的关键字图形不一样。
  • 可以在包内部用不同的箭头表达同一个包的组件之间的关系
  • 可以在包内部直接表达到另外一个包内部的组件的交互关系
  • 可以在流程图外部直接表达包之间或包的组件之间的交互关系

状态图

我们一般使用状态图来画状态机。


   
   
   
   
  1. @startuml
  2. scale 640 width
  3. [*] --> NotShooting
  4. state NotShooting {
  5. [*] --> Idle
  6. I dle --> Processing: SignalEvent
  7. P rocessing --> Idle: Finish
  8. I dle --> Configuring : EvConfig
  9. C onfiguring --> Idle : EvConfig
  10. }
  11. state Configuring {
  12. [*] --> NewValueSelection
  13. N ewValueSelection --> NewValuePreview : EvNewValue
  14. N ewValuePreview --> NewValueSelection : EvNewValueRejected
  15. N ewValuePreview --> NewValueSelection : EvNewValueSaved
  16. state NewValuePreview {
  17. S tate1 -> State2
  18. }
  19. }
  20. @enduml

State Diagram

TIPS:

  • 使用 [*] 来表示状态的起点
  • 使用 state 来定义子状态图
  • 状态图可以嵌套
  • 使用 scale 命令来指定生成的图片的尺寸

总结

不需要去记这些标记,在需要的时候去使用它,通过不断地使用来熟悉不同的图的语法。可以下载 PlanUML 官方文档 作为参考,遇到问题的时候翻一翻,这样很快就可以学会使用 PlantUML 高效地画图。

转载:http://www.jianshu.com/p/e92a52770832

android studio安装plantUML过程:http://blog.csdn.net/u013831257/article/details/50118461

安装 Graphviz时, 执行sudo apt-get install graphviz即可。 ​

详细的中文教程:https://wenku.baidu.com/view/867a78b448d7c1c708a145f4.html

详细的英文教程:http://plantuml.com/PlantUML_Language_Reference_Guide.pdf

你可能感兴趣的:(UML)