当你需要画类图、流程图、状态图、活动图等等时,
第一想法估计是visio吧,因为大学时很多老师就是用它画UML的。
visio作为Microsoft Office软件的一个部分, Windows操作系统下运行的流程图软件,可以制作的图表范围十分广泛,保存格式也多种多样。
然而本文要介绍的是另外两个工具,程序员专属的流程图工具,plantuml和graphviz。
选择plantuml与graphviz的理由
visio或者其他成熟的UML制图软件,虽然可以所见即所得,但逃不过要收费。
更因为,graphviz设计了一套完整的脚本语言用于实现描述流程图关系和样式,并且提供python sdk让你在代码里实现各种各样的流程图。
是不是很酷?程序员,总得有几样特立独行的工具。
plantuml
PlantUml是一个支持快速绘制的开源项目,基于强graphviz图形库进行图片渲染,Intellij IDEA和eclipse都有其相关插件。个人而言,喜欢将所有工作相关的内容都放在idea内完成,例如Golang/Python/Sql,博客markdown等。
![3fc75bda6866ba98fedd83ba1ac58a1b.png](https://i-blog.csdnimg.cn/blog_migrate/9ce088771559d4bee1becfa792b0c1ae.jpeg)
Intellij plantuml插件
由于plantuml基于graphviz实现的,所以你需要去graphviz官网下载个Windows的安装包,并设置相关的环境变量才可以在intellij中使用。plantuml的所有元素,请见下图:
![0d573b86cfc88d205e0ecb6859f9fdbe.png](https://i-blog.csdnimg.cn/blog_migrate/536968cd98967904133712ee16bacbf7.jpeg)
你可以定义他们之间的连接关系,以及连接符的样式
![cb479dc4150de63709a7691a9036c4bc.png](https://i-blog.csdnimg.cn/blog_migrate/e418fe5de1daf16442c4afec21e90eb0.jpeg)
或者将他们组合包装起来
![c63c58b0335e749ada94fd57ddfe3ce4.png](https://i-blog.csdnimg.cn/blog_migrate/313833b0d40105b9080d13d12c6fa79a.jpeg)
现在我们可以画个类图
![01a0555597e0d5356aed4ec4fd6a3617.png](https://i-blog.csdnimg.cn/blog_migrate/24132f95b88e6a52652618050d2666fe.jpeg)
在类图上添加关系
![830f8311c24256322a24e7224c84d2d2.png](https://i-blog.csdnimg.cn/blog_migrate/c05380960d6732286d7c4b3cf7e8875a.jpeg)
最后,画个复杂点的状态图
![4fdf9c8acdeacc5b088fdfd453d02ca6.png](https://i-blog.csdnimg.cn/blog_migrate/965823284d805901bc4dc02d2923e014.jpeg)
如果你需要导出图片,可直接点按钮生成png/svg格式图片。
graphviz
graphviz设计了一套描述语言DOT,语法也挺简单的,具体如下图:
![b96f7651ea6e163f1eed2cbe9ed9b4e9.png](https://i-blog.csdnimg.cn/blog_migrate/69a26c2afa49b9c27d86b2a3a571887b.jpeg)
中括号是用来描述节点属性的,相关属性有shape、color、label等,写个列子
digraph example3 {Node1 -> Node2Node2 -> Node3Node3 -> Node1Node1 [shape=doubleoctagon, label="Node1Web Node