创作 Windows SharePoint Services 工作流

什么是 Windows SharePoint Services 工作流?从根本上来说,它包括两个方面:工作流用来与其用户进行交互的表单以及定义工作流行为的逻辑。若想了解 Windows SharePoint Services 工作流的创建方式,则需要知道这两方面的信息。

因为 Windows SharePoint Services 工作流通过 Web 浏览器与用户进行通信,所以它依赖 Microsoft ASP.NET 来显示其表单。因此,那些表单被定义为 ASPX 页。Windows SharePoint Services 工作流可以在其生命周期中的四个时间点显示其表单:

  • 关联:当 Windows SharePoint Services 管理员将工作流模板与特定文档库或列表关联时,管理员可以设置将应用于从此关联创建的每个工作流实例的选项。如果工作流作者允许这样做,那么她必须提供一个允许管理员指定此信息的表单。

  • 启动:当工作流发起人启动正在运行的实例时,他可能会获准指定选项。例如,在刚刚介绍的审批方案中,这些选项包括:指定工作流参与者的列表和定义每个人完成其任务所需的时间。如果工作流允许这样做,那么其作者必须提供表单以允许发起人设置这些选项,如前面图表的步骤 3 中所示。

  • 任务完成:正在运行的工作流实例必须向工作流中的参与者显示一个表单,以便参与者完成其任务。如前面图表的步骤 6 中所示,该表单允许前面所述方案中的审批者对文档进行注释并指示其是批准还是拒绝。

  • 修改:虽然上述方案中未说明该步骤,但工作流的创建者可以允许在工作流运行时对其进行修改。例如,工作流可能允许在其开始执行后或延长完成任务的截止日期后添加新的参与者。如果使用此选项,则工作流必须在此时显示一个表单,以便参与者指定应进行哪些更改。

只构建于 Windows SharePoint Services 之上的工作流可将其表单定义为 .aspx 页,而那些使用 Office SharePoint Server 的工作流还可以使用通过 InfoPath 创建的表单,本文后面对此进行了说明。无论是哪种情况,都始终将工作流的逻辑定义为一组活动,与任何基于 WF 的工作流相同。为了指定工作流的逻辑和表单,Microsoft 提供了两个不同的工具,每个工具针对不同的群体。软件开发人员可以使用 Visual Studio 2005 中的 WF 工作流设计器。信息工作人员的工作技术性不太强,他们可以使用 Office SharePoint Designer 创建工作流,且无需编写代码。下面两节讨论如何使用这些工具创建 Windows SharePoint Services 工作流。

使用 Visual Studio 2005 和 WF 工作流设计器创作工作流

在许多方面,工作流就像一个流程图。鉴于此,有必要提供一个允许开发人员指定工作流操作的图形工具。对于 WF,此工具是工作流设计器(Windows Workflow Foundation Extensions for Visual Studio 2005 的一部分)。开发人员可以使用 WF 工作流设计器以图形方式定义工作流的活动以及执行这些活动的顺序。下图显示了其外观的简单示例。

Windows SharePoint Services 工作流程示例

这些可供使用的活动显示在屏幕左侧的工具箱中。开发人员可将这些活动拖到设计表面以定义工作流中的步骤。然后可在右下角的“属性”窗口中设置每个活动的属性。

如前面所述,WF 的基本活动库提供一组基本活动。Windows SharePoint Services 还提供了一组专为创建 Windows SharePoint Services 工作流而设计的活动。其中最重要的是:

  • OnWorkflowActivated:提供了 Windows SharePoint Services 工作流的标准起点。此外,当工作流与文档库或列表关联时,此活动可接受由 Windows SharePoint Services 管理员通过关联表单提供的信息。当启动工作流时,此活动还可以接受通过初始表单提供的信息。每个 Windows SharePoint Services 工作流都必须从此活动开始。

  • CreateTask:创建分配给任务列表中特定用户的任务。例如,前面所述方案中的审批工作流使用此活动将任务添加到每个参与者使用的任务列表中。此活动还具有 SendEmailNotification 属性(当该属性设置为 True 时,会自动将电子邮件发送给为其创建此任务的人员)。

  • OnTaskChanged:接受任务完成表单中的信息。文档得到批准后,前面所述方案中的审批工作流使用此活动接受每个参与者的输入。

  • CompleteTask:将任务标记为已完成。

  • DeleteTask:从任务列表中移除某项任务。

  • OnWorkflowModified:接受修改表单中的信息,然后,可以使用这些信息更改此工作流实例的行为方式。如果工作流的创建者选择不在工作流中包含此活动的任何实例,则在该工作流运行时不能对其进行修改。

  • SendEmail:向指定的人员发送电子邮件。

  • LogToHistoryList:将有关工作流执行情况的信息写入历史记录列表。通过使用此列表中的信息,用户可以查看工作流的执行情况,以及在工作流完成后查看其历史记录等。若要允许此类型的监控,工作流的作者必须在工作流执行中的适当时间将信息写入历史记录列表。因为 Windows SharePoint Services 可提供其自己的机制来跟踪工作流,所以它不支持 WF 的标准跟踪服务。

简单 Windows SharePoint Services 工作流的典型模式从 OnWorkflowActivated 活动开始,接着使用 CreateTask 活动将任务分配给工作流中的参与者。然后,可能使用 BAL 的标准 While 活动等待,直到用户完成任务。为了了解此情况何时发生(用户可能会对任务进行多处更改,然后在完成后选中“任务完成”表单上的框),会在 While 内执行 OnTaskChanged 活动,提取用户已在该表单中输入的任何信息。用户完成任务后,可能会执行 CompleteTask 活动,然后执行 DeleteTask 活动。随后工作流可以转至下一参与者,使用 CreateTask 向此参与者分配任务等等。当然,也可以执行其他操作,例如,发送电子邮件、将信息记录到历史记录列表,甚至包含 BAL 的代码活动(允许运行任意代码)。

Windows SharePoint Services 提供的所有活动都与使工作流在 Windows SharePoint Services 环境内运行相关联。工作流实现的业务逻辑完全取决于工作流的创建者。实际上,创作 Windows SharePoint Services 工作流的开发人员可以自由创建和使用自己自定义的活动,不必仅使用由 Windows SharePoint Services 和 WF 提供的活动。

如上所述,Windows Workflow Foundation 同时支持顺序工作流和状态机工作流。通过 WF 工作流设计器创建的 Windows SharePoint Services 工作流也可以使用其中任一选项。为此,Windows SharePoint Services 向 Visual Studio 2005 添加两个项目类型(每个项目类型对应一种工作流样式)。

无论选择哪种样式,开发人员除了定义工作流的逻辑外,还必须定义其他内容;开发人员还必须指定该样式应使用的 ASPX 表单。为此,开发人员依赖名为 workflow.xml 的文件。此文件提供开发人员将填写的模板,以指定在允许 Windows SharePoint Services 工作流显示表单的四个时间点中每个时间点应显示的表单(如果存在)。

开发人员必须执行某些操作以在 Windows SharePoint Services 工作流和它使用的 ASPX 表单之间传递信息。Windows SharePoint Services 提供了一个可公开开发人员的对象模型的命名空间 Microsoft.Windows.SharePoint.Workflow。利用此命名空间中的类型,Windows SharePoint Services 工作流的创建者可以将信息在 ASPX 表单和工作流之间进行传递。

创建好 Windows SharePoint Services 工作流及其表单之后,开发人员必须将它们打包到 Windows SharePoint Services 3.0 称作功能的包中。然后,Windows SharePoint Services 管理员必须安装此功能(包括将工作流程序集安装到目标系统的全局程序集缓存)。现在,管理员就可以看见作为可与文档库或列表相关联的工作流模板的新工作流。

对于软件开发人员来说,使用 Visual Studio 和 WF 工作流设计器创建 Windows SharePoint Services 工作流不是特别困难。开发人员需要了解在此环境中工作的详细信息,但是他所做的多数工作都是比较熟悉的。但是创作 Windows SharePoint Services 工作流的不仅限于软件开发人员。如下所述,不是专业开发人员的人员也可以使用 Office SharePoint Designer 创建工作流。

使用 Office SharePoint Designer 2007 创作工作流

Office SharePoint Designer 2007 是 2007 Office system 的单独授权的组件,它允许信息工作人员和其他人将应用程序逻辑(作为工作流实现)添加到 Windows SharePoint Services 网站。这当然是一个有用的目标,但 Office SharePoint Designer 还可以解决另一个重要的问题。如果开发人员使用 Visual Studio 创建 Windows SharePoint Services 工作流,那么此工作流必须像任何其他应用程序那样安装在 Windows SharePoint Services 服务器上。但是许多 Windows SharePoint Services 管理员不允许在其服务器上部署任意代码,因为他们认为破坏系统稳定性的风险过大。但是,能够创建与文档和列表项相关的简单的业务逻辑非常有用,并且这也是许多 Windows SharePoint Services 用户所需的功能。除允许更少的技术人员创建工作流之外,Office SharePoint Designer 还可以通过提供一个更安全的方法来定义和部署 Windows SharePoint Services 服务器上的业务逻辑来解决此问题。

Office SharePoint Designer 要处理的工作流方案在某些方面与由 Visual Studio 和 WF 工作流设计器处理的工作流方案有些不同。Office SharePoint Designer 确实能够创建复杂的应用程序,但它旨在允许用户将业务逻辑添加到 Windows SharePoint Services 网站。例如,假定网站包含允许其用户提交更改请求的列表。Office SharePoint Designer 可用于创建这样一个工作流:在接受或拒绝提交者的更改请求时,自动通知提交者。同样,自定义工作流可以在每次向特定文档库添加新文档时通知特定用户组。执行此类自定义通知并不复杂(创建此类工作流非常简单),但是对于早期版本的 Windows SharePoint Services 则比较困难,因为管理员不愿安装用户编写的代码。

此处存在一个明显的问题:为什么使用 Office SharePoint Designer 创建的逻辑应以不同的方式处理?为什么 Windows SharePoint Services 管理员愿意在其负责的系统上部署使用此工具创建的工作流?答案是:使用 Office SharePoint Designer 创建的工作流只能使用管理员控制的列表中的活动。尽管网站管理员可以选择包含此列表中由开发人员创建的自定义活动,但他不必这样做。通过准确定义允许工作流执行的操作,Windows SharePoint Services 管理员可以更好地确保部署使用 Office SharePoint Designer 创建的逻辑不会破坏其系统的稳定性。

因为 Office SharePoint Designer 适用于信息工作人员而不是开发人员,而且它侧重于更简单的方案,所以 Office SharePoint Designer 用于创建工作流的模型与承载 Visual Studio 的 WF 工作流设计器不同。Office SharePoint Designer 使用基于规则的方法,而不是图形方法。这有些类似于 Outlook 中的规则向导(许多人都熟悉的一个工具)。下面的屏幕演示 Office SharePoint Designer 的用户如何在工作流中定义步骤。

Windows SharePoint Services 工作流程制作

每一个步骤都可以具有条件和操作。条件用于确定是否应执行此步骤的操作,如上所述的 If 语句。操作的选项包括将待办事项分配给工作流参与者、发送电子邮件等等。其中的每项操作实际上由某种 Windows SharePoint Services 活动执行,并且此处使用的活动与 Visual Studio 和 WF 工作流设计器使用的活动相同。例如,如上所示的“发送电子邮件”选项与 SendEmail 活动相对应,而“分配待办事项”与稍微专业些的 CreateTask 活动相对应。操作列表也可以包含由 Windows SharePoint Services 管理员为此网站允许的任何其他活动,包括由开发人员创建的自定义活动。

尽管 Office SharePoint Designer 的用户界面看起来与 Visual Studio 和 WF 工作流设计器使用的图形方法有很大不同,但是 Office SharePoint Designer 可创建标准 WF 工作流。实际生成的是带有使用 WF 规则引擎说明的条件的顺序工作流。但是,使用此工具创建的工作流确实具有一些局限性。例如,和使用 Visual Studio 与 WF 工作流设计器创建的工作流不同,在这些工作流运行时不能对其进行修改,而且只能创建顺序工作流(不支持状态机工作流)。同时,在设计使用此工具创建的工作流时,必须根据特定的文档库或列表创作这些工作流。不能创建以后可以与任何库或列表或内容类型关联的一般工作流模板。尽管这限制了工作流的使用方式,但也会大大简化工作流的部署。实际上,当用户使用 Office SharePoint Designer 完成工作流创作后,此工具会自动将工作流部署到目标网站。相对于使用 Visual Studio 和 WF 工作流设计器创建的工作流所需的多步骤部署过程来说,它大大降低了复杂程度。

使用 Office SharePoint Designer 创建的工作流还可以显示自定义表单。该工具不需要工作流创作者直接创建 ASPX 页,相反,它会生成这些页。创作者指定有关生成页的外观的详细信息(例如它们应包含哪些字段),Office SharePoint Designer 就会完成剩下的任务。在 Windows SharePoint Services 工作流的生命周期(可以使用表单的时间)的四个点中,使用 Office SharePoint Designer 创建的工作流只使用其中的两个点:启动和任务完成。因为使用此工具创建的每个工作流都必须与特定文档库或列表相关联,所以不需要关联步骤,因而没有关联表单。由于在这些工作流运行时不能对其进行修改,因此不需要修改表单。

Office SharePoint Designer 不仅仅可用于创建 Windows SharePoint Services 工作流。例如,此工具可用于创建 Windows SharePoint Services 网站或用于通过编辑网站母版页来自定义网页的外观。它还可用于连接外部数据(依赖于 ASP.NET 中的数据绑定支持的数据)。对于需要创建可在 Windows SharePoint Services 网站上执行的逻辑的信息工作人员来说,Office SharePoint Designer 最重要的功能当然是支持创作工作流。

Windows SharePoint Services 提供了很多创建面向文档的工作流的功能。但从根本上说,它是开发和执行的平台。它本身并不提供最终用户可以直接使用的工作流功能。如果需要能直接使用的工作流应用程序(经常如此),Windows SharePoint Services 将无法满足您的需要。仅使用 Windows SharePoint Services 创建的工作流还具有其他限制,例如,不能通过 Office 客户端应用程序与参与者进行交互。如下所述,Office SharePoint Server 提供了克服所有这些限制的方法。

下载此书籍

本主题包含在以下可下载书籍内,以方便您阅读和打印:

有关可下载书籍的完整列表,请参阅 Office SharePoint Server 2007 的可下载书籍