在上一章里,我们谈到了工作流的控制模式,控制模式强调的是对业务流程进行建模,业务流程的目标是实现一个商业目标或者管理目标,业务流程的执行往往由一系列的任务所构成,控制模式建模的实质在于合理调配这些任务,以期以最少的成本达到最大的收益。
本章将介绍工作流的资源模式,如果说控制模式更为宏观,强调的是业务流程里各个任务的合理调配的话,那么资源模式则深入细节,将要讨论单个具体任务的执行情况。提到任务的执行,那么谁能执行这些任务呢。答案很直接,是人。不管是在公司企业还是政府里,人都是最重要的资源,除去人之外,还有其他的非人力资源,例如机器、设备、计算机等。探讨这些资源如何执行业务流程中的具体任务,如何调配这些资源即构成了本章的内容,即资源模式。
本章介绍工作流的资源模式,共计43种。提到模式,很多人会想到四人帮,想到他们的设计模式,但是需要与编程里的设计模式区别的是:程序里的设计模式关注的是代码,通过应用设计模式做到代码的职责清晰、不重复、开发人员友好等等;而工作流里的模式关注的是业务价值,通过合理调配任务和资源为组织带来最大的业务价值,工作流模式是对实际业务的直接描述,与具体的工作流产品实现没有直接的关系(后面我们可以看到,很多模式当前的工作流产品很难实现),两者的出发点完全不同。
本章先会讨论与资源模式相关的一些基本概念,例如资源、工作项、组织机构建模等。接下来会对具体的43种资源模式进行讨论,讨论的模式按照描述、应用和实现展开,分别对应着模式的介绍、模式对实际业务的映射和工作流产品对该模式的实现支持。最后是小结。
一、基本概念
1、资源
既然是资源模式,那么什么是资源。在本章的前言里,我们已经提到人是业务流程执行里最为重要的资源,除去人之外,随着自动化水平的提高,还有其他的非人力资源,例如机器、设备、计算机等。资源指的是能够进行工作的实体,通俗一点,就是能够执行业务流程里任务的实体。对于需要盈利的公司而言,就是找到一种可以盈利的模式,然后找寻能够执行这些盈利工作的资源,通过资源的工作达到盈利的目的,通过合理调配这些资源达到利益最大化。
因为人是最为重要的资源,所以在后续对资源模式的讨论中,没有特殊说明,资源指的都是人力资源,大多数的模式也将以人来说明。
典型的,人是某个组织机构里的成员。组织机构对人员进行分组,执行相关的工作以达到共同的目标。例如,企业的目标是盈利,政府的目标是为人民提供更好的公共服务。组织机构对人员的分组具有多种形式,最常见的就是部门、角色和岗位(实际上与角色相比,岗位更多体现的是一种业务职能,而角色更多体现的是管理职能,与权限相关)。对于大的跨地域的组织而言,还有分支机构的划分,此外,还有临时组(典型的如以交付为核心的软件开发公司里的项目组)。在很多情况下,人可能具有多个角色、属于多个部门,这些,增加了管理的复杂性。
对工作流产品而言,要对资源模式进行支持,则必然涉及到对资源分组的支持,在大多情况下,资源分组即组织机构模型。只有支持目标客户的组织机构模型,才能在实施工作流产品时最大限度的契合客户业务。当然,如果产品是某个行业的标准,让客户模型向产品靠拢也是另外一种方式。
2、工作流产品里的组织机构建模
所有的工作流产品都有自己的组织机构模型,其是工作流产品里一个重要的模块。但是一套模型往往很难契合多种业务场景。在大多数的产品实现里,都会提供一套元模型,例如人(Person)和组(Group),然后建立多套与业务相关的模型向元模型适配,例如,角色、部门都是组的一种形式,它们只是拥有不同的业务语义而已。
在工作流产品实施时,很重要的一步就是进行组织机构建模,然后将建立完成的模型与工作流产品内置的模型进行适配,在适配的过程中,妥协是经常出现的。
3、工作项
一个业务流程由一系列相关的任务组成。在工作流产品里,使用图形化的节点代表这些任务,而实际的任务被映射为工作项(work item),任务的调用被映射为工作项的执行。一般情况下,一个任务对应着一个工作项,但是存在一个任务需要多人完成的情况,这个时候一个任务就会对应着多个工作项。工作项可以看作是工作流中最小的工作单元,其代表着一个单一资源对某一任务的执行。
既然在工作流系统里任务的执行被映射为工作项的执行,那么就一定存在着人与工作项这个计算机概念的交互,在工作流系统里,这一交互通过工作项管理器来进行管理。即我们通常所见的工作项列表(任务列表),我们通过这一列表拾取任务、处理任务以及管理任务的状态。
4、工作项的生命周期
工作项有其自己的生命周期。
图 5-1
如图5-1所示,当工作流系统执行某一任务节点时就会创建工作项,工作项可以是一个也可以是多个,正如上面已经提到的,工作项代表着一个单一资源对某一任务的执行即一个工作项只能由一个资源来执行,现在我们讨论的是一个工作项的生命周期。
工作项被系统创建完毕后即处于创建状态,接下来系统会选取资源来执行该工作项。有两种状态:一种是提供状态,一种是指派状态,这两者的区别在于一个是可选的一个是必须的。如果系统提供一个工作项给你执行,这意味着你符合执行该工作的条件,但你不必为该工作负责,即你可以选择执行该工作也可以选择拒绝,你只是该工作的合适候选者;而如果系统指派一个工作项给你执行,则意味着你必须为该工作负责,该工作必须由你来执行。因为一个工作项只能由一个资源来执行,所以如果是指派的话,那么只能指定一个资源;而提供,则可以提供给一个资源也可以提供给多个资源来候选。通常工作项管理器会提供两种列表来区分这两种状态,分别是待拾取列表和待办列表,一旦资源对待拾取列表里的工作项进行拾取,工作项即进入到资源的待办列表,状态成为指派状态。
工作项进入指派状态即意味着执行该工作的资源已确定,那么接下来就可以由资源来开始执行该工作,执行的过程中可以将工作暂时挂起中断处理,后续可以再恢复对该工作的执行。如果工作成功完成,则工作项成为完成状态;如果工作因为各种原因没有成功完成,则工作项置为失败状态。
http://www.blogjava.net/ronghao 荣浩原创,转载请注明出处:)
posted on 2009-10-18 09:45
ronghao 阅读(1582)
评论(1) 编辑 收藏 所属分类:
Head First Process-深入浅出流程