美文网首页工作流
轻量级审批流设计

轻量级审批流设计

作者: 37度开水 | 来源:发表于2020-04-13 11:20 被阅读0次
    串行审批流程
    1. 基础设置


      Screen Shot 2020-04-11 at 11.54.52 AM.png
    2. 表单设计
      表单以json形式单独存储到数据库
      存储表单的数据库表以 f_ 开头

      Screen Shot 2020-04-11 at 12.03.42 PM.png
    3. 流程设计
      表单和流程一对一
      流程设计完成,以json形式存储到表单定义表, 以 wf_ 开头
      流程分支条件来源于表单中的某个属性,以参数形式存储在流程json中

      Screen Shot 2020-04-11 at 12.02.50 PM.png
    4. 高级设计


      Screen Shot 2020-04-11 at 12.03.16 PM.png
    截屏2020-04-13 上午11.12.37.png

    将设计好的流程JSON保存到WF_PROCESS表中,产生一条记录。xml文档里有流程的名字,如果这个名字在WF_PROCESS已经存在了,则保存时产生的新的记录的version字段值会自动加1。processId是唯一的,不重复。

    截屏2020-04-13 上午11.13.51.png

    开启一个流程实例时,WF_ORDER表有个字段PROCESS_ID和流程定义的process_id相关联,他们是一对多的关系。
    从业务表把条件属性取出来,直接存到variable里面,例如,请假2天以上需要不同人员审批,先把请几天假取出来,{condition: "4>2"}。
    当开启一个流程实例WF_ORDER时,在WF_ORDER和WF_HIST_ORDER都新增一条记录,并且同时产生的那两条记录的主键id是一样的。并把这条记录存到缓存中。
    其中WF_HIST_ORDER比WF_ORDER多一个字段ORDER_STATUS 流程实例状态(0:结束;1:活动)。
    当流程没跑完时,ORDER_STATUS的值是1;
    当整个事件流程跑完了,WF_ORDER表的那条记录会被删除,WF_HIST_ORDER表对应的那条记录的ORDER_STATUS的值变成0,表示流程实例跑完了。

    截屏2020-04-13 上午11.14.09.png 截屏2020-04-13 上午11.41.09.png

    存当前任务的;当流程执行完当前任务节点时,WF_TASK的这条记录会被剪切到WF_HIST_TASK表中,然后在WF_TASK表中新增下一个任务节点的信息记录。新增的下一任务节点的task有个字段parent_task_id记住上一个任务节点在WF_HIST_TASK表里的WF_HIST_TASK_ID(上一个任务节点从WF_TASK表剪切到WF_HIST_TASK了);这样就可以实现回退等功能。

    截屏2020-04-13 上午11.41.37.png 截屏2020-04-13 上午11.15.05.png

    相关文章

      网友评论

        本文标题:轻量级审批流设计

        本文链接:https://www.haomeiwen.com/subject/tkiwmhtx.html