此演练演示如何创建基本的顺序工作流模板。工作流检查共享文档库的属性,以确定文档是否已评审。如果文档已评审,则工作流完成。
本演练阐释了以下任务:
在 Visual Studio 中创建 SharePoint 列表定义顺序工作流项目。
创建工作流活动。
处理工作流活动事件。
![]() |
---|
虽然本演练使用的是顺序工作流项目,但过程与状态机工作流项目的过程相同。 另外,以下说明中的某些 Visual Studio 用户界面元素在您的计算机上出现的名称或位置可能会不同。您安装的 Visual Studio 版本以及使用的设置决定了这些元素。有关更多信息,请参见Visual Studio 设置。 |
系统必备
您需要以下组件来完成本演练:
支持的 Microsoft Windows 和 SharePoint 版本。有关更多信息,请参见开发 SharePoint 解决方案的要求。
Visual Studio。
向 SharePoint 共享文档库中添加属性
为跟踪**“共享文档”库中文档的评审状态,我们将为 SharePoint 网站上的共享文档创建三个新属性:Status、Assignee 和 Review Comments。我们在“共享文档”**库中定义这些属性。
向 SharePoint 共享文档库中添加属性
在 Web 浏览器中打开一个 SharePoint 网站,如 http://<系统名称>/SitePages/Home.aspx。
在快速启动栏上,选择 *** 共享 ****** 文档 ***。
选择在 *** 库工具 *** 功能区的 *** 库 *** 然后在功能区上的 *** 创建列 *** 按钮创建一个新列。
将该列命名为"文档状态,将其类型设置为 *** 选择(选择的菜单从) ***,指定以下三个选择,然后选择 *** 好 *** 按钮:
需要评审
评审完成
请求更改
再创建两列并将它们命名为“受理人”和“评审注释”。将“受理人”列类型设置为单行文本,将“评审注释”列类型设置为多行文本。
使文档无需签出即可编辑
如果无需签出文档即可进行编辑,则测试工作流模板会更容易一些。在下一个过程中,您将配置 SharePoint 网站以达到此目的。
使文档无需签出即可编辑
在快速启动栏上,选择 *** 共享文档 *** 链接。
在 *** 库工具 *** 功能区,选择 *** 库 *** 选项卡,然后选择 *** 库设置 *** 按钮显示 *** 文档库设置 *** 页。
在 *** 常规设置 *** 部分中,选择 *** 版本控制设置 *** 链接显示 *** 版本控制设置 *** 页。
验证**“要求先签出文档然后再对其进行编辑”的设置是否为“否”**。如果不是,将其更改为 *** 否 *** 然后选择 *** 好 *** 按钮。
关闭浏览器。
创建 SharePoint 顺序工作流项目
顺序工作流是按顺序执行直到最后一个活动完成的一组步骤。在此过程中,我们将创建一个将应用于“共享文档”列表的顺序工作流。利用此工作流向导,您可以将工作流与网站定义或列表定义关联,并可以确定工作流的启动时间。
创建 SharePoint 顺序工作流项目
启动 Visual Studio。
在菜单栏上,依次选择 *** 文件 ***,新建,项目 显示 *** 新项目 *** 对话框。
外接 *** SharePoint *** 节点。*** visual C# *** 或 ***** Visual Basic *****下,然后选择 *** 2010年 *** 节点。
在 *** 模板 *** 窗格中,选择 *** SharePoint 2010项目 *** 模板。
在 名称 框中,键入MySharePointWorkflow然后选择 *** 好 *** 按钮。
这将显示**“SharePoint 自定义向导”**。
在 *** 指定用于调试的网站和安全级别 *** 页上,选择 *** 部署为场解决方案 *** 选项按钮,然后选择 *** 完成 *** 按钮接受信任级别和默认网站。
此步骤会将解决方案的信任级别设置为场解决方案(工作流项目的唯一可用选项)。有关更多信息,请参见沙盒解决方案注意事项。
在 *** 解决方案资源管理器 ***,选择项目节点,然后,在菜单栏上,选择 项目,*** 添加新项目 ***。
在 *** visual C# *** 或 ***** Visual Basic *****下,展开 *** SharePoint *** 节点,然后选择 *** 2010年 *** 节点。
在 *** 模板 *** 窗格中,选择 *** 顺序工作流(仅场解决方案) *** 模板,然后选择 *** 添加 *** 按钮。
这将显示**“SharePoint 自定义向导”**。
在**“指定用于调试的工作流名称”页上,接受默认名称(“MySharePointWorkflow - Workflow1”)。保留默认工作流模板类型值,*** 列出工作流 *****,然后选择 *** 接下来 *** 按钮。
在 *** 在调试会话中您是否自动关联的Visual Studio工作流? *** 页上,选择 *** 接下来 *** 按钮接受任何默认设置。
此步骤会自动将工作流与共享文档库关联。
在 *** 为您的工作流如何指定启动条件 *** 页上,将默认选项保持选中状态在 *** 所需工作流启动? *** 部分并选择 *** 完成 *** 按钮。
可利用此页指定工作流启动的时间。默认情况下,当用户在 SharePoint 中手动启动工作流时,或在创建与工作流关联的项时,工作流将启动。
创建工作流活动
工作流包含一个或多个表示要执行的操作的活动。使用工作流设计器可为工作流安排活动。在此过程中,我们将向工作流中添加两个活动:HandleExternalEventActivity 和 OnWorkFlowItemChanged。这些活动将监视**“共享文档”**列表中文档的评审状态。
创建工作流活动
工作流应显示在工作流设计器中。如果不是这样,请打开 *** Workflow1.cs *** 或 *** Workflow1.vb *** 在 *** 解决方案资源管理器 ***。
在设计器中,选择 *** OnWorkflowActivated1 *** 事件。
在 属性 窗口中,键入onWorkflowActivated在 *** 调用 *** 属性旁边,然后选择enter键。
代码编辑器将会打开,一个名为“onWorkflowActivated”的事件处理程序方法被添加到 Workflow1 代码文件中。
切换回工作流设计器,打开工具箱,然后展开**“Windows Workflow v3.0”**节点。
在 ***** 工具箱 *****的 *** Windows workflow v3.0 *** 节点,请执行下列操作之一组步骤:
打开 *** while *** 事件的快捷菜单,然后选择 复制。在工作流设计器,打开行的快捷菜单在 *** onWorkflowActivated1 *** 活动下方,然后选择 *** 粘贴 ***。
从拖到 *** 工具箱 *** 的 *** while *** 事件对工作流设计器,并连接到事件。行。*** onWorkflowActivated1 *** 事件。
选择 *** WhileActivity1 *** 事件。
在 属性 窗口中,将设置为 *** 情况 *** 代码行为。
外接 *** 情况 *** 属性,则子 *** 情况 *** 属性旁键入isWorkflowPending,然后选择enter键。
代码编辑器将会打开,一个名为 isWorkflowPending 的方法被添加到 Workflow1 代码文件中。
切换回工作流设计器,打开工具箱,然后展开**“SharePoint 工作流”**节点。
在 ***** 工具箱 *****的 *** SharePoint工作流 *** 节点,请执行下列操作之一组步骤:
打开 *** OnWorkflowItemChanged *** 事件的快捷菜单,然后选择 复制。在工作流设计器,打开行的快捷菜单在 *** whileActivity1 *** 事件中,然后选择 *** 粘贴 ***。
从拖到 *** 工具箱 *** 的 *** 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) { // Check the status. checkStatus(); } private void onWorkflowItemChanged(object sender, ExternalDataEventArgs e) { // Check the status. 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 将工作流模板部署到 SharePoint Server,并将该工作流与**“共享文档”列表相关联。若要测试工作流,请从“共享文档”**列表中的某个文档启动工作流的一个实例。
测试 SharePoint 工作流模板
在 Workflow1.cs 或 Workflow1.vb 中,在**“onWorkflowActivated”**方法旁设置一个断点。
选择F5键生成并运行解决方案。
SharePoint 网站将出现。
在SharePoint中的导航窗格中,选择 *** 共享文档 *** 链接。
在 *** 共享文档 *** 页上,选择在 *** 库工具 *** 选项的 *** 文档 *** 链接,然后选择 *** 上载文档 *** 按钮。
在 *** 上载文档 *** 对话框中,选择 浏览 按钮,选择任何文件,选择 打开 按钮,然后选择 *** 好 *** 按钮。
这会将选定文档上载到**“共享文档”**列表中并启动工作流。
在 Visual Studio 中,确认调试器是否在 onWorkflowActivated 方法旁的断点处停止。
选择F5键继续执行。
您可以在此处更改文档的设置,但是,暂时保留它们在默认通过选择 *** 保存 *** 按钮。
这将返回到默认 SharePoint 网站的**“共享文档”**页。
在 *** 共享文档 *** 页上,确认在 *** MySharePointWorkflow – Workflow1 *** 列中的值设置为 *** 正在进行 ***。这指示工作流正在进行中,文档在等待评审。
在 *** 共享文档 *** 页上,选择文档,选择显示的箭头,然后选择 *** 编辑属性 *** 菜单项。
设置 *** 存档状态 *** 到 *** 查看完整 ***,然后选择 *** 保存 *** 按钮。
这将返回到默认 SharePoint 网站的**“共享文档”**页。
在 *** 共享文档 *** 页上,确认在 *** 存档状态 *** 列中的值设置为 *** 查看完整 ***。刷新 *** 共享文档 *** 页并验证在 *** MySharePointWorkflow – Workflow1 *** 列中的值设置为 *** 完成 ***。这指示工作流已完成,文档已评审。
后续步骤
可从以下主题中了解有关如何创建工作流模板的更多信息:
若要了解有关 SharePoint 工作流活动的更多信息,请参见 Workflow Activities for SharePoint Foundation(SharePoint Foundation 的工作流活动)。
若要了解有关 Windows Workflow Foundation 活动的更多信息,请参见 System.Workflow.Activities Namespace(System.Workflow.Activities 命名空间)。