工作流资源模式 - 折回模式9种
版权声明:工作流模式版权归 Workflow Patterns 组 织 ( http://www.workflowpatterns.com ) 所 有 。 经 Workflow Patterns授权,中文简体版由辛鹏和荣浩翻译。未经译者书面许可,不得将该中文简体版用于商业目的。
实际工作中,工作的执行状态不可能总是与预想相符,总会出现各种各样的情况,例如原本 分配给员工甲的活动由于甲要请假不得不重新分配,由于需要处理新的紧急活动,员工乙当前的 工作需要挂起一段时间等等。折回模式对应着这些情况,折回代表着工作项状态的反复和回退, 如图B-40所示。
图B-40 工作项生命周期里的折回模式
折回模式共有9种,如图B-41所示。
图B-41 折回模式
- 委派:资源将先前指派给他的工作项委派给他人执行。
- 系统重新分配:系统将没有完成的工作项重新提供或指派给其他资源执行。
- 退回指派:资源撤销指派给他的工作项,工作项重新指派给其他资源。
- 有状态工作移交:资源将其已经开始执行的工作项移交给他人执行,工作项保持状态。
- 无状态工作移交:资源将其已经开始执行的工作项移交给他人重新开始执行。
- 挂起/恢复执行:资源临时挂起当前执行的工作项,并在某一个时候重新恢复执行该工作项。
- 跳过:资源选择跳过指派给他的工作项,不执行该工作项同时将工作项置为完成。
- 重做:资源重新执行先前已经完成的工作项。
- 提前执行:资源在流程实例实际触发该工作前提前执行该工作。
委派(WRP_27: Delegation)
描述
资源能够将先前指派给他的工作项指派给另外的资源执行,如图B-42所示。
图B-42 委派
应用
委派在工作中非常常见,例如员工请假/出差/繁忙,需要将他的工作委派给其他同事执行、 领导将相关工作委派给下属执行等。
实际应用中,委派按照粒度分为了两种:一种是工作项的委派,这是一种细粒度的委派,指 单一活动的委派,与某一特定的流程实例关联;另一种是业务的委派,这是一种粗粒度的委派, 例如,资源将其负责的某类业务的工作全部委派给他人,这意味着属于这类业务的所有工作都将 由委派人执行。业务的委派与权限紧密关联。
注意:委派意味着原先指派的资源还必须对该工作负责。例如,员工甲将某项工作委派给员工 乙执行,尽管员工乙实际执行了该工作,但该工作仍然必须由员工甲负责,所以在实现 中,员工甲必须能够保持对委派工作项的追踪和控制。
系统重新分配(WRP_28: Escalation)
描述
系统能够重新分配已经分配的工作项,以加快工作项的执行。
如图B-43所示,工作项原先提供或指派给了一个或多个资源执行,现在由于各种原因,需要优化该工作项的执行,所以将该工作项收回重新分配,提供或指派给其他的资源。
图B-43 系统重新分配
应用
系统驱动工作分配的优化。很多时候,计划跟不上变化,工作也是这样,分配工作前有许多 的考虑因素,如个人能力、工作经验、技能要求等,但在实际工作中会发现原先的资源分配并不 合理,或者有些人承担了太多的职责,或者有人能力超出其目前担承的职责等等,在这种时候就 需要对工作进行灵活的重新分配以到达最高的执行效率。
对流程的优化始终是一个对人的命题,而不是对机器和工具的命题,工具所能做到的只是尽 可能多的提供可供参考的数据模型,例如各种报表、数据分析等,最后做出决策的还是人。所以 该模式的实现也以提供给流程管理员重新分配工作项的能力为主,同时提供工作项超时的提示 为辅。
退回指派(WRP_29: Deallocation)
描述
资源能够撤销指派给他的工作项,工作项可以重新分配给其他资源,如图B-44所示。
图B-44 退回指派
应用
资源驱动工作分配的优化。
有状态工作移交(WRP_30: Stateful Reallocation)
描述
资源能够将正在执行的工作项移交给其他资源执行,该工作的状态将得到保存,如图B-45 所示。
图B-45 工作移交
应用
该模式与委派模式很相似,差别就在于委派模式是将未开始执行的工作进行重新指派执行, 而该模式则是将已开始执行的工作进行重新指派执行。委派模式中的委派者仍需要为委派出去的 工作负责,而移交则意味着责任的移交。
无状态工作移交(WRP_31: Stateless Reallocation) 描述
资源能够将正在执行的工作项移交给其他资源执行,该工作的状态不会得到保存。
应用
工作的无状态移交意味着该工作的重新执行,原有工作对重启的工作而言没有价值。
挂起/恢复执行(WRP_32: Suspension/Resumption)
描述
资源能够挂起当前执行的工作项,并在某一个时候重新恢复执行该工作项,如图B-46所示。
图B-46 挂起/恢复执行工作
应用
资源对分配给其的工作进行优化执行,能够根据自己和当前流程实例的实际情况合理的安排工作执行,挂起正在执行的工作,执行当前最重要或效率最高的工作,然后再返回执行该工作。
跳过(WRP_33: Skip)
描述
资源能够选择跳过指派给他的工作项的执行,不执行该工作项,并将该工作项标识为完成, 如图B-47所示。
图B-47 跳过工作的执行
应用
因为变化,当前工作不再具有价值,选择跳过继续执行后续工作。
重做(WRP_34: Redo)
描述
资源能够对先前完成的工作项重新处理,同时,该工作的后续工作项(后续活动所对应的工 作项)也将被重新处理,如图B-48所示。
图B-48 重新执行工作
应用
对已完成的工作进行重新处理并不少见,但该模式最为重要的部分还是在于要求所有后续工 作的重新处理,所以该模式应用在极其重要的关键活动里。例如,非常重要的决策工作,因为后 续的活动严重依赖于该工作所作出的决策,所以一旦决策发生变化,那么相应的后续工作必须都 要做出变化。这也是业务敏捷性的一种反映。
注意,该模式是一种代价高昂的应用,因为这意味着该流程实例中的所有后续工作都需要重 7 新处理,所以如何在业务处理中尽早发现可能的环境变化并及时作出决策的调整并避免成本高昂 的返工才是最重要的一点。
提前执行(WRP_35: Pre-Do)
描述
在工作实际提供或指派给资源执行之前,资源能够提前执行该工作。示例见图B-49。
该模式需要一个前提条件:活动不能依赖于前续活动的处理输出。该模式与推模式里的提前 分配模式非常相似,所不同的是:提前分配强调一种通知机制,强调预先准备;而提前执行则已 经可以开始实际的执行工作。
图B-49 提前执行工作
应用
和提前分配模式不同,该模式提供了一种流程活动执行的灵活机制,在预先定义的流程里, 活动的执行是具有一定顺序的,在大多数情况下,这种顺序是合理的,但是在某些具体的流程实 例里,某些串行执行的活动可以并行的执行以达到最好的执行效率和负载均衡,在这种情况下, 就应该应用该模式并行执行部分活动。
注意:该模式仅仅引入了一种实际执行活动的灵活性,是对流程定义固化的补偿,如果在实际 流程实例中频繁应用到该模式,则意味着流程定义本身需要作出调整。