WSS工作流SDK学习日记(1)—— WSS工作流介绍

 

1.   WSS工作流介绍

在WSS3.0中,工作流可以添加一些商业流程到某个列表项中,这个流程可以控制列表项各个方面,包括列表项的生命周期。比如,你可以创建一个文档多级审批的简单工作流。

工作流可以满足简单或者复杂的商业需求,你可以创建工作流使得列表项在触发某些事件后自动启动用户界面进行用户的交互,比如在列表项创建或者修改的时候。

利用WSS工作流

       WSS3.0工作流可以实现在列表或者文档库级别。工作流可以添加在文档或者列表项上,也可以添加在内容类型上。多个工作流可以同时添加在指定的列表项上,但是同一时间一个列表项只能有某个工作流的一个实例,比如你可以同时添加审批工作流和反馈工作流在一个指定的内容类型上,但是你不能同时运行审批工作流的两个实例在同一个内容类型上。

Sharepoint工作流技术架构

       你可以利用Visual Studio 2005的工作流设计器来创建工作流。每个工作流会编译成自己的动态链接库。另外,工作流通过自定义工作流表单和用户直接交互,在每个阶段收集用户的信息。

       在服务场中安装工作流,你需要创建工作流定义。工作流模板定义是一个XML文件包含WSS中运行工作流实例的信息,比如:

工作流名称,GUID和描述

工作流中使用的自定义表单位置

工作流程序集相关信息

       每个服务器场包含一个工作流关联信息表。表中每条记录包含应用在指定内容类型,列表或者文档库的工作流相关信息。这些相关信息包括工作流是自动启动还是通过用户启动,工作流的任务和历史列表等。如果一个工作流被添加在多个内容类型或者文档库,在表中会有针对每个关联的记录。同样,如果你添加多个工作流在指定的内容类型,列表或者文档库,那么表中包含每个工作流添加的内容类型,列表或文档库信息。

         下图描述了WSS3.0工作流概念架构。服务场中每个添加工作流的内容类型,列表和文档库都会记录在关联表中。每个工作流有一个工作流定义。这个基于XML定义文件包含了工作流程序集信息,类名以及工作流中使用到表单位置。

 

1.1       工作流的阶段

要更好地了解工作流是如何是什么以及如何在WSS3.0中被使用,我们需要讨论一下工作流在和用户交互的不同阶段。

工作流关联

工作流被安装在服务器级别,但是站点集管理员必须把它指定到服务器的某个站点集上。

网站管理员可以把工作流添加到一个列表,文档库或者是内容类型上。他们可以选择列表,文档库或者内容类型上可以使用哪些工作流,也可以通过设置工作流参数信息来自定义工作流,比如:

工作流的名称

工作流是如何被应用到指定项目:当项目创建或者修改时候自动或手动启动工作流;哪些角色,管理员还是审批者可以启动工作流

如果工作流需要任务,那么需要使用哪个任务列表

是否使用工作流历史记录列表保存工作流历史事件

要自定义工作流信息,工作流必须提供自定义表单以便网站管理员输入自定义信息。

工作流初始化

拥有相应权限用户可以手动初始化工作流。首先用户在WSS3.0选择某个项目,在项目工作流菜单选择关联工作流。接着,用户提供自定义信息到指定工作流并初始化工作流。初始化工作流就是给指定的项目创建一个工作流实例。

对于用户自定义工作流初始化设置,工作流必须提供自定义表单显示给用户。用户在表单中设置初始化信息,这些设置通过工作流引擎,运用在新的工作流实例。

工作流状态

用户可以查看某个列表项工作流的进度。在状态页面显示列表项目工作流当前状态。另外,每个列表项都有一个工作流页面,在这个页面上用户可以查看下面信息:

当前运行在这个列表项所有工作流

过去运行在这个列表项所有工作流

这个列表项可以利用工作流

当用户为一个列表项初始化工作流后,WSS3.0为这个列表项添加一个字段。这个字段名字通过初始化工作流中设置。WSS3.0利用这个只读字段来显示当前工作流状态。WSS3.0会在每个工作流第一次运行时添加这个状态栏。

工作流任务完成

工作流通过任务列表来显示每个阶段。当设计工作流时,工作流作者可以指定任务模式。比如,任务列表可以包含下面内容:

任务标题

任务分配对象

任务状态

任务优先度

任务到期日期

相关文档链接

工作流运行时任务就被创建,用户可以选择任务并标记完成以及输入一些可选或者必输的信息,接着工作流实例会改变工作流任务并进行到工作流的下一个状态。

 

1.2       工作流宿主架构

在WSS3.0中工作流是建立在微软工作流架构上,这是一个微软平台组件,它提供了开发平台和开发工具来开发基于工作流的应用程序。WSS3.0利用两个组件来开发工作流: Visual Studio 2005工作流设计器和工作流运行时引擎。

Visual Studio 2005工作流设计器

Visual Studio 2005工作流设计器是Visual Studio 2005的一个插件用于开发者创建自定义工作流和工作流活动。WWF提供工作流模型允许开发者描述商业流程,工作流通过图形化部件,XML定义,代码来创建。Visual Studio 2005工作流设计器提供了一个直观的图形化设计界面使得开发者可以很方便组合预先定义的活动到自定义工作流上。工作流创建者可以像开发.net framework那样对工作流模型进行开发和扩展。

微软工作流(WF)运行时引擎

工作流运行时引擎管理工作流运行并且允许工作流在机器重启后长时间保持相关状态。运行时服务提供核心服务例如事务化和持久化到运行时引擎。WF允许任意应用程序进程或者服务作为工作流宿主运行工作流,实际上是把工作流加载到进程中。当你在WSS3.0中创建工作流,WSS3.0就是工作流的宿主。

工作流运行时引擎为每个工作流提供应用程序需要的服务,例如顺序化,状态管理,跟踪以及事务支持等。工作流引擎提供状态机用于加载和卸载工作流模板和管理当前工作流运行状态。

WSS3.0作为工作流运行时引擎宿主,取代包含在WF的服务,提供了自定义服务: 事务化,持久化,通知,角色,跟踪以及消息。开发者可以基于WSS3.0创建工作流解决方案。

下图显示WSS3.0工作流架构。WSS在它的进程中加载WF运行时引擎并且提供必要服务的自定义实现。WSS3.0提供的一些这些机能都可以通过WSS3.0对象模型来进行开发。

 

 

工作流持久化

WSS3.0提供很重要的服务就是工作流持久化。工作流包含用户交互信息必须长时间保存在计算机上。在实际运用中,一个文档需要审批的工作流可能运行很多天。很明显,把工作流运行期间内容保存在内存中是不可行的,大量长时间运行的工作流数据很快会使系统崩溃。

所以,取代保存在内存中做法,一旦工作流实例到达需要用户输入的时候,WSS3.0就会将工作流实例从内存中取出并持久化数据。当相应事件触发时候,比如用户输入,需要再次实例化工作流,WSS3.0会利用持久化的数据重新实例化工作流。这样在拥有大量工作流实例时候,实际上在内存中运行的只有少数几个工作流实例。

1.3       工作流类型

WF支持两种基本工作流类型。你可以在WSS3.0创建这两种工作流。

顺序工作流

顺序工作流是按照顺序运行每个步骤直到最后一个工作流活动的结束。但是,顺序工作流在过程中并不是完全顺序执行,因为在过程中可以接收外部事件,包含一些并行逻辑流程等,使得顺序活动执行发生一些变化。

状态机工作流

状态机工作流有一系列状态,事务和活动。一个状态表示开始状态,基于事件或事务可能变成另一种状态。状态机流程有最终状态表示工作流的结束。

posted @ 2008-07-20 07:48  moss.net  阅读(1207)  评论(0编辑  收藏  举报