之前作项目写文档常常用Visio,本身买了一台电脑的受权,用在了本身经常使用的工做电脑上。后来出差有点多,用笔记本写文档写的就有点多了,又舍不得再买一台电脑的Visio受权,因此就想找一个免费的、好用的绘制流程图的软件。javascript
后来找到ProcessOn,一个免费的绘制流程图的网站,上面有很多免费模板,最多能够云存储9张图。可是9张图对我来讲实在太少了,我就买了一年的会员,不记得是多少钱了,反正很少。后来会员到期,再想买,发现怎么都涨价到160一年了。因而我想,能不能用开源的的东西,快速作一个相似ProcessOn的网站,具体需求就两个:php
因此就能够从这两方面找轮子了。java
免费的流程图,首先我找到了draw.io。须要本身配置云存储,不过只支持国外的好比OneDrive或者Dropbox等,国内都不太好用。后了解到draw.io以及其余大部分流程图网站都是根据mxGraph的示例程序GraphEditor作出来的,所以他们的界面都基本同样,因此我也决定以这个为基础,辅以draw.io的部分组件。git
而后就是云存储了,找一个开源的网盘系统就能够了,这样的系统不少,好比,Seafile,nextCloud等等。不过有一些条件,第一是要纯粹的Web系统,方便跟GraphEditor集成,第二是最好跨平台,第三是方便集成七牛云、阿里云OSS等大型公有云存储系统。最终采用了Cloudrevegithub
系统架构其实就挺简单了:数据库
数据层,首先是Cloudreve是用MySQL数据库的,所以系统使用MySQL数据库并继承了Cloudreve的绝大部分数据结构。本地文件存储和七牛云均可以拿来当作文件存储,这是能够共存的,目前本系统流程图文件使用本地文件存储,图片使用七牛云。数据结构
服务层主要继承于Cloudreve系统,简单修改了其中的文件和分享部分,更好的支持流程图文件。添加了图形处理和支付服务。架构
应用层分为基于Cloudreve的文件管理系统和基于GraphEditor的流程图编辑系统,两个系统基本独立,同时调用服务层的文件服务和图形服务。ide
整合过程当中有几个细节:网站