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

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

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

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

阅读 762
评论
    4 个回答

    a表 (审核申请记录表):

    id title(申请标题) uid(申请人id) conent(申请内容) status(状态)
    1 申请项目打款 张三 需要张总和财务处理 待审核/审核中/已审核

    b表 (审核申请处理人记录表)

    id 类aid(a表id)型 hid(处理人id) weight(处理优先级,谁先进行审核) content(处理的内容是什么) status(状态)
    1 1 张总 100 需要处理拨款给甲方 10W 项目款 已处理/未处理
    1 1 财务 99 已完成打款,汇入卡号xxxxxxxxx 已处理/未处理

    当然我只是写了个大概的东西,自己的业务需要结合实际来考虑。

      三张表:
      第一张: 流程权限表 主要作用创建一个审批流程,需要哪些管理层审核 比如:事件:请假 ---- 审核人:员工=>主管=》经理
      第二张: 用户关系表 比如:员工-》主管-》经理 财务=》财务主管=》经理
      第三张:审核流程步骤表 每过一个审核人就生成一条记录

          这个表的字段预计有  id  发起人  流程权限表id  审核人  审核时间 备注  状态
        • 3.6k

        审批流程的功能一般都不会自己实现,因为太复杂,一般都用成熟的第三方bpm来实现,国内比较大的比如泛微、致远等,但商业化的价格比较高,国外的开源免费的bpm比如activiti,flowable等,不用钱但和国内流程差别大,不容易使用。

        如果自己实现的话,也要参考bpm的模型来实现,需要有流程定义,有流程实例,有任务,候选人,办理人等,即使你想简单实现,也不太容易。

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

          简单设计一下表

          • 任务层级 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 的,然后更新去缓存的结构比对,就可以得到当前处于哪一级。

            撰写回答

            登录后参与交流、获取后续更新提醒