【求助】php 审批流程 程序和mysql一般是怎么设计的?

【求助】php 审批流程 程序和mysql一般是怎么设计的?

如图:思路是怎样的?另外还需要注意些什么?
111.png

还有审批流程的记录,程序和mysql又是怎么设计的?
222.png

阅读 854
评论
    4 个回答

    有点儿类似于设计模式中的「责任链模式」。

    简单设计一下表

    • 任务层级 level
    task_id 任务id
    level 当前层
    next_level 下一层
    approve_number 至少需要同意人数,默认1
    • 负责人(principal)
    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 的,然后更新去缓存的结构比对,就可以得到当前处于哪一级。