一:名词解释
1. 什么是工作流?以下的定义来自网络
1.1.【源于百度百科】工作流(Work Flow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。我们可以将整个业务过程看作是一条河,其中流过的就是工作流。
工作流属于计算机支持的协同工作(Computer Supported Cooperative Work,CSCW)的一部分。后者是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。
许多公司采用纸张表单,手工传递的方式,一级一级审批签字,工作效率非常低下,对于统计报表功能则不能实现。而采用工作流软件,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下跑,下一级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,大大提高了效率,实现了知识管理,提升了公司的核心竞争力。
1.2. 工作流是针对工作中具有固定程序的常规活动而提出的一个概念。通过将工作活动分解成定义良好的任务、角色、规则和过程来进行执行和监控,达到提高生产组织水平和工作效率的目的。
1.3. 【源自工作流管理联盟】工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则、文档、信息或任务能够在不同的执行者之间进行传递与执行。”
2. 工作流原理:是针对工作中具有固定程序的常规活动而提出的一个概念,通过将工作活动分解定义良好的任务、角色、规则和过程来进行执行和监控,达到提高生产组织水平和工作效率的目的,工作流技术为企业更好地实现经营目标提供了先进的手段
二:工作流模型
1.作为工作流方法应用对象的问题通常表现出下列三个特点:
1.1.所提供的关键业务价值是“协作”,例如,组织多份稿件以准备报价书或者推动文档审阅者。
1.2.有关的每个业务流程实例都是“长期的”,经常以天,星期或月而不是分钟为度量单位。
1.3.业务流程中具有“人力”参与者,通常人力的贡献占工作成果的大部分。
2. 工作流模型带来的三个主要优点
2.1.洞察力:可以使用一组相关的工作流模型来获取对经过组织的工作流的“洞察力”。
2.2.监视:对于“监视”,当试图了解成本和工作量时,了解哪些人为哪个业务流程工作是非常有用的。
2.3.优化:对于“优化”,拥有正在实施的工作的模型,并且能够使用该模型来解释行为,将两者结合起来就可以推导出如何优化业务流程。
3. 为什么工作流模型没有得到更广泛的使用呢?
最有可能的原因是使用它们的成本过高。这些成本包括:
“产品”成本,即购买工作流产品的直接成本;
“集成”成本,其中,建模成工作流的过程需要集成为较大业务系统的一部分;
“标准化”成本,其中,大型组织很难在单个工作流技术基础上进行标准化。
工作流产品的变化还带来了技能和模型可移植性的问题。
4.1.工作流模型描述“工作单元”的组织。例如,假设文档审阅流程指定由Joe 撰写该文档,然后由Fred 进行审阅。这里,第一个工作单元是撰写文档,第二个工作单元是审阅文档, 这里,工作项目是由审阅流程组织的文档审阅。有三个应该重点强调的有趣的特点,即:多个交互点、人力和自动化活动以及需要处理动态更改。
4.2.工作流协定
工作流具有多个交互点,即协定。首先,存在与审阅者之间的协定。此协定涉及请求审阅者审阅文档、接受裁定意见以及任何审阅批注;如果审阅被取消,或者已有足够的审阅者投票通过,还要通知审阅者不再需要输入意见。协定还可能允许审阅者委托审阅。这时与最终的审批者之间就存在另一份协定,它是审阅者协定的特殊化形式。第三,存在一个与审阅的所有者之间的协定,该协定允许所有者取消审阅以及得到审阅的结果。最后,存在一个与审阅流程的发起人之间的协定,发起人对审阅进行实例化并提供所需的参数。
5. 工作流模型的图表是根据工作流域中有意义的元素构建的。这种模型的语义丰富性可以用多种方式开发。
5.1.可视化。模型的可视化表示形式(通常是图形形式)对开发人员很有用(在开发和维护过程中),并且对于希望了解为什么他们被分配了给定任务的工作流用户,或者希望了解行为失常的应用程序应该执行哪些操作的IT操作员也有用。
5.2.洞察力。工作流模型适合于为各种目的进行编程访问。例如,进行静态分析,以确定一组协作工作流内的依存关系和工作流,或者使用模型来驱动模拟,以预测过程的新版本将生成的工作量。
5.3.可表达性。将工作流模型专用于工作流领域,意味着可以更加快速而简洁地表达特征问题。这是专门用于支持特征问题的域特定语言(DSL) 。请考虑一个文档审阅流程,其中,五个审阅中有三个投赞成票意味着该文档是优秀的,任何未完成的审阅都可以取消。对此过程进行编码很困难,但工作流模型可以提供现成的构造来解决此类问题。
6.更多语义开发
6.1.执行。模型的专门化使得添加对常见问题的运行库支持成为可能。长时间持续状态是一个很好的示例。对于在此论述的应用程序,文档审阅流程、问题
6.2.监视。模型的存在使得产生具有有意义语义的事件流成为可能,并且无需任何额外的开发工作。
6.3.合成。如果将应用程序分解为工作单元,则这些工作单元(连同它们的被充分理解的界面一起)就可以被其他工作流重用。工作流本身也定义了可以被其他工作流使用的工作单元。
6.4.自定义。假定ISV 发行了一个工作流,该工作流先是由VAR 自定义,然后再由客户自定义。在ISV 发行新的基础版本时如何重新应用这些自定义是一个艰巨的维护问题。使用共享的、得到充分理解的工作流模型使随后的三向合并变得更易于处理。自定义和合成一起催生了生态系统,其中,工作和流的定义成为共享或交易的项目。
6.5.操作。应用程序中经常存在临时创造或修改工作流的要求。如果要求更改代码,则不能安全地进行这种修改。使用模型使既可控制又可理解的动态操作成为可能。
三:WF工作流平台
1.平台必备特征
1.1.必须支持基本结构概念,如顺序、条件和循环。
1.2.但是,还需要支持数据驱动方法,以处理出现在像问题
1.3.还需要允许添加新的语义元素,以创建丰富的专门化的语言,
1.4.工作流还必须能够以多种方式通信。工作流响应UI 事件,驱动不同类型的服务(人力、编程、其他工作流),并且支持对其协定的当前状态的查询(例如,在确定问题— 解决协作应用程序中的行为体的可用操作时)。
1.5.如果要在工作流平台能够增加价值的所有应用程序(如MVC)中使用工作流平台,则它必须是轻量级的。
1.6.工作流模型本身必须是完全可编程的,这包括模型创建和用来支持预料之外的更改的动态模型更新(如在文档审阅应用程序中)。
2.考查WF工作流平台对上述必须特征的支持
WF 实现了作为工作项目组织的工作流思想,该思想是从它藉以结合到传统工作流产品中的相关思想抽象而来的。抽象分为下列三个主要类别:设计和可视化、宿主和语义。
2.1.设计和可视化。WF 中的工作流是工作项目(称为活动)组成的树。此树可以作为对象模型直接操作。提供了一个设计器,但不强求使用它。可以创建专门针对特定用户社区或特定工作项目组织的新设计器。还可以将所提供的设计器(它不仅可在Visual Studio 内部使用,还可在任意宿主应用程序中使用)专用化。2.2.宿主。WF 运行库足够轻巧,可以将客户端上下文(如丰富客户端应用程序外壳中的控制器)作为宿主。当嵌入到服务器宿主(如Office 2007 提” 供的Sharepoint Server)中的时候,它的性能足够好,从而能够进行伸缩。WF 运行库对其宿主的期望被抽象为服务(如线程处理、事务、持续性和通信)的提供程序接口。有用的提供程序实现是预先提供的,但是可以根据需要替换它们。
2.3.语义。不同的问题响应不同的模型语义。WF 支持三种现成的主要工作流样式:流、状态机和数据驱动。当工作流处于控制之中时(如脚本化操作示例),流对于应用程序而言是最理想的。当工作流由外部事件驱动时(像MVC 或导引用户应用程序中一样),状态机是最好的选择。数据驱动方法适用于操作取决于状态(像问题— 解决协作中一样)的应用程序。
3.WF 运行库的重点是提供任何工作流所需的设施,从而避免在不同的应用程序中反复地重新实现它们,但不损害工作流抽象的灵活性。这些常见的设施分为四个主要类别:活动调度、事务和长时间持续状态、异常和补偿、通信。
3.1.活动调度。WF 运行库定义了所有工作项目实现的活动协议。此协议定义了基本活动生存期(已初始化、正在执行和已关闭)以及处理异常所需要的其他状态(出错、正在取消和正在补偿)。此定义使WF 运行库能够为所有工作流提供工作调度。
3.2.事务和长时间持续状态。WF 运行库支持ACID 事务的执行。这些事务对于维持工作流状态和外部状态(如应用程序和消息状态)的一致性特别有用。然而,ACID 事务由于其所牵涉的资源和锁定问题而不适合于管理长时间持续状态。WF 运行库实现了更广泛的检查点和恢复机制来处理长时间持续状态。从这种观点来看,ACID 事务成为更大框架中的执行单元。开发人员不需要完成任何工作,即可获得WF 对长时间持续状态的支持的好处,因为它是默认的行为。然而,如果需要进行更详细的控制,则会为该目的提供一组简单的模型元素。
3.3.异常和补偿。人们熟悉的throw-try-catch 异常概念受到WF 运行库的支持,并且在现成的工作流模型中得到表示。然而,WF 运行库还支持更“ACID 事务对于维持工作流状态和外部状态(如应用程序和消息状态)的一致性特别有用广泛的错误处理观点,包括对成功完成的事务单位进行补偿的观点。
3.4.通信。正如我们已经看到的那样,工作流需要以多种方式通信,这一点在WF 中得到了反映,它支持通过.NET 方法、事件接口和Web 服务接口进行通信。将来,还将提供对Windows Communication Framework 的支持。因此,WF 确实实现了此处提出的工作流平台方法。
4. 工作流平台体现了下列两个主要思想
4.1.工作流是“工作单元的组织”以及工作流是“模型”,即非代码的可机读的说明。这些思想在一系列广泛的应用程序中很有价值,这些应用程序位于典型工作流产品所处理的问题域的内部和外部。如果这样的工作流平台成本低廉又普遍使用,那么它会是最有用的。
4.2.工作流平台所提供的主要好处来自于将工作项目的组织表示为模型,这样做与代码表示相比有下列几个优势:.
透明性。系统的业务目的很明确,就是使用户和IT 人员能够就需要的行为进行有效的沟通,以及使参加项目的IT 人员能够很快提高速度。
隔离更改。最有可能更改的应用程序方面被表示为工作流而非代码。通过隔离应用程序的快速运动部分,可以更加可靠地进行更改。.
敏捷性。所有这些好处的底线是业务敏捷性。如果业务用户能够理解该系统,开发人员就能够很快地提高速度,而且与更改相关联的风险会降到最低。那样,就可以说系统是敏捷的。
具有广泛用处的工作流平台必须具备下列特征:
1. 将核心工作流模型定义为标准,该标准在设计时和运行时都是可扩展和完全可编程的,
2. 能够以多种方式进行通信,是轻巧且可嵌入的,并且能够在大容量的环境中很好地伸缩和工作。
WF 是一种体现了上述所有特征的产品。WF 的成本也很低,而且使用广泛。