在上一章里,我们谈到了工作流的控制模式,控制模式强调的是对业务流程进行建模,业务流程的目标是实现一个商业目标或者管理目标,业务流程的执行往往由一系列的任务所构成,控制模式建模的实质在于合理调配这些任务,以期以最少的成本达到最大的收益。
本章将介绍工作流的资源模式,如果说控制模式更为宏观,强调的是业务流程里各个任务的合理调配的话,那么资源模式则深入细节,将要讨论单个具体任务的执行情况。提到任务的执行,那么谁能执行这些任务呢。答案很直接,是人。不管是在公司企业还是政府里,人都是最重要的资源,除去人之外,还有其他的非人力资源,例如机器、设备、计算机等。探讨这些资源如何执行业务流程中的具体任务,如何调配这些资源即构成了本章的内容,即资源模式。
本章介绍工作流的资源模式,共计43种。提到模式,很多人会想到四人帮,想到他们的设计模式,但是需要与编程里的设计模式区别的是:程序里的设计模式关注的是代码,通过应用设计模式做到代码的职责清晰、不重复、开发人员友好等等;而工作流里的模式关注的是业务价值,通过合理调配任务和资源为组织带来最大的业务价值,工作流模式是对实际业务的直接描述,与具体的工作流产品实现没有直接的关系(后面我们可以看到,很多模式当前的工作流产品很难实现),两者的出发点完全不同。
本章先会讨论与资源模式相关的一些基本概念,例如资源、工作项、组织机构建模等。接下来会对具体的43种资源模式进行讨论,讨论的模式按照描述、应用和实现展开,分别对应着模式的介绍、模式对实际业务的映射和工作流产品对该模式的实现支持。最后是小结。
一、基本概念
1、资源
既然是资源模式,那么什么是资源。在本章的前言里,我们已经提到人是业务流程执行里最为重要的资源,除去人之外,随着自动化水平的提高,还有其他的非人力资源,例如机器、设备、计算机等。资源指的是能够进行工作的实体,通俗一点,就是能够执行业务流程里任务的实体。对于需要盈利的公司而言,就是找到一种可以盈利的模式,然后找寻能够执行这些盈利工作的资源,通过资源的工作达到盈利的目的,通过合理调配这些资源达到利益最大化。
因为人是最为重要的资源,所以在后续对资源模式的讨论中,没有特殊说明,资源指的都是人力资源,大多数的模式也将以人来说明。
典型的,人是某个组织机构里的成员。组织机构对人员进行分组,执行相关的工作以达到共同的目标。例如,企业的目标是盈利,政府的目标是为人民提供更好的公共服务。组织机构对人员的分组具有多种形式,最常见的就是部门、角色和岗位(实际上与角色相比,岗位更多体现的是一种业务职能,而角色更多体现的是管理职能,与权限相关)。对于大的跨地域的组织而言,还有分支机构的划分,此外,还有临时组(典型的如以交付为核心的软件开发公司里的项目组)。在很多情况下,人可能具有多个角色、属于多个部门,这些,增加了管理的复杂性。
对工作流产品而言,要对资源模式进行支持,则必然涉及到对资源分组的支持,在大多情况下,资源分组即组织机构模型。只有支持目标客户的组织机构模型,才能在实施工作流产品时最大限度的契合客户业务。当然,如果产品是某个行业的标准,让客户模型向产品靠拢也是另外一种方式。
2、工作流产品里的组织机构建模
所有的工作流产品都有自己的组织机构模型,其是工作流产品里一个重要的模块。但是一套模型往往很难契合多种业务场景。在大多数的产品实现里,都会提供一套元模型,例如人(Person)和组(Group),然后建立多套与业务相关的模型向元模型适配,例如,角色、部门都是组的一种形式,它们只是拥有不同的业务语义而已。
在工作流产品实施时,很重要的一步就是进行组织机构建模,然后将建立完成的模型与工作流产品内置的模型进行适配,在适配的过程中,妥协是经常出现的。
3、工作项
一个业务流程由一系列相关的任务组成。在工作流产品里,使用图形化的节点代表这些任务,而实际的任务被映射为工作项(work item),任务的调用被映射为工作项的执行。一般情况下,一个任务对应着一个工作项,但是存在一个任务需要多人完成的情况,这个时候一个任务就会对应着多个工作项。工作项可以看作是工作流中最小的工作单元,其代表着一个单一资源对某一任务的执行。
既然在工作流系统里任务的执行被映射为工作项的执行,那么就一定存在着人与工作项这个计算机概念的交互,在工作流系统里,这一交互通过工作项管理器来进行管理。即我们通常所见的工作项列表(任务列表),我们通过这一列表拾取任务、处理任务以及管理任务的状态。
4、工作项的生命周期
工作项有其自己的生命周期。
图 5-1
如图5-1所示,当工作流系统执行某一任务节点时就会创建工作项,工作项可以是一个也可以是多个,正如上面已经提到的,工作项代表着一个单一资源对某一任务的执行即一个工作项只能由一个资源来执行,现在我们讨论的是一个工作项的生命周期。
工作项被系统创建完毕后即处于创建状态,接下来系统会选取资源来执行该工作项。有两种状态:一种是提供状态,一种是指派状态,这两者的区别在于一个是可选的一个是必须的。如果系统提供一个工作项给你执行,这意味着你符合执行该工作的条件,但你不必为该工作负责,即你可以选择执行该工作也可以选择拒绝,你只是该工作的合适候选者;而如果系统指派一个工作项给你执行,则意味着你必须为该工作负责,该工作必须由你来执行。因为一个工作项只能由一个资源来执行,所以如果是指派的话,那么只能指定一个资源;而提供,则可以提供给一个资源也可以提供给多个资源来候选。通常工作项管理器会提供两种列表来区分这两种状态,分别是待拾取列表和待办列表,一旦资源对待拾取列表里的工作项进行拾取,工作项即进入到资源的待办列表,状态成为指派状态。
工作项进入指派状态即意味着执行该工作的资源已确定,那么接下来就可以由资源来开始执行该工作,执行的过程中可以将工作暂时挂起中断处理,后续可以再恢复对该工作的执行。如果工作成功完成,则工作项成为完成状态;如果工作因为各种原因没有成功完成,则工作项置为失败状态。
全文地址
分享到:
相关推荐
**自动旋转与自动调整大小**(第5章) - **章节概要**:介绍如何让应用适应不同的设备屏幕尺寸和方向变化。 - **重点内容**: - 屏幕方向感知。 - Auto Layout布局系统。 - Autoresizing约束。 6. **多视图...
**第5章 函数** - **简述**:详述了Lua中的函数定义、调用方式以及局部变量的作用域。 - **知识点**: - 函数的定义和调用。 - 局部变量和全局变量的区别。 - 参数传递方式。 **第6章 再论函数** - **简述**:...
- **第五章:数据挖掘算法概览** 本章提供了对常见数据挖掘算法(如聚类分析、分类树、关联规则等)的全面介绍。通过比较不同算法的特点和适用场景,帮助读者选择最合适的工具解决具体问题。 - **第六章:模型与...
第5章 Oracle存储结构 139 5.1 了解表空间和数据文件 140 5.1.1 Oracle数据存储模型 140 5.1.2 段、区间、块和行 142 5.1.3 文件存储技术 144 5.2 创建和管理表空间 146 5.2.1 创建表空间 146 5.2.2 更改表...
- **第5章:模式匹配**: 深入介绍 Perl 强大的正则表达式功能,包括基本语法、特殊字符等。 - **第6章:子程序**: 解释 Perl 中如何定义和调用函数(子程序),以及相关的高级特性如闭包。 - **第7章:格式化**: 介绍 Perl ...
智能制造基本概念解读 前言 德国工业4.0、美国工业互联网和中国制造2025这三大国家战略虽在表述上不一样, 但本质上异曲同工,核心都是智能制造。2017年用友网络股份有限公司—制造事业部也正 式更名为"智能制造事业...
第5章 Oracle存储结构 139 5.1 了解表空间和数据文件 140 5.1.1 Oracle数据存储模型 140 5.1.2 段、区间、块和行 142 5.1.3 文件存储技术 144 5.2 创建和管理表空间 146 5.2.1 创建表空间 146 5.2.2 更改表...
- **第5章:隐藏实现过程**:探讨封装的重要性,以及如何通过封装来隐藏对象的具体实现细节。 - **第6章:类再生**:介绍继承的概念,讲解如何通过继承来重用现有类的功能。 - **第7章:多形性**:探讨多态性,这是...
5. **第5章:DWR中的JavaScript简介** - 介绍了在DWR中使用JavaScript的方法,包括简单的回调函数和调用元数据对象等。 #### 第1章:DWR入门 - **1.1 简介** - 简要介绍了DWR的概念和优势,以及为何选择DWR作为...
#### 第五章:Application UI Components - **Controls**: 控件的种类和使用方式。 - **Skins**: 皮肤(外观)的定义和定制方法。 - **Event Handling**: 事件处理机制。 - **Resource Files**: 资源文件的管理和...
第五章 Dialogic系列语音卡简介 85 5.1 低密度模拟语音卡系列 85 5.1.1 PROLINE/2V 2线多功能模拟语音卡 85 5.1.2 Dialogic/4和D/4PCI 半长型4线模拟语音卡 86 5.1.3 D/41H 4线模拟语音卡 87 5.1.4 D/41ESC和D/...
\ 第5章 布局管理 卢传富布局管理是GUI应用程序编程的一个重要方面。Qt提供了多种布局管理部件,包括Qt布局管理器、分裂器、栈部件、工作空间部件和多文档区部件等。本章一一介绍了这些部件,并举例说明了它们在图形...
第5章 程序结构(1) 209 5.1 理解函数 209 5.1.1 需要函数的原因 210 5.1.2 函数的结构 210 5.1.3 使用函数 213 5.2 给函数传递实参 216 5.2.1 按值传递机制 216 5.2.2 给函数传递指针实参 217 5.2.3 给函数...