简单的⼯作流引擎--数据库设计及开发介绍
之前没怎么接触过⼯作流,在⽹上参考了⼀些相关的案例。任务着急,并没有太看透彻就开始coding了。这套⼯作流引擎并不复杂,主要是应对简单的流程运转及权限控制。
我们主要⽤在售后等⼯单系统中,⼀张⼯单。主要实现了以下功能
1.⼯作流程的界⾯设计
2.流程根据设定的路线流转,设定每个节点的权限,控制流程的编辑及访问,设定流程中每个⽤户对应每个字段的权限
数据库简单吗3.流程分⽀的⾃动判断
4.流程的接单及驳回
数据库结构
这是⼯作流引擎中涉及到的所有表了。
B开头的为主表,L为关联表,R为引⽤表存储些类型之类的常量。
主要表及字段说明
主要的流程设计只保存在两张表中。流程节点表以及路由表。
为了使⼯作流与业务结合,我们⽤到了流程实例表,以及活动记录表。
每开启⼀个流程,便创建⼀条流程实例,每⼀次流程节点的变动,创建⼀条活动记录。
在活动记录表中,设置了接单⼈字段belongUser,每条节点的编辑之前需要有接单⼈。可以在提交上⼀节点的时候指定下⼀节点的接单⼈或者点击接单来⼿动接单。这样设计来避免多⼈同时编辑同⼀个节点。
流程图设计界⾯
设计图使⽤的是gooFlow框架,功能⽐较简单,但是恰巧适合我这种并不复杂的⼯作流系统。⼤家有兴趣的可以下载下来玩⼀下,Demo和Ap i讲解的也⽐较详细
对于多个分⽀的情况,有⽤户操作的为⼿动选择下⼀流程。
⽆操作界⾯的话需要需要在路由⾥写上相应的条件语句,来判断接下来要⾛那⼀条路由。以换货流程为例:
在创建退货订单的时候就会⾃动创建⼀条退货的售后⼯单,同时需要传⼊⽀付⽅式及换货单的状态给⼯作流。
相关代码
我将每个⼯作流封装为⼀个dto,⾥⾯包括此⼯作流的所有相关信息,系统启动时加载到内存中,在修改⼯作流程时刷新。
⼯作流上下⽂
上图只保存了⼯作流的内容,关联到业务的话,还需要⼀个⼯作流上下⽂的类。此类中应该包括⼯作流当前的状态等信息,同时提供⼀些基本的扩展⽅法。
下图为⼯作流上下⽂类的结构
                        写下此⽂⼀来为了锻炼⼀下⾃⼰写博客的能⼒以及表达能⼒。同时也希望个位前辈能够指正纰漏,提出建议!