开源流程图绘制网站数字绘技术路线
admin
2023-01-28 04:39:56
0次

需求分析

以前做项目写文档经常用Visio,自己买了一台电脑的授权,用在了自己常用的工作电脑上。后来出差有点多,用笔记本写文档写的就有点多了,又舍不得再买一台电脑的Visio授权,所以就想找一个免费的、好用的绘制流程图的软件。
开源流程图绘制网站数字绘技术路线

后来找到ProcessOn,一个免费的绘制流程图的网站,上面有不少免费模板,最多可以云存储9张图。但是9张图对我来说实在太少了,我就买了一年的会员,不记得是多少钱了,反正不多。后来会员到期,再想买,发现怎么都涨价到160一年了。于是我想,能不能用开源的的东西,快速做一个类似ProcessOn的网站,具体需求就两个:

  • 可以绘制流程图
  • 能够云存储

所以就可以从这两方面找轮子了。

寻找轮子

免费的流程图,首先我找到了draw.io。需要自己配置云存储,不过只支持国外的比如OneDrive或者Dropbox等,国内都不太好用。后了解到draw.io以及其他大部分流程图网站都是根据mxGraph的示例程序GraphEditor做出来的,因此他们的界面都基本一样,所以我也决定以这个为基础,辅以draw.io的部分组件。
开源流程图绘制网站数字绘技术路线

然后就是云存储了,找一个开源的网盘系统就可以了,这样的系统很多,比如,Seafile,nextCloud等等。不过有一些条件,第一是要纯粹的Web系统,方便跟GraphEditor集成,第二是最好跨平台,第三是方便集成七牛云、阿里云OSS等大型公有云存储系统。最终采用了Cloudreve

系统架构

系统架构其实就挺简单了:
开源流程图绘制网站数字绘技术路线

数据层,首先是Cloudreve是用MySQL数据库的,因此系统使用MySQL数据库并继承了Cloudreve的绝大部分数据结构。本地文件存储和七牛云都可以拿来当做文件存储,这是可以共存的,目前本系统流程图文件使用本地文件存储,图片使用七牛云。

服务层主要继承于Cloudreve系统,简单修改了其中的文件和分享部分,更好的支持流程图文件。添加了图形处理和支付服务。

应用层分为基于Cloudreve的文件管理系统和基于GraphEditor的流程图编辑系统,两个系统基本独立,同时调用服务层的文件服务和图形服务。

整合细节

整合过程中有几个细节:

  1. GraphEditor是使用xml明码存储流程图的,因此需要对Cloudreve进行改造,只支持xml文件,并且对xml文件进行特殊处理,比如编辑、预览等。
  2. 网盘系统没有新建文件这说,只有上传下载,因此需要在Cloudreve网盘系统中使用上传接口来做一个新建流程图功能。
  3. xml文件实际上是纯文本,因此在GraphEditor的流程图编辑界面,只需要调用Cloudreve网盘系统中的文本编辑接口直接编辑xml即可。
  4. php版本的mxGraph接口已经很久没有更新过,无法根据比较复杂的流程图xml文件生成预览图片,因此需要前台生成,然后上传到后台。
  5. 中文库以及模板可以直接使用draw.io的。

源码
示例站

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...