本书全文连载地址
四、拉模式
与推模式相比,拉模式的区别在于动作的主语发生了变化:推模式的主语是系统,由系统将工作项推送至资源的工作项列表,那么,接下来的主动权交由单个资源本身,由其拉动工作项的执行。
图 5-28
如图5-17所示,拉模式对应着工作项的五种状态变迁:
由提供给一个资源拾取到指派给一个资源负责执行,这意味着该资源拾取了该工作项,其将负责该工作项的执行,并将在未来的某个时候执行该工作项;
由提供给多个资源拾取到指派给一个资源负责执行,这意味着多个资源中的一个资源拾取了该工作项,其将负责该工作项的执行,并将在未来的某个时候执行该工作项,余下的资源将不再有机会执行该工作项;
由提供给一个资源拾取到开始执行,这意味着该资源拾取了该工作项,其将负责该工作项的执行,并立即开始执行该工作项;
由指派给一个资源负责执行到开始执行,这意味着该资源开始执行该工作项;
由提供给多个资源拾取到开始执行,这意味着多个资源中的一个资源拾取了该工作项,其将负责该工作项的执行,并立即开始执行该工作项,余下的资源将不再有机会执行该工作项;
拉模式共有6种,分为两组:前三种模式关注工作项的状态变迁;后三种模式关注工作项显示在资源工作项列表里的顺序以及选择执行的方式。
1、资源驱动指派(WRP_21: Resource-Initiated Allocation)
描述
资源能够将工作项指派给自己,负责该工作项的执行,但是不必马上开始执行该工作项。
图 5-29
如图5-29所示,员工甲拾取了可拾取列表里的任务A工作项,该工作项由可拾取列表移至待办列表。可拾取列表通常是一个共享的列表,而待办列表则是某一资源的专属列表。资源拾取工作项,意味着工作项从共享状态进入到专属状态。
该模式实际对应着工作项的两种状态变迁:由提供给一个资源拾取到指派给一个资源负责执行;由提供给多个资源拾取到指派给一个资源负责执行。
应用
该模式符合大多数的工作场景,我选择负责执行该工作,但我并不马上开始,我可能还有其他的工作需要处理,等到处理完毕后才处理该工作。
实现
分配给角色、部门等资源组的工作项通常都以共享的形式分配给所有的组内成员,一旦有人拾取即进入他的专属待办列表,其他人不再可见。
2、资源驱动执行-指派工作项(WRP_22: Resource-Initiated
Execution – Allocated Work Item)
描述
资源能够开始执行指派给其的工作项。
图 5-30
如图5-30所示,员工甲开始执行任务A工作项,该工作项由待办列表移至办理列表。
该模式对应着工作项的一种状态变迁:由指派给一个资源负责执行到开始执行。
实现
最基本的工作项状态变迁,所有的工作流系统都提供支持。
3、资源驱动执行-提供工作项(WRP_23:
Resource-Initiated Execution – Offered Work Item)
描述
资源能够选取提供给其的一个工作项,并马上开始执行该工作项。
图 5-31
如图5-29所示,员工甲拾取了可拾取列表里的任务A工作项并立刻开始执行,该工作项由可拾取列表移至办理列表。
该模式对应着工作项的两种状态变迁:由提供给一个资源拾取到开始执行;由提供给多个资源拾取到开始执行。
应用
与描述略有不同,实际应用该模式是强制要求资源一旦拾取了共享的工作项就必须马上开始执行,基于两点的考虑:一是工作项能够尽快执行;二是工作项能够指派给当前最为空闲的资源,不会出现该工作项被一繁忙资源卡住,造成等待和阻塞。
在敏捷开发里,我们使用故事卡管理项目的开
发,故事卡足够小(如果大的故事卡则分解为多个任务),每天早上由开发人员挑选移动该卡,一旦该卡由可开发状态移动至开发状态,则必须进行该卡的开发工
作,这样项目的真实进展随时得到显示,同时不允许一个开发人员同时进行多张卡的开发。
实现
通过这三个模式我们可以发现,工作流系统实现这些模式只是在不同的工作项列表里移动这些工作项,以反映工作项不同的状态和变迁策略,这对于IT系
统而言这不是很困难,困难在于如何能保证人确实是这么做的,例如说一旦拾取就必须开始执行,工作项的跳转很简单,但无法保证的是拾取该工作项的人一定会按
照要求马上开始执行该工作项,也就是说业务流程项目的实施不仅仅包含技术实施,也包含了一套与之相应的管理实施。那种期望上一套流程系统就能马上提高生产
效率和管理水平显然是不现实的,其中一定包含管理方式的变化和组织机构的变化。
敏捷开发中,早上的站立会议是重要的部分,每个团队成员都会汇报昨天的进展和今天将要进行的工作,这样就保证了工作执行的有效性。
4、系统决定工作队列内容(WRP_24:
System-Determined Work Queue Content)
描述
工作流系统能够排定资源工作项列表里的工作项顺序和内容。
图 5-32
如图5-32所示,员工甲共享的可拾取列表默认按时间排序工作项。
应用
实际应用中工作项的排序条件非常多,其目的就是将最重要或优先级最高的工作项排在最前面,引起资源的注意或优先执行。
实现
实际实现时有多种排序策略,通常会有时间排序,例如先进先出、先进后出等,同时也有很多其他的排序元素,例如工作项的预定完成时间、执行该工作项的成本预算、工作项的优先级或重要程度等,系统查询工作项时根据这些影响因素进行默认排序。
5、资源决定工作队列内容(WRP_24:
Resource-Determined Work Queue Content)
描述
资源能够排定其工作项列表里的工作项顺序和内容。
应用
为资源提供一定程度上排定工作项的灵活性。每个人关注的视角和侧重点不同,就会产生不同的排序和内容过滤。
例如,作为老板,我可能更为关注各个工作的成本预算,我需要按成本排定各项工作;而作为秘书,我更为关注老板下发各项工作的重要程度,我需要按老板指定的重要程度排定工作。
实现
提供工作项列表的客户端排序,一般情况下列表显示系统给定的顺序,用户可以在客户端进行二次排序,典型的Web系统中,工作流系统提供JavaScript的表格控件,利用Ajax异步请求重新排序或进行工作项的过滤。
6、自主选择(WRP_26:
Selection Autonomy)
描述
资源能够根据自己个人的情况选择执行工作项。
图 5-32
如图5-32所示,员工甲能够根据自己的情况选择执行任务A、B、C中任意一个工作项。
应用
尽管老板要求先实现功能最后再重构,但是我认为当前代码如果不进行一定重构会严重影响后续的开发效率,所以我决定先进行部分重构。
实现
几乎所有工作流系统都不会对用户实际选择执行工作项的方式进行限制,也没有办法限制。但是系统一般会把重要的工作项加以高亮显示,让用户优先选择。
http://www.blogjava.net/ronghao 荣浩原创,转载请注明出处:)
posted on 2009-11-01 20:48
ronghao 阅读(1428)
评论(0) 编辑 收藏 所属分类:
Head First Process-深入浅出流程