https://www.jianshu.com/p/e92a52770832

程序员难免要经常画流程图,状态图,时序图等。以前经常用 visio 画,经常为矩形画多大,摆放在哪等问题费脑筋。有时候修改文字后,为了较好的显示效果不得不再去修改图形。今天介绍的工具是如何使用 Sublime + PlantUML 的插件画流程图,状态图,时序图等。这是一种程序员看了就会爱上的画图方式:自然,高效。

Alt+d 生成图片

什么是 PlantUML

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

时序图

流程图

用例图

状态图

组件图

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

时序图

@startuml

title 时序图

== 鉴权阶段 ==

Alice -> Bob: 请求

Bob -> Alice: 应答

== 数据上传 ==

Alice -> Bob: 上传数据

note left: 这是显示在左边的备注

Bob --> Canny: 转交数据

... 不超过 5 秒钟 ...

Canny --> Bob: 状态返回

note right: 这是显示在右边的备注

Bob -> Alice: 状态返回

== 状态显示 ==

Alice -> Alice: 给自己发消息

@enduml

TIPS:

使用 title 来指定标题

'->' 和 '-->' 来指示线条的形式

在每个时序后面加冒号 : 来添加注释

使用 note 来显示备注,备注可以指定显示在左边或右边

使用 == xxx == 来分隔时序图

使用 ... 来表示延迟省略号

节点可以给自己发送消息,方法是发送方和接收方使用同一个主体即可

用例图

@startuml

left to right direction

actor 消费者

actor 销售员

rectangle 买单 {

消费者 -- (买单)

(买单) .> (付款) : include

(帮助) .> (买单) : extends

(买单) -- 销售员

}

@enduml

用例图

用例图是指由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的静态视图

百度百科上有简易的入门资料,其中用例之间的关系 (include, extends) 是关键

使用 actor 来定义参与者

使用括号 (xxx) 来表示用例,用例用椭圆形表达

使用不同的线条表达不同的关系。包括参与者与用例的关系,用例与用例的关系

### 流程图

@startuml

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

@enduml

TIPS:

使用 start 来表示流程开始,使用 stop 来表示流程结束

顺序流程使用冒号和分号 :xxx; 来表示

条件语句使用 if ("condition 1") then (true/yes/false/no) 来表示

条件语句可以嵌套

组件图

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

@startuml

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]

@enduml

TIPS:

使用方括号 [xxx] 来表示组件

可以把几个组件合并成一个包,可以使用的关键字为 package, node, folder, frame, cloud, database。不同的关键字图形不一样。

可以在包内部用不同的箭头表达同一个包的组件之间的关系

可以在包内部直接表达到另外一个包内部的组件的交互关系

可以在流程图外部直接表达包之间或包的组件之间的交互关系

状态图

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

@startuml

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

}

}

@enduml

TIPS:

使用 [*] 来表示状态的起点

使用 state 来定义子状态图

状态图可以嵌套

使用 scale 命令来指定生成的图片的尺寸

startuml如何画流程图_Startuml 画流程图使用方法相关推荐

  1. startuml如何画流程图_因为流程图没画好SCI被拒稿!看完师姐的攻略后我被吊打了!...

    写SCI论文常常会遇到一个问题:对自己的研究很熟悉,但是如何把自己的研究过程介绍给读者则不是一件那么容易的事情.如果不能让读者了解研究过程,读者会对研究结果是否合理.如何应用存在疑问:尤其是期刊编辑和 ...

  2. 计算机项目开发流程,产品开发项目建议流程图怎样画

    产品开发项目建议流程图怎样画 2019-01-14 10:30:27 0点赞 3收藏 0评论 每一个新产品即将问世的时候会对其进行一系列的测试,测试的结果以及需要更改的地方我们会用表格将其整理起来,流 ...

  3. html5环形流程图,环状流程图怎么画好看?5分钟让你精通绘制技巧

    原标题:环状流程图怎么画好看?5分钟让你精通绘制技巧 环状图也是流程图的一种,可以用来直观的表述整个事件的操作过程,不仅外观很新颖使用 也很方便.那要怎样绘制好看的环状流程图呢?下面分享在迅捷画图中绘 ...

  4. ps里面怎么插入流程图_流程图很难画?学会这3个方法,5分钟能绘制出好看又高级的流程图...

    工作中,很多时候我们需要绘制流程图,有些小伙伴觉得流程图很难画,费时又耗力.那么今天小编就来给大家分享3种绘制流程图的方法,希望大家学会后,都能快速画出好看的流程图.下面就一起来看看吧~ 一.Exce ...

  5. excel流程图分叉 合并_流程图怎么画多个分支

    平时我们画流程图都是使用专业的软件来画的,没使用办公软件画过.如何在软件中,画流程图的分支了,今天给就给大家介绍下,流程图的分支是怎么画的. 迅捷流程图制作软件是一款功能强大的轻量级思维导图制作工具, ...

  6. xmind可以画流程图吗_Xmind制作流程图教程 xmind怎么画流程图?xmind画流程图步骤...

    Xmind制作流程图教程 xmind怎么画流程图?xmind画流程图步骤!职场中能躲得过流程图这一关的真心很少,上至高管下至小白,被流程图的修修补补各种蹂躏的人绝不在少数. 像这样,这样,这样--Xm ...

  7. MySQL系统流程图怎么画_Word流程图怎么画?如何轻松绘制流程图

    流程图是表示生产作业前后次序的图示.不管是对于科学工作者还是设计专业毕业生来说,流程图画的好,可以让自己的设计思路简洁明了,表达的更清晰.一般绘制流程图选择Word和专业流程图绘制工具-亿图图示,本文 ...

  8. cad详图怎么画_cad流程图怎么画

    以特定的图形符号加上说明,表示算法的图,称为流程图或框图.那么大家知道cad流程图怎么画吗?下面是学习啦小编整理的cad流程图怎么画的方法,希望能给大家解答. cad流程图的画法: 流程图由特定的图形 ...

  9. 一文读懂:程序员为什么要学会画流程图 11种流程图的绘制工具:processon,wps,draw.io, 迅捷画图等 详细说明使用processon绘制流程图 详细说明绘制流程图

    这里写目录标题 为什么要学会画流程图 11种画流程图的工具 processon wps draw.io Zen Flowchart xGraph lucidchart boardmix plantum ...

  10. 系统设计时先画用例图还是流程图

    系统设计时先画用例图还是流程图 最近在做系统设计时,在开始之初总是会纠结是先画流程图还是先描述用例图? 先画用例图,好像无法一下子把握到系统比较明确的职责? 先画流程图,看起来容易把握了系统职责,但感 ...

最新文章

  1. 合种樟子松、云杉和胡杨
  2. “清华数为”工业时序数据库IoTDB与DWF应用开发寒假师资培训圆满结束
  3. 二值化每个特征,微软用1350亿参数稀疏神经网络改进搜索结果
  4. ie 不执行回调函时_「Excel VBA操作IE篇」10分钟内设置完成,3句代码打开IE浏览器
  5. PHPExcel进行获取列字母
  6. input输入框修改placeholder和readonly的样式
  7. C++ operator 知识点
  8. 使用 Eclipse 建立包的时候,“name”下可选项“Create package-info.java”的作用是什么?
  9. 联想Z6 Pro测评:斗战圣佛?很能打!
  10. imx6 android6.0.1,mfgtool刷写i.MX6 android6.0版本失败
  11. ubuntu19.04支持android,Ubuntu 19.04 最终发布日期和计划功能公布
  12. 如何控制Asp.net Login控件的重定向地址
  13. 社区团购微信小程序开发
  14. 找种子你还在用百度?七个你绝没用过的搜索引擎
  15. mysql 模糊查询 查询条件为多个
  16. faker 无敌了,专注于制作假数据
  17. iOS开发-简单图片背景替换 实现抠图效果
  18. 技术控 | 自然语言技术在文智趋势分析产品上的应用
  19. 益丰大药房互联网医院,积极推动中国大健康产业发展变革
  20. git add . 和 git add * 区别

热门文章

  1. python 文件合并
  2. Centos7 日志查看工具journalctl 使用
  3. 5种好看实用的字体分享
  4. 使用 WinRAR 将bat转exe
  5. Linux内核原理-pid namespace
  6. OpenCore 启动菜单界面美化增加gui界面
  7. 【游戏开发指路】Unity学习路线,三万字大纲(面试题大纲 | 知识图谱 | Unity游戏开发工程师)
  8. android jni stl,Android NDK中C++ STL库动态和静态链接
  9. Java之编写FlyBird小游戏
  10. intouch负值显示0_intouch的若干个经典问题解答