最近,寻找合适的流程图工具中,有一类比较特殊,除了通用的作图功能外,更可以输出代码或者应用或者是任务(draw.io可以集成到vs code等各种IDE,但是仅仅是提供图示,并不能输出代码和脚本进行紧密结合),对于有开发经验的来说,称为“可执行”的流程图比较贴切(站在开发人员角度,图是双向的,后面对应的是代码或者脚本了,好的工具都是可以做到“双向”编辑)。
以前编程的时候用的Rational Rose就是典型的双向工具,从UML图中可以直接生成代码(代码中通过特殊的注释-脚本来标识),反过来在这个代码基础上进行的修改也会同步到图上,如果设计理顺了,代码实现是很爽的。
很多软件都带有这个特性,比较适合高级用户自己在基础软件上定制一些用途,现在常用的有下面几类,先占个坑。
一、数据自动处理类(如ETL),传统的有SQL Server2000中的DTS,带有数据处理图形化设计器,自动生成任务,自动执行,笔者曾经用这个编写过很复杂的程序,现在看起来功能很简洁,但很靠谱。后来升级到了SQL Server2005的SSIS,号称是ETL了,其编程工具有点复杂,没深入。现在新一代ETL工具大行其道,比如Spoon也是流行的ETL图形化工具,在Kettle中用的很多。
![](https://i-blog.csdnimg.cn/blog_migrate/78214e6e7fa344f1804e3c4c2c712173.gif)
![Spoon](https://i-blog.csdnimg.cn/blog_migrate/45878a21691c57954610255ada5fdd80.png)
二、自动代码类(plantUML),前面说的RationalRose就是可执行UML的前辈了,但太昂贵也太复杂。免费的包括PlantUML和StarUML。
PlantUML本质上是也算一门可以快速画图的设计语言,可以使用几乎绝大部分IDE开发环境,例如JetBrains PHPStrom, Pycharm, vscode…,在IDE开发环境下,你可以像使用Mark Down编辑器一样,左栏输入代码(plantUML代码),右栏可以几乎同时看到生成的流程图。
注意,因为plantUML是脚本性质的,很容易扩展为代码双向编程工具使用,就像Rose一样,网上可以查到有一个Go语言的类似项目。
![](https://i-blog.csdnimg.cn/blog_migrate/44a27940474a3ce48ba00d129aa8347a.png)
三、工作流类,还有一类就是工作流引擎了,在国内很多OA,如泛微等都会有这样一个工作流引擎,然后通过一个工作流设计器进行可视化设计,然后就可以生成一个应用,也算可执行流程图了。
![](https://i-blog.csdnimg.cn/blog_migrate/f032100356c8b9d648fc686cfa7d0f1e.png)
可视化的工具越来越成熟,很多甚至免费。这些工具给工程带来和很大的便利性,特别是开发的便利和维护的便利。但另一方面,开发人员容易迷失在这些工具中。
这些工具为我们提供图形化界面,将我们主要的精力放在规则上,提高开发效率。例如ETL中,确实使用这些工具能够非常快速地构建一个job来处理某个数据,不过从整体来看,并不见得整体效率会高多少。问题主要不是出在工具上,而是在设计、开发人员上。他们迷失在工具中,没有去探求ETL的本质。如果我们不透过表面这些工具的简单使用去看它背后蕴涵的思想,最终我们作出来的东西也就是一个个独立的job,将他们整合起来仍然有巨大的工作量。
如果在一个领域有所超越,必须要在理论水平上达到一定的高度.