演练:创建和调试 SharePoint 工作流解决方案

更新:2007 年 11 月

适用对象

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

项目类型

  • SharePoint 工作流

Microsoft Office 版本

  • SharePoint Server 2007

有关更多信息,请参见按应用程序和项目类型提供的功能

此演练演示如何创建基本的顺序工作流模板。工作流检查文档库的属性,以确定文档是否已评审。如果文档已评审,则工作流完成。

本演练阐释以下任务:

  • 创建 SharePoint 2007 顺序工作流项目。

  • 创建工作流时间表。

  • 处理活动事件。

Bb386168.alert_note(zh-cn,VS.90).gif说明:

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置

有关如何使用 Visual Studio Tools for Office 创建 SharePoint 工作流模板的更多信息,请参见SharePoint 工作流解决方案

先决条件

您需要以下组件来完成本演练:

  • Visual Studio Tools for Office(Visual Studio 2008 专业版 和 Visual Studio Team System 的可选组件)。

  • Microsoft SharePoint Server 2007。

  • 标题为“文档中心”且 URL 为 https://localhost/Docs 的 SharePoint Server 网站。如果在一台计算机上独立安装 Microsoft Office SharePoint Server 2007,则在完成“SharePoint 产品和技术配置向导”后会自动创建此网站。

  • Microsoft Office Word 2007 或 Microsoft Office Word 2003。

默认情况下,Visual Studio Tools for Office 随列出的 Visual Studio 版本一起安装。若要检查它是否已安装,请参见安装 Visual Studio Tools for Office

向 SharePoint 文档库中添加属性

为跟踪“文档”库中文档的评审状态,工作流参与者设置文档的“Document Status”(文档状态)、“Assignee”(受理人)和“Review Comments”(评审文档)属性。可在文档库中定义这些属性。

向 SharePoint 文档库中添加属性

  1. 在 Internet Explorer 中打开默认的 SharePoint Server 2007 网站。

    Bb386168.alert_note(zh-cn,VS.90).gif说明:

    默认情况下,SharePoint 站点位于 https://localhost。如果您将 https://localhost 映射到非 SharePoint 网站,将无法使用此演练中的步骤测试工作流模板。

  2. 单击“文档中心”选项卡。

  3. 在导航窗格中单击“文档”。

  4. 在“文档”页中单击“设置”,然后单击“文档库设置”。

  5. 在“自定义文档”页中,单击“栏”下的“创建栏”。

  6. 将该列命名为“Document Status”(文档状态),选择“选项(要从中选择的菜单)”,指定以下三个选项,然后单击“确定”:

    • Review Needed(需要评审)

    • Review Complete(评审完成)

    • Changes Requested(请求更改)

  7. 再创建两栏并将它们命名为“Assignee”(受理人)和“Review Comments”(评审注释)。将“Assignee”(受理人)一栏设置为单行文本格式,将“Review Comments”(评审注释)一栏设置为多行文本格式。

使文档无需签出即可编辑

如果无需签出文档即可进行编辑,则测试工作流模板会更容易一些。

使文档无需签出即可编辑

  1. 在“自定义文档”页中,单击“常规设置”下的“版本控制设置”。

  2. 对于“是否要求先签出文档然后再对其进行编辑”,选择“否”,然后单击“确定”。

  3. 关闭 Internet Explorer。

创建 SharePoint 顺序工作流项目

顺序工作流是顺序执行直到最后一个活动完成的一系列步骤。

创建 SharePoint 顺序工作流项目

  1. 启动 Visual Studio。

  2. 打开“新建项目”对话框,展开要使用的语言下的“Office”节点,然后选择“2007”节点。

  3. 在“模板”窗格中,选择“SharePoint 2007 顺序工作流”。

  4. 在“名称”框中,键入“MySharePointWorkflow”。如果您的 IDE 已设置为使用 Visual C# 开发设置或常规开发设置,则请输入位置和解决方案名称。

  5. 单击“确定”。

    将显示“新建 Office SharePoint 工作流”向导。

  6. 在“指定要用于调试的工作流名称和站点”页上,单击“下一步”接受默认工作流名称和站点。

  7. 在“选择要在调试时使用的列表”页上,单击“下一步”接受默认的文档库、任务列表和历史记录列表,并自动将您的工作流模板与文档库关联起来。

  8. 在“您可以为工作流的启动方式指定条件”页上,单击“完成”接受默认选择。

创建工作流时间表

工作流模板包含一个或多个工作流时间表,这些时间表包含表示要执行的操作的活动。使用工作流设计器可以在时间表中安排活动。若要监视“文档”列表中某一文档的评审状态,请添加两个活动:HandleExternalEventActivityMicrosoft.SharePoint.WorkflowActions.OnWorkflowItemChanged

创建工作流时间表

  1. 在“解决方案资源管理器”中,双击“Workflow1.cs”或“Workflow1.vb”在设计器中打开工作流时间表。

  2. 在设计器中,单击选择“OnWorkflowActivated1”活动。

  3. 在“属性”窗口中,在“Invoked”属性旁键入“onWorkflowActivated”,然后按 Enter。

    代码编辑器将会打开,一个名为“onWorkflowActivated”的事件处理程序方法被添加到 Workflow1 代码文件中。

  4. 在设计器中重新打开工作流时间表。

  5. 在“视图”菜单上单击“工具箱”。

  6. 从“工具箱”的“Windows Workflow v3.0”选项卡中,将一个“While”活动拖动到“onWorkflowActivated1”活动下。

  7. 单击选择“WhileActivity1”活动。

  8. 在“属性”窗口中,将“Condition”设置为“Code Condition”。

  9. 展开“Condition”属性,在“Condition”属性旁键入“isWorkflowPending”,然后按 Enter。

    代码编辑器将会打开,一个名为“isWorkflowPending”的方法被添加到 Workflow1 代码文件中。

  10. 在设计器中重新打开工作流时间表。

  11. 从“工具箱”的“SharePoint 工作流”选项卡中,将一个“OnWorkflowItemChanged”活动拖到“whileActivity1”活动中。

  12. 单击选择“onWorkflowItemChanged1”活动。

  13. 在“属性”窗口中,如下表所示设置属性。

    属性

    CorrelationToken

    workflowToken

    Invoked

    onWorkflowItemChanged

处理活动事件

最后一步是检查每个活动后文档的状态。如果文档已评审,则工作流完成。

处理活动事件

  1. 在“解决方案资源管理器”中右击“Workflow1.cs”或“Workflow1.vb”,然后单击“查看代码”。

  2. 在 Workflow1 类的顶部添加下面的字段。您将在活动中使用此字段确定工作流是否完成。

    Dim workflowPending As Boolean = True
    
    Boolean workflowPending = true;
    
  3. 将下面的方法添加到 Workflow1 类中。此方法检查“文档”列表的 Document Status 属性的值,以确定文档是否已评审。如果 Document Status 属性设置为 Review Complete,checkStatus 方法就将 workflowPending 字段设置为 false 以指示工作流可以完成。

    Private Sub checkStatus()
        If CStr(workflowProperties.Item("Document Status")) = "Review Complete" Then
            workflowPending = False
        End If
    End Sub 
    
    private void checkStatus()
    {
        if ((string)workflowProperties.Item["Document Status"] == "Review Complete")
        workflowPending = false;
    }
    
  4. 将下面的代码添加到 onWorkflowActivated 和 onWorkflowItemChanged 方法以调用 checkStatus 方法。当工作流开始时,onWorkflowActivated 方法调用 checkStatus 方法以确定文档是否已评审。如果文档尚未评审,则工作流继续。保存文档时,onWorkflowItemChanged 方法再次调用 checkStatus 方法以确定文档是否已评审。如果 workflowPending 字段设置为 true,则工作流继续运行。

    Private Sub onWorkflowActivated(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ExternalDataEventArgs)
        checkStatus()
    End Sub
    
    Private Sub onWorkflowItemChanged(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ExternalDataEventArgs)
        checkStatus()
    End Sub
    
    private void onWorkflowActivated(object sender, ExternalDataEventArgs e)
    {
        checkStatus();
    }
    
    private void onWorkflowItemChanged(object sender, ExternalDataEventArgs e)
    {
        checkStatus();
    }
    
  5. 向 isWorkflowPending 方法中添加以下代码以检查 workflowPending 属性的状态。每次保存文档时,“whileActivity1”活动都会调用 isWorkflowPending 方法。此方法检查 ConditionalEventArgs 对象的 Result 属性,以确定“WhileActivity1”活动应继续还是完成。如果该属性设置为 true,则活动继续。否则,活动完成并且工作流也完成。

    Private Sub isWorkflowPending(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ConditionalEventArgs)
        e.Result = workflowPending
    End Sub
    
    private void isWorkflowPending(object sender, ConditionalEventArgs e)
    {
        e.Result = workflowPending;
    }
    

测试 SharePoint 工作流模板

启动调试器时,Visual Studio Tools for Office 将工作流模板部署到 SharePoint Server 2007,并将该工作流模板与“文档”列表相关联。若要测试工作流,请从“文档”列表中的某个文档启动工作流模板的一个实例。

测试 SharePoint 工作流模板

  1. 在“解决方案资源管理器”中右击“Workflow1.cs”或“Workflow1.vb”,然后单击“查看代码”。

  2. 在“onWorkflowActivated”方法旁设置一个断点。

  3. 按 F5。

    默认 SharePoint 站点的“文档”页将打开。

  4. 在“文档”页中单击“新建”创建一个新文档。

  5. 将该文档保存到默认位置。

    这会将该文档添加到“文档”列表中并启动工作流。

  6. 在 Visual Studio 中,确认调试器是否在 onWorkflowActivated 方法旁的断点处停止。

  7. 按 F5 继续执行。

  8. 关闭文档。

  9. 返回到默认 SharePoint 网站的“文档”页。

  10. 在“文档”页中,确认“MySharePointWorkflow”栏下方的值是否设置为“正在进行”。这指示工作流正在进行中,文档在等待评审。

  11. 在“文档”页中,指向该文档,单击下箭头,然后单击“编辑属性”。

  12. 将“Document Status”(文档状态)设置为“Review Complete”(评审完成),然后单击“确定”。

  13. 返回到默认 SharePoint 网站的“文档”页。

  14. 在“文档”页中,确认“MySharePointWorkflow”栏下方的值是否设置为“已完成”。这指示工作流已完成,文档已评审。

后续步骤

可从以下主题中了解有关如何创建工作流模板的更多信息:

请参见

任务

如何:在调试 SharePoint 解决方案时包括帮助器文件

SharePoint 顺序工作流示例

概念

SharePoint 工作流解决方案

调试 SharePoint 工作流解决方案

参考

SharePoint 工作流项目模板