本章内容:
1. 创建顺序工作流。
2. 创建带有初始表单的网站工作流。
3. 从工作流创建任务。
4. 创建自定义任务表单。
Introduction
根据国际工作流联盟(http://www.WFMC.org)标准组织,完全致力于流程,这样定义工作流:
业务流程的自动化,整体或部分,其中文档、信息或任务根据一系列过程规则,从一个参与者传递到另一个参与者操作。
简单说来工作流时管理业务流程执行的系统。组织应用工作流有以下原因:
1. 审批和跟踪;
2. 高效;
3. 连贯一致;
4. 更好客户支持。
无论什么原因,它通过将业务流程打碎成小的活动,以逻辑顺序执行来应用。
工作流中,活动是最小的可执行片段。以管理雇员事件和费用报表的业务流程为例。这里,当雇员提交报表时,通知被发送到管理者,做出批准或拒绝的决策。一旦完成,通知会发送回到雇员。业务流程中发生的每一步都被认为是活动。这里有三种:
1. 标准活动;
2. 控制流活动;
3. 容器活动。
标准活动是执行像发送邮件,执行.NET代码或创建任务等的活动。控制流活动是用来作为决策点的活动,例如if-else、while循环等。这些活动要求你提供决策规则。这些规则可以被定义为基于声明或代码。声明的规则储存在拓展名为.rules的XML文件中。容器活动是可以主持其他活动,并创建综合活动。例如顺序活动,条件活动组等。一些控制流活动也是容器活动。
SharePoint 2010 工作流是基于Windows Workflow Foundation(WF)。WF是.NET 3.5 Framework的一部分。使用WF,你可以生成许多启用工作流的应用程序,不需要和SharePoint互动。你的应用程序也可以主持其他工作流并执行它们。这样,你的应用程序必须管理被主持的工作流的生命周期。因为工作流可能是长期运行的过程,系统重启或重置不应该终结工作流过程。工作流实例状态依然被保持在数据库或XML中。主持工作流的应用程序叫宿主应用程序。宿主应用程序可以提供自定义的交流和其他服务,使得你的工作流域外部应用程序高效互动。宿主拥有workflow
runtime engines,以及一些runtime services帮助工作流活动执行它们的功能。
SharePoint 是一个宿主应用程序。提供runtime engine使工作流得以执行。有runtime服务如persistence服务--储存工作流时里状态到内容数据库。拥有communication服务管理SharePoint工作流上任务的沟通。任务是SharePoint域用户沟通的方式。事务服务也管理工作流中事务性情境,如出现异常时回滚到之前状态。。SharePoint也提供timer服务和tracking服务,保存工作流实例历史到历史列表。timer服务帮助自动一段时间后从无意义的状态重新工作流。在我们的例子中,如果管理者没有在5天内回应任务,我们就编写唤醒拖延活动给管理者发送警告。
WF支持状态机和顺序工作流。SharePoint基于WF支持这两种类型。顺序工作流中,活动被以逻辑顺序放置,有明确的开始和结束。活动向流图一样一步步执行。顺序工作流中没有返回到之前步骤。书序工作流适用于不需要人互动的自动流程,像移动文档从一个库到另一个库、或以用户提交以后特定的顺序,系统自动进行审批、库存核查和发送通知到完成部门。它们也被用在当你像让用户遵从某种模式。状态机工作流在第三章节“高级工作流”中讲解。VS2010提供了模板开发这两种工作流。为了定义工作流,我们创建一个项目,并添加活动到工作流designer界面中来构建我们的逻辑流。
SharePoint中,工作流定义可以与列表或文档库、内容类型和网站关联。当与列表或库关联时,工作流在项目上运行。你可以手动启动工作流或在新项目被创建或修改时自动启动。因为站点工作流没有指定运行的项目,所以必须通过点击链接这些外部事件启动工作流或者通过代码使用外部应用程序启动。
当工作流和内容类型关联时,工作流可以在任何项目上启动,只要包含这个内容类型就,而与项目所属的列表或库无关。我们将在第四章节“列表定义和内容类型”了解。
网站工作流对于SharePoint2010中是新引进的。不依靠列表或库。存在于网站劫镖,并在网站中关联的列表或库上运行。这些类型的工作流通常用于安排维护工作或者需要与不同列表中多个项目互动的工作流中。
状态机工作流和顺序工作流可以与之前列出的三种类别关联。你的业务要求是驱动因素,决定工作流类型,是否需要是网站或列表工作流。当关联时,你可以询问相关用户。这可以是配置信息,如审批组或数据连接字符串等,特定于工作流关联的网站或列表。通过提供表单,这样用户可以输入这些信息。这叫关联表单。你也可以向用户提供表单,在工作流启动实例中输入,及新建初始表单。初始表单用作获得用户输入。也被用作覆盖特定工作流实例的关联数据。任务表单用来在用户被分配任务时,呈现给用户。任务是SharePoint与用户互动的方法(关于执行的活动)。
除了提供框架开发自定义工作流,SharePoint也提供许多开箱即用OOB的工作流,如审批工作流、三态工作流、收集反馈工作流、处置工作流等。