• 驰骋工作流程引擎多人待办处理模式的升级


    多人待办工作处理模式,也是待办处理模式。是当接受的节点是多个人的时候,如何处理待办?

    wps4B7F.tmp

    根据不用的场景,ccbpm把多人在普通节点下的处理模式分为如下几种。

    抢办模式:

    A发送到B ,B节点上有n个人可以处理。这n个人都可以看到待办,当其中一个人处理后,其他人的待办就消失了。这样的工作模式属于抢办,这n个人可以同时打开,当一个人发送后,其他人都不能在发送了。通俗的说,也就是谁抢到了这件工作,就是谁处理的。抢办模式是一个默认的处理模式。

    协作模式:

    A发送到B ,B节点上有n个人可以处理。这个n个人都可以去处理,都可以去发送,有最后一个处理人发送到下一个节点上去,这n个人的处理不分顺序。这样的模式我们叫做协作模式。

    协作模式通常用在具有审核组件的表单中,每个人都可以填写自己的意见,发表自己的看法,在审核组件里审核每个人在一个节点上只能写入一条数据,也就是说只能表达一次意见。

    也经常用在传阅的情况下,必须这些人都读取了,知道了才能向下运动。它与抄送不同的地方是,抄送可以不看,就可以向下运行,但是他必须处理才能向下运行。

    通常的协作模式,就是多人都要点击一下发送功能按钮,来确认自己处理了,确认自己同意了或者认可了。

    队列模式:

    A发送到B ,B节点上有n个人可以处理。这个n个人按照设置的先后顺序去处理,在同一个时间点必须有一个人待办,其他人看不到。

    应用场景: 一个公文发送给一个部门,该部门下n个人可以接受(注意这是一个节点),按照国内的行政制度,这n个人会从小到达排一个队列,有最小的级别的工作人员审批,然后依次类推,走到最后由最后一个人发送到下一个节点去。这n个人都是该节点的处理人,这n个人的审核步骤是由他们的顺序确定的,所以在设置该节点的接受人时,要按照顺序执行。

    通常这样的模式也与审核组件一起使用,每个人表达意见后,就发送到下一个节点,当然这样的模式也

    共享模式:

    A发送到B ,B节点上有n个人可以处理。ccbpm有一个任务池,这写人都需要从这个任务池里获取。

      关于对ccbpm任务池的描述:

      1,在流程属性与全局配置设置了启动任务池的状态下,如果一个节点遇到多个人处理,这个任务就放在了任务池里,只有参与处理的人人员才能看得到。

      2,工作人员在处理该工作之前需要申请,放到自己的代办里,一人申请之后,其他人就不能申请了,多个人同时申请第一个人申请的先得到。

      3,申请之后,任务池里就不出现在条工作而是进入了被申请人的待办里。

      4,如果申请人处理不了这件工作,他可以把该工作放入任务池中,放入任务池的工作可以被其他的N个人可以看到。

      5,不管取回与放入,都需要写入流程日志。

    6,任务池的设计:  

      1,在流程引擎控制表 WF_GenerWorkFlow 中增加了如下字段:

    TaskSta, 枚举类型, 0=不启用,1=共享,2=被申请。

    TodoEmpsNum, Int类型,处理人员数量,当前节点工作有多少人待办,如果此值大于等于2,讨论共享任务才有意义。

             TodoEmps varchar(500) 待办人员,格式为 处理人员编号,处理人员名称; 比如:guobaogeng,郭宝庚;fuhui,福惠;

      2,在流程引擎控制表的人员列表中 WF_GenerWorkerList 中对于IsEnable字段,进行扩充了,如果等于 -1=任务池禁用,0=分配工作被屏蔽,1=正常。 

      3,增加了一个功能界面 /WF/TaskPoolSmaller.aspx 次功能界面是有在任务池启用才能被使用。

    4,在流程属性里增加一个字段 IsEnableTaskPool 是否启用任务池? 此字段用来控制该流程是否启用任务池。

    协作组长模式:

    这个模式与协作模式区别在于,如果当前的人员中有一个是组长(领导),他在执行发送的时候就标记这个流程结束。

    这种模式有如下3中情况:

    第一种:接受人员列表里没有领导/组长,这种模式与协作模式是一样的,就是所有的成员都表态(举手)才能向下发送。

    第二种:只有一个领导/组长的情况,领导/组长向下发送的时候,标识该节点完成。比如: 当前节点是一个采样节点,采样组有1个组长n个组员,只有组长向下发送的时候才标记次流程完成。

    第三种:有n个领导/组长的情况,n>=1 任何一个领导/组长向下发送的时候标记该流程完成。比如:当前节点的采样任务交给了两个采样组负责,有两个组长n个成员,任何一个组长向下发送,标记流程结束。

    怎么标记该其中一个成员是领导?当前登录人员是所在的部门的领导,他就是组长或者领导,我们用sql表达如下。SELECT COUNT(No) AS num FROM Port_Dept WHERE No='"+WebUser.FK_Dept+"' AND Leader='"+WebUser.No+"'

      任务池的SDK接口:

      1,获得共享任务: DB_TaskPool

      2,获得共享任务中我的待办:DB_TaskPoolOfMy

      3,从共享任务中取回:Node_TaskPoolTakebackOne

      4,把取回的共享任务放入任务池: Node_TaskPoolPutOne

  • 相关阅读:
    ADB 多设备中指定设备的启动
    vuex 绑定表单,多个输入框的解决办法
    vue 自动触发点击事件
    js 打印dom的所有属性
    邮件分享
    table表格 td设置固定宽度
    Echarts--Y坐标标题显示不全
    ExtJS5.0 菜鸟的第一天
    字体设置
    短信验证码+倒计时
  • 原文地址:https://www.cnblogs.com/fdsfa/p/6288409.html
Copyright © 2020-2023  润新知