工作流资源模式 - 推模式9种
版权声明:工作流模式版权归 Workflow Patterns 组 织 ( http://www.workflowpatterns.com ) 所 有 。 经 Workflow Patterns授权,中文简体版由辛鹏和荣浩翻译。未经译者书面许可,不得将该中文简体版用于商业目的。
在创建阶段,工作流系统根据不同的创建模式为活动产生了工作项,并为工作项限定了资源 范围。接下来,系统将工作项与已限定的资源进行匹配,推送给相关的资源执行,资源本身不做 选择,我们把这种方式称为“推式驱动”,系统将工作项推送给资源。
在前面我们已经了解到,工作流系统通过工作项管理器即不同类型的工作项列表与用户进行 交互,所以这里的推送也可以理解为系统将生成的工作项推送至相应资源的工作项列表里。
如图B-22所示,推模式对应着工作项生命周期里三种状态的变迁,即提供给一个资源拾取、 提供给多个资源拾取(这些资源中只会有一个会实际执行,属于竞争关系)、指派给一个资源负 责执行。
图B-22 工作项生命周期里的推模式
推模式共有9种,分为3组,如图B-23所示。
图B-23 推模式
第一组包括提供给单个资源、提供给多个资源和 指派给单个资源,关注工作项推送的最终分配状态;第二组包括随机指派、循环指派和最短队列 指派,关注当工作项分配给角色、部门等包含多个资源的资源组时,如何从中确定最终的一个资 源并进行指派;第三组包括提前分配、即时分配和推后分配,关注将工作项推送给用户的时机。
- 提供给单个资源:在非绑定的基础上将工作项推送给单个资源。
- 提供给多个资源:在非绑定的基础上将工作项推送给多个资源。
- 指派给单个资源:在绑定的基础上将工作项推送给单个资源。
- 随机指派:当存在多个资源可供选择时,从中随机选择一个资源进行工作项的指派。
- 循环指派:当存在多个资源可供选择时,循环选择其中一个资源进行工作项的指派。
- 最短队列指派:当存在多个资源可供选择时,选择其中一个具有最少待办工作即最短工 作队列的资源进行工作项的指派。
- 提前分配:在工作项实际可以执行之前即将该工作项通知或潜在的分配给资源,提前预热。
- 即时分配:在工作项实际可以执行时将该工作项分配给资源。
- 推后分配:在工作项实际可以执行后的某个时间才将该工作项分配给资源,减少资源负载,提高流程实例吞吐量。
提供给单个资源(WRP_12: Distribution by Offer - Single Resource)
描述
能够在非绑定的基础上将工作项推送给单个资源。
如图B-24所示,活动A工作项被系统推送至员工甲的可拾取列表。这意味着员工甲不必为该 工作负责,他可以选择执行该工作也可选择忽略或拒绝。如果他选择拒绝或忽略且工作项超时, 那么会导致系统对该工作项的重新分配。如果他选择执行该工作,那么他首先需要拾取该工作项, 这会使该工作项进入他的待办列表,意味着其必须对该工作负责。
图B-24 提供给单个资源
应用
资源能够将工作与自己进行匹配,选择执行工作。
提供给多个资源(WRP_13: Distribution by Offer – Multiple Resource)
描述
能够在非绑定的基础上将工作项推送给多个资源。
如图B-25所示,活动A所生成的工作项被推送给多个员工的可拾取列表。这些员工不必为该 工作负责,他们可以选择执行该工作也可选择忽略或拒绝。如果他们都选择拒绝或忽略且工作项 超时,那么会导致系统对该工作项的重新分配。如果有一名员工选择执行该工作,那么该工作项 进入他的待办列表,其他员工将不再具有拾取该工作项的机会。
应用
资源能够将工作与自己进行匹配,选择执行工作。多个资源选择,竞争执行。
图B-25 提供给多个资源
指派给单个资源(WRP_14: Distribution by Allocation – Single Resource)
描述
能够在绑定的基础上将工作项推送给单个资源。
如图B-26所示,活动A工作项被系统推送至员工甲的待办列表。这意味着员工甲必须为该工 作负责。
图B-26 指派给单个资源
应用
直接指定工作责任人。
随机指派(WRP_15: Random Allocation)
描述
当存在多个资源可供选择时,能够从中随机选择一个资源进行工作项的指派。
如图B-27所示,活动A所生成的工作项在创建阶段分配给了开发人员这一角色,在推送阶段, 系统会随机选取一名开发人员负责该工作项的执行。
图B-27 随机指派
应用
提供了一种指派资源的非确定性机制。
循环指派(WRP_16: Round Robin Allocation)
当存在多个资源可供选择时,能够循环选择其中一个资源进行工作项的指派。示例见图B-28。
图B-28 循环指派
应用
不患贫而患不均,平等/平均的分配工作。
最短队列指派(WRP_17: Shortest Queue)
描述
当存在多个资源可供选择时,能够选择其中一个具有最少待办工作即最短工作队列的资源进 行工作项的指派。示例见图B-29。
图B-29 最短队列指派
应用
该模式的目的在于能够最快开始工作的执行,找出相比而言最为空闲的资源迅速开始工作。 但是实际应用中,仅仅依靠工作的数量来判断资源是否空闲是不可靠的,因为不同工作甚至同一 种工作在不同时间都存在着难易之分。
提前分配(WRP_18: Early Distribution)
描述
能够在工作项实际可以执行之前即将该工作项通知或潜在的分配给资源。示例见图B-30。
图B-30 提前分配
应用
该模式强调的是预先计划,即管理的计划性。从某种意义上说,稍微复杂一点的工作都应该 做到提前通知、提前准备,做到提前预热。
即时分配(WRP_19: Distribution on Enablement)
描述
能够在工作项实际可以执行时将该工作项分配给资源。
应用
机械性的工作(生产流水线),重复单一高度标准化的工作,无计划性的工作,如各种突发 情况的处理。
推后分配(WRP_20: Late Distribution)
描述
能够在工作项实际可以执行后的某个时间才将该工作项分配给资源。示例见图B-31。
图B-31 推后分配
应用
在实际触发工作项的执行之前,考虑其他一些因素:当前组织是否有足够的资源,当前组织 的负载等,保证组织和资源对工作的负载处于一种良好的状态,避免出现图B-32所示的情况。同 时,加快对正处理流程实例的执行速度。
图B-32 工作负荷超出组织能力