【求助】php 审批流程 程序和mysql一般是怎么设计的?
如图:思路是怎样的?另外还需要注意些什么?
还有审批流程的记录,程序和mysql又是怎么设计的?
【求助】php 审批流程 程序和mysql一般是怎么设计的?
如图:思路是怎样的?另外还需要注意些什么?
还有审批流程的记录,程序和mysql又是怎么设计的?
三张表:
第一张: 流程权限表 主要作用创建一个审批流程,需要哪些管理层审核 比如:事件:请假 ---- 审核人:员工=>主管=》经理
第二张: 用户关系表 比如:员工-》主管-》经理 财务=》财务主管=》经理
第三张:审核流程步骤表 每过一个审核人就生成一条记录
这个表的字段预计有 id 发起人 流程权限表id 审核人 审核时间 备注 状态
审批流程的功能一般都不会自己实现,因为太复杂,一般都用成熟的第三方bpm来实现,国内比较大的比如泛微、致远等,但商业化的价格比较高,国外的开源免费的bpm比如activiti,flowable等,不用钱但和国内流程差别大,不容易使用。
如果自己实现的话,也要参考bpm的模型来实现,需要有流程定义,有流程实例,有任务,候选人,办理人等,即使你想简单实现,也不太容易。
有点儿类似于设计模式中的「责任链模式」。
简单设计一下表
task_id | 任务id |
---|---|
level | 当前层 |
next_level | 下一层 |
approve_number | 至少需要同意人数,默认1 |
id | 主键 |
---|---|
user_id | 对应的负责人ID |
task_id | 对应的任务id |
level_id | 层级 处理一个层级存在多个负责人 |
status | 审核状态 1/初始状态、2/当前是否需要我审核、3/我已通过、4/我拒绝了 |
id | 主键 |
---|---|
created_at | 审核时间 |
task_id | 任务id |
level_id | 审核的等级 |
user_id | 审核人 |
…… | 批注等…… |
当有一个任务投递进来后,遍历所有层级以及层级下对应的审核者,创建默认数据,status 为 1.表示初始状态,
后查找 level 中最小值,拿 level_id 去更新对应 level_id 的状态 为 2 ,表示需要我审核,审核时判断至少需要同意人数,判断如果达成,并在审核记录表添加批注信息等,当然 也可以就在原表扩张字段,就修改 next_level 的状态为需要审核……以此类推。
这样有个问题就是 ,在取出列表时,比较多,如果每次都递归就很耗资源,你可以做个缓存,把审核结构缓存下来,就不用每次都去递归查结构了,只需要去查当前 status 为 2 的,然后更新去缓存的结构比对,就可以得到当前处于哪一级。
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
a表 (审核申请记录表):
b表 (审核申请处理人记录表)
当然我只是写了个大概的东西,自己的业务需要结合实际来考虑。