流程审批设计

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

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

首先是流程配置表:

如果需要用到一个工作流就要先配置,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:审核记录详情

猜你喜欢

转载自www.cnblogs.com/Kingram/p/10905781.html