zoukankan      html  css  js  c++  java
  • 流程审批设计

    这是我的项目中使用的一套关于工作流和审批流的配置,算是比较简单的,这里只写其中比较核心的思路,算是对之前工作的一个技术总结吧。

    以下是数据库设计;后面再跟据实例分析每个表的作用。

    首先是流程配置表:

    如果需要用到一个工作流就要先配置,test_workflow_configuration就需要存入该流程的基本信息

    test_workflow_details需要存入该流程的工作流配置,需要几级审核等信息

    然后是流程记录表:

    这个表存储的是流程记录,每个流程送审之后都会存在这条记录中,一级审核完在插入下一级记录

    最后是申请单表:

    这个表存储的是申请单信息

    ps:这里有一些关联设计的表被我省略了,只说最核心的思路,下面举个栗子

    现在有一个工单申请需求

    首先这个申请单记录记录应该存储在test_order中,包括单据号,创建日期,创建人等信息(相关业务明细另外建表)

    然后配置审核流程

    test_workflow_configuration中应该存入这个流程的基本信息

    test_workflow_details中设置工作流配置(附图1)

    接下来流程开始

    第一步:该工单填写完毕,送审

    当点击【送审】按钮时后台需要以下操作:

    1.将test_order中的status改为1送审状态

    2.流程记录表test_workflow_records插入工作流第一条记录(主管审核)

    test_workflow_details里的post_id是主管岗位id,test_workflow_records里需要的是主管这个岗位上的人的id,作为assignee_id(该工作流受理人id)

    第二步:主管登录系统,进入审批页面,跟据主管id/既是当前用户id(assignee_id)和(is_audit = 0)可以展示当前主管需要审核的所有申请。

        主管点击【审核】按钮,可根据document_code(申请单据号)展示当前申请的所有详细信息,选择【通过】/【驳回】,并填写意见等,最后点击【提交】。

    此时后台需要做以下操作:

    1.更新流程记录为已审核状态(is_audit=1)

    2.跟据workflow_id查询该流程分为多少步(几条记录就是几步),取出当前记录的flow_serialnumber,判断是否是最后一步

    若是最后一步 {

      判断当前记录是否通过

      若通过{

        编写审核通过的业务处理代码

      }  

      否则 {

        直接更新test_order申请状态为驳回(status=3)

      }

    若不是最后一步{

      再判断当前记录是否审核通过

      若不通过{

        直接更新test_order申请状态为驳回(status=3)

      }

      若通过(这个栗子就走这种情况)

      {

        取出flow_serialnumber,+1,查询下一个节点(经理审核)

        

        流程记录表test_workflow_records插入工作流第二条记录(经理审核)

      }

    插入处理方式同上

    第三步:同第二步,此时流程走到经理这里,流程继续进行。

    附上几张截图:

    图1:工作流配置

    图2:审核记录详情

  • 相关阅读:
    SpringCloud分布式配置中心
    SpringCloud服务降级案列
    SpringCloud断路器(Hystrix)
    SpringCloud服务过滤filter
    SpringCloud路由网关Zuul
    SpringCloud微服务实现生产者消费者+ribbon负载均衡
    SpringCloud微服务的Eureka
    忘记MySQL密码以及无法登陆等解决办法
    MySQL备份
    实现两个MySQL数据库之间的主从同步
  • 原文地址:https://www.cnblogs.com/Kingram/p/10905781.html
Copyright © 2011-2022 走看看