这是个人项目中使用的一套关于工做流和审批流的配置,算是比较简单的,这里只写其中比较核心的思路,算是对以前工做的一个技术总结吧。数据库
如下是数据库设计;后面再跟据实例分析每一个表的做用。数据库设计
首先是流程配置表:post
若是须要用到一个工做流就要先配置,test_workflow_configuration就须要存入该流程的基本信息设计
test_workflow_details须要存入该流程的工做流配置,须要几级审核等信息3d
而后是流程记录表:code
这个表存储的是流程记录,每一个流程送审以后都会存在这条记录中,一级审核完在插入下一级记录blog
最后是申请单表:workflow
这个表存储的是申请单信息工作流
ps:这里有一些关联设计的表被我省略了,只说最核心的思路,下面举个栗子it
如今有一个工单申请需求
首先这个申请单记录记录应该存储在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:审核记录详情