1、流程图

        流程图中,流程节点是多对多的关系,一个当前节点可能连接到多个下一节点,多个当前节点可能连接到一个下一节点。这种关系用算法中的图来描述非常合适,图是比树更复杂的数据结构。这里我们讨论的是有向无环图,环型结构没去考虑。

2、后端如何存储流程结构

        如果按照树型结构的思维去存储流程图结构,是不可行的,树是至上而下的父子关系,而图是点与线关系。当把节点和节点的关系分离出来,分开存储那么就豁然开朗了。构建两张表,一张表是流程的节点,一张表是流程节点的指向,就可以支撑多对多的节点关系了。

3、前后端实现细节问题

        无论前端使用何种框架构建流程图,实际前端在保存流程图时还需要将节点位置、长宽、节点间线的属性等信息保存。因此后端还需要保存一份流程图的Json数据,便于前端展示。为什么后端表中之所以还要存流程节点关系?因为节点需要关联一些业务数据,便于业务处理。此外节点的顺序也是后端需要考虑的问题,因为前端并不需要节点层级和顺序这个属性,而是根据节点位置来展示节点。

        如果说前端页面的流程节点在幕布中是规整排列,那么我们可以用坐标位置来给节点排序。x轴坐标就代表层级,y轴坐标代表同级的顺序。由于流程图的复杂性,虽然不是完全准确描述系欸但层级顺序,但是对于业务基本够用。如果不是规整排列,则需要用到图相关的算法来给节点排序,比如DFS(深度优先算法)BFS(广度优先算法)。

4、题外话

        从业务中需要实现流程图到无意中看到图算法,方才豁然开朗,从另外一种角度去看到算法的重要性。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部