选择工作流创作工具 (SharePoint Foundation)

 

适用于: SharePoint Foundation 2010

上一次修改主题: 2015-03-09

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

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

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

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

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

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

单独基于 Microsoft SharePoint Foundation 2010 构建的工作流将其表单定义为 .aspx 页。工作流的逻辑始终定义为一组活动,就像基于 Windows Workflow Foundation (WF) 的任何工作流一样。为了指定工作流的逻辑和表单,Microsoft 提供了两个分别针对不同访问群体的不同工具。软件开发人员可以使用 Windows Workflow Foundation 的工作流设计器功能。此工具在 Visual Studio 2010 Professional Edition 内运行,提供用于将活动组织为工作流的图形化环境。信息工作人员的工作技术性不太强,他们可以使用 Microsoft SharePoint Designer 2010 创建工作流,而无需编写代码。以下两节分析如何使用这两个工具来创建工作流。

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

在许多方面,工作流就像一个流程图。鉴于此,有必要提供一个允许开发人员指定工作流操作的图形化工具。此工具就是 Visual Studio 2010 Professional 中的 SharePoint 工作流工具,它是一种使用 Windows Workflow Foundation (WF) 设计器的项目类型,并且添加了对 SharePoint 工作流的部署和表单支持。开发人员可以使用 WF 工作流设计器以图形方式定义工作流的活动以及执行这些活动的顺序。以下屏幕显示了这在 Microsoft Visual Studio 中的外观的简单示例。

收集反馈工作流

Windows SharePoint Services 工作流程示例

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

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

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

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

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

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

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

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

  • SendEmail:向指定的一个人或一组人发送电子邮件。

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

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

SharePoint Foundation 提供的所有活动均涉及到让工作流在 SharePoint 环境中工作。工作流实现的业务逻辑完全由工作流的创建者决定。实际上,创作工作流的开发人员可以自由创建和使用自己的自定义活动,而不是只能使用 SharePoint Foundation 和 WF 提供的那些活动。

如前所述,Windows Workflow Foundation 支持顺序工作流、并行工作流和状态机工作流。利用 WF 工作流设计器创建的工作流也可以使用这些选项中的任一个。为了允许这样做,SharePoint Foundation 向 Visual Studio 添加了一些项目类型,它们与这些工作流样式逐一对应。

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

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

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

对于软件开发人员,使用 Visual Studio 和 WF 工作流设计器来创建工作流并非特别困难。开发人员需要了解在此环境中工作的细节,但他要做的许多工作都将是很熟悉的。不过,除了软件开发人员外,还有其他人想要创作工作流。如下所述,不是专业开发人员的用户也可通过使用 Microsoft SharePoint Designer 2010 创建工作流。

使用 Microsoft SharePoint Designer 2010 创作工作流

Microsoft SharePoint Designer 2010 是一个可免费下载的独立应用程序。Microsoft SharePoint Designer 可让信息工作人员和其他人向 SharePoint 网站添加应用程序逻辑(作为工作流来实现)。这无疑是一个有效的目标,但 Microsoft SharePoint Designer 还解决了另一个重要的问题。如果开发人员使用 Visual Studio 创建工作流,则必须像任何其他功能一样,将该工作流部署在运行 SharePoint Foundation 的服务器上。不过,许多 SharePoint 管理员不允许在其服务器上部署任意代码,他们认为系统稳定性受破坏的风险太高。但是,能够创建关联到文档和列表项且简单明了的业务逻辑是非常有用的,而且这也是许多 SharePoint 用户的需求。除了允许非技术专家的人员创建工作流之外,Microsoft SharePoint Designer 还提供更安全的方式,以定义业务逻辑并将其部署到运行 SharePoint Foundation 的服务器上,从而解决此问题。

Microsoft SharePoint Designer 计划解决的工作流状况在某些方面不同于 Visual Studio 和 WF 工作流设计器解决的状况。虽然的确可以创建复杂的应用程序,但 Microsoft SharePoint Designer 的目的是让用户向 SharePoint 网站添加业务逻辑。例如,假设某网站包含一个列表,可让其用户提交更改请求。可以使用 Microsoft SharePoint Designer 创建一个工作流,以便在提交者的更改请求被接受或拒绝时自动通知此人。同样,在将新的文档添加到特定的文档库时,可以通过自定义工作流通知特定的一组用户。执行这种类型的自定义通知并不复杂(可以轻松创建工作流),但它对于 SharePoint Foundation 的早期版本比较复杂,因为管理员不愿意安装用户编写的代码。

在这里有一个明显的问题:为何应以完全不同的方式对待利用 Microsoft SharePoint Designer 创建的逻辑?什么能使 SharePoint 管理员愿意允许在其负责的系统上部署利用此工具建立的工作流?答案是,利用 Microsoft SharePoint Designer 建立的工作流只能使用由管理员控制的列表中的活动。除了 SharePoint Foundation 提供的活动外,网站管理员可以选择是否在此列表中包括由开发人员创建的自定义活动。通过确切定义允许工作流执行的操作,SharePoint 管理员可以更放心地知道部署使用 Microsoft SharePoint Designer 创建的逻辑不会破坏其系统的稳定性。

由于 Microsoft SharePoint Designer 计划供信息工作人员而不是开发人员使用,并且由于它着重于解决较为简单的状况,因此,它使用不同于以 Visual Studio 为宿主的 WF 工作流设计器的工作流创建模式。Microsoft SharePoint Designer 使用基于规则的方法,而不是使用图形化方法。它有些类似于 Microsoft Outlook 中的规则向导,此向导是为人熟悉的工具。下面的屏幕说明 Microsoft SharePoint Designer 的用户如何定义工作流中的步骤。请注意,此工作流分别以并行和串行方式运行一些操作。SharePoint Foundation 的早期版本仅支持以串行方式运行操作,也即操作只能按顺序运行。

处理订单工作流

Process Order Workflow

每个步骤都可以有一个条件和一个操作。条件决定是否应执行此步骤的操作,如上面的 If 语句所示。操作的选择包括向活动分配演艺者、收集审批等许多操作。这些操作的每一个实际上都是由某个 SharePoint Foundation 活动执行的,而且此处使用的活动与 Visual Studio 和 WF 工作流设计器相同。操作的列表还可以包括此网站的 SharePoint 管理员允许的任何其他活动,包括开发人员创建的自定义活动。

即使其用户界面看起来与 Visual Studio 和 WF 工作流设计器所用的图形化方法极为不同,Microsoft SharePoint Designer 创建的仍然是标准的 WF 工作流。实际上产生的是顺序工作流、并行工作流或两者的组合,它们带有通过使用 WF 规则引擎来表示的条件。但是,利用此工具创建的工作流的确具有一些限制。例如,在这些工作流运行时无法对它们进行修改,这与那些使用 Visual Studio 和 WF 工作流设计器建立的工作流不同;而且,只能创建顺序工作流和并行工作流 - 并不支持状态机。此外,对于利用此工具建立的工作流,可以在设计它们时依据特定的文档库、列表或网站来创作这些工作流。工作流作者还可以创建通用的工作流模板,之后可以将它与任何库、列表或内容类型相关联。虽然这确实限制了工作流的使用方式,但它也使工作流的部署变得更简单。实际上,当用户利用 Microsoft SharePoint Designer 完成工作流的创作时,此工具提供了单击一次即可将工作流部署到目标网站上的能力(包括激活工作流)。这与使用 Visual Studio 和 WF 工作流设计器创建的工作流所需的多步骤部署过程相比,复杂性大为降低。

使用 Microsoft SharePoint Designer 创建的工作流也可以显示自定义表单。不过,此工具并不要求工作流作者直接创建 .aspx 页面,它会生成这些页面。作者指定有关生成的网页应如何显示(例如应包含哪些字段)的详细信息,剩余的事情交由 Microsoft SharePoint Designer 来处理。但是,在可以使用表单的工作流生命周期的四个时间点中,只有两个是与使用 Microsoft SharePoint Designer 创建的工作流一起使用的:“初始”和“任务完成”。由于利用此工具创建的每个工作流均必须与特定的文档库、列表、内容类型或网站相关联,因此无需执行关联步骤,从而也无需使用关联表单。而由于在这些工作流运行时无法对它们进行修改,因此无需使用修改表单。

Microsoft SharePoint Designer 还提供此能力:导入使用 Microsoft Visio 2010 创建的工作流。这使业务经理或工作流作者能够使用熟悉的图形化环境创建工作流逻辑。之后,工作流作者可以将工作流逻辑导入到 Microsoft SharePoint Designer 中,根据需要修改它,然后将其发布到 SharePoint 网站。

SharePoint Foundation 提供了大量用于创建面向文档的工作流的功能。但归根到底,它是一个开发和执行的平台。它本身未提供直接可供最终用户使用的工作流功能。在 SharePoint Foundation 上运行的工作流还具有其他限制,例如无法使用 Office 客户端应用程序与参与者进行交互。

创作工具的比较

下表显示获得 Microsoft 的支持可在 SharePoint Foundation 中创建工作流(使用 SharePoint Designer 和 Visual Studio 2010 Professional Edition 中的 WF 工作流设计器)的工具之间的重要不同之处。

功能/要求 SharePoint Designer Visual Studio 中的 WF 工作流设计器

是否只能使用网站管理员批准的操作来创建工作流?

是否可以在客户端应用程序(浏览器除外)中访问工作流?

是否能使用 Microsoft Visio Professional 创建工作流逻辑?

是否需要编写代码?

是否提供其他活动(SharePoint Foundation 提供的活动除外)?

是否能创建自定义活动?

是否能在工作流运行时修改它?

是否能单击一次就发布工作流?

是否能远程部署工作流?

是否能跨服务器场使用?

范围是否能覆盖网站集?