演练:创建和调试 SharePoint 工作流解决方案
更新:2007 年 11 月
适用对象 |
---|
本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 项目类型
Microsoft Office 版本
有关更多信息,请参见按应用程序和项目类型提供的功能。 |
此演练演示如何创建基本的顺序工作流模板。工作流检查文档库的属性,以确定文档是否已评审。如果文档已评审,则工作流完成。
本演练阐释以下任务:
创建 SharePoint 2007 顺序工作流项目。
创建工作流时间表。
处理活动事件。
说明: |
---|
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 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 文档库中添加属性
在 Internet Explorer 中打开默认的 SharePoint Server 2007 网站。
说明: 默认情况下,SharePoint 站点位于 https://localhost。如果您将 https://localhost 映射到非 SharePoint 网站,将无法使用此演练中的步骤测试工作流模板。
单击“文档中心”选项卡。
在导航窗格中单击“文档”。
在“文档”页中单击“设置”,然后单击“文档库设置”。
在“自定义文档”页中,单击“栏”下的“创建栏”。
将该列命名为“Document Status”(文档状态),选择“选项(要从中选择的菜单)”,指定以下三个选项,然后单击“确定”:
Review Needed(需要评审)
Review Complete(评审完成)
Changes Requested(请求更改)
再创建两栏并将它们命名为“Assignee”(受理人)和“Review Comments”(评审注释)。将“Assignee”(受理人)一栏设置为单行文本格式,将“Review Comments”(评审注释)一栏设置为多行文本格式。
使文档无需签出即可编辑
如果无需签出文档即可进行编辑,则测试工作流模板会更容易一些。
使文档无需签出即可编辑
在“自定义文档”页中,单击“常规设置”下的“版本控制设置”。
对于“是否要求先签出文档然后再对其进行编辑”,选择“否”,然后单击“确定”。
关闭 Internet Explorer。
创建 SharePoint 顺序工作流项目
顺序工作流是顺序执行直到最后一个活动完成的一系列步骤。
创建 SharePoint 顺序工作流项目
启动 Visual Studio。
打开“新建项目”对话框,展开要使用的语言下的“Office”节点,然后选择“2007”节点。
在“模板”窗格中,选择“SharePoint 2007 顺序工作流”。
在“名称”框中,键入“MySharePointWorkflow”。如果您的 IDE 已设置为使用 Visual C# 开发设置或常规开发设置,则请输入位置和解决方案名称。
单击“确定”。
将显示“新建 Office SharePoint 工作流”向导。
在“指定要用于调试的工作流名称和站点”页上,单击“下一步”接受默认工作流名称和站点。
在“选择要在调试时使用的列表”页上,单击“下一步”接受默认的文档库、任务列表和历史记录列表,并自动将您的工作流模板与文档库关联起来。
在“您可以为工作流的启动方式指定条件”页上,单击“完成”接受默认选择。
创建工作流时间表
工作流模板包含一个或多个工作流时间表,这些时间表包含表示要执行的操作的活动。使用工作流设计器可以在时间表中安排活动。若要监视“文档”列表中某一文档的评审状态,请添加两个活动:HandleExternalEventActivity 和 Microsoft.SharePoint.WorkflowActions.OnWorkflowItemChanged。
创建工作流时间表
在“解决方案资源管理器”中,双击“Workflow1.cs”或“Workflow1.vb”在设计器中打开工作流时间表。
在设计器中,单击选择“OnWorkflowActivated1”活动。
在“属性”窗口中,在“Invoked”属性旁键入“onWorkflowActivated”,然后按 Enter。
代码编辑器将会打开,一个名为“onWorkflowActivated”的事件处理程序方法被添加到 Workflow1 代码文件中。
在设计器中重新打开工作流时间表。
在“视图”菜单上单击“工具箱”。
从“工具箱”的“Windows Workflow v3.0”选项卡中,将一个“While”活动拖动到“onWorkflowActivated1”活动下。
单击选择“WhileActivity1”活动。
在“属性”窗口中,将“Condition”设置为“Code Condition”。
展开“Condition”属性,在“Condition”属性旁键入“isWorkflowPending”,然后按 Enter。
代码编辑器将会打开,一个名为“isWorkflowPending”的方法被添加到 Workflow1 代码文件中。
在设计器中重新打开工作流时间表。
从“工具箱”的“SharePoint 工作流”选项卡中,将一个“OnWorkflowItemChanged”活动拖到“whileActivity1”活动中。
单击选择“onWorkflowItemChanged1”活动。
在“属性”窗口中,如下表所示设置属性。
属性
值
CorrelationToken
workflowToken
Invoked
onWorkflowItemChanged
处理活动事件
最后一步是检查每个活动后文档的状态。如果文档已评审,则工作流完成。
处理活动事件
在“解决方案资源管理器”中右击“Workflow1.cs”或“Workflow1.vb”,然后单击“查看代码”。
在 Workflow1 类的顶部添加下面的字段。您将在活动中使用此字段确定工作流是否完成。
Dim workflowPending As Boolean = True
Boolean workflowPending = true;
将下面的方法添加到 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; }
将下面的代码添加到 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(); }
向 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 工作流模板
在“解决方案资源管理器”中右击“Workflow1.cs”或“Workflow1.vb”,然后单击“查看代码”。
在“onWorkflowActivated”方法旁设置一个断点。
按 F5。
默认 SharePoint 站点的“文档”页将打开。
在“文档”页中单击“新建”创建一个新文档。
将该文档保存到默认位置。
这会将该文档添加到“文档”列表中并启动工作流。
在 Visual Studio 中,确认调试器是否在 onWorkflowActivated 方法旁的断点处停止。
按 F5 继续执行。
关闭文档。
返回到默认 SharePoint 网站的“文档”页。
在“文档”页中,确认“MySharePointWorkflow”栏下方的值是否设置为“正在进行”。这指示工作流正在进行中,文档在等待评审。
在“文档”页中,指向该文档,单击下箭头,然后单击“编辑属性”。
将“Document Status”(文档状态)设置为“Review Complete”(评审完成),然后单击“确定”。
返回到默认 SharePoint 网站的“文档”页。
在“文档”页中,确认“MySharePointWorkflow”栏下方的值是否设置为“已完成”。这指示工作流已完成,文档已评审。
后续步骤
可从以下主题中了解有关如何创建工作流模板的更多信息:
若要了解有关 SharePoint 工作流活动的更多信息,请参见 Windows SharePoint Services 的工作流活动概述。
若要了解有关 Windows Workflow Foundation 活动的更多信息,请参见 System.Workflow.Activities 命名空间。
请参见
任务
如何:在调试 SharePoint 解决方案时包括帮助器文件