1、流程图
流程图中,流程节点是多对多的关系,一个当前节点可能连接到多个下一节点,多个当前节点可能连接到一个下一节点。这种关系用算法中的图来描述非常合适,图是比树更复杂的数据结构。这里我们讨论的是有向无环图,环型结构没去考虑。
2、后端如何存储流程结构
如果按照树型结构的思维去存储流程图结构,是不可行的,树是至上而下的父子关系,而图是点与线关系。当把节点和节点的关系分离出来,分开存储那么就豁然开朗了。构建两张表,一张表是流程的节点,一张表是流程节点的指向,就可以支撑多对多的节点关系了。
3、前后端实现细节问题
无论前端使用何种框架构建流程图,实际前端在保存流程图时还需要将节点位置、长宽、节点间线的属性等信息保存。因此后端还需要保存一份流程图的Json数据,便于前端展示。为什么后端表中之所以还要存流程节点关系?因为节点需要关联一些业务数据,便于业务处理。此外节点的顺序也是后端需要考虑的问题,因为前端并不需要节点层级和顺序这个属性,而是根据节点位置来展示节点。
如果说前端页面的流程节点在幕布中是规整排列,那么我们可以用坐标位置来给节点排序。x轴坐标就代表层级,y轴坐标代表同级的顺序。由于流程图的复杂性,虽然不是完全准确描述系欸但层级顺序,但是对于业务基本够用。如果不是规整排列,则需要用到图相关的算法来给节点排序,比如DFS(深度优先算法)BFS(广度优先算法)。
4、题外话
从业务中需要实现流程图到无意中看到图算法,方才豁然开朗,从另外一种角度去看到算法的重要性。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 后端存储流程结构的思考
发表评论 取消回复