65.9K
CodeProject 正在变化。 阅读更多。
Home

SharePoint 2010 状态机工作流,带自定义任务表单(InfoPath),使用 VS 2010 - 第 3 部分,共 3 部分

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2012年12月3日

CPOL

3分钟阅读

viewsIcon

33750

downloadIcon

586

使用 InfoPath 任务表单构建自定义 SharePoint 2010 工作流。

第 1 部分: 构建自定义 SharePoint 2010 工作流

第 2 部分: 配置和部署自定义 InfoPath 任务窗体

第 3 部分: 从 SharePoint 工作流发送数据到 InfoPath 窗体   

介绍  

在本教程的第 3 部分中,我将解释从工作流发送数据到任务窗体 (InfoPath) 的过程。在本教程的第 2 部分中,我解释了如何通过使用任务属性的扩展属性从 InfoPath 窗体中检索工作流中的数据。我们将使用任务属性对象将数据从工作流发送到 InfoPath 窗体。

实施

要将数据发送到 InfoPath 窗体,我们需要一个名为 ItemMetadata.xml 的 XML 文件。 ItemMetadata.xml 文件区分大小写,因此请确保文件名完全相同。此文件定义了任务架构。

SharePoint 在窗体的加载事件时将任务数据推送到编辑窗体。 我们会将 ItemMetadata.xml 作为辅助数据源添加到我们的 InfoPath 窗体。 无论是否使用 ItemMetadata.xml,都应始终将此文件添加为辅助数据源。

创建 ItemMetadata.xml 

要创建 ItemMetadata.xml,请在任务编辑器中添加以下 XML 元素。

<z:row xmlns:z="#RowsetSchema"/>

要从 SharePoint 工作流推送到 InfoPath 窗体的每个属性都将添加到上面的 XML 元素中。

要添加属性,请添加一个以 ows 开头的属性,然后添加一个“_”,后跟任务元素的名称。 我已将 ItemMetadata.xml 的内容定义如下。

<z:row xmlns:z="#RowsetSchema"
ows_title="" 
ows_technology="" 
ows_experience=""
/>  

将文件添加为辅助数据源 

设计模式下打开 InfoPath 窗体。 在数据选项卡中,单击数据连接菜单。 在“数据连接”对话框中,单击添加以配置辅助数据源。

向导的下一步骤将获取有关连接类型的信息。 选择接收数据单选按钮,然后单击下一步

在下一个窗口中,选择 XML 文档单选按钮,然后单击下一步

现在,在文件系统中浏览 ItemMetadata.xml 文件,然后单击下一步

在下一步中,选择将数据作为资源文件包含在表单模板中,然后单击下一步

数据连接应命名为 ItemMetadata。 选中打开窗体时自动检索数据复选框,然后单击“完成”。 现在,ItemMetadata.xml 文件已作为资源文件嵌入到 InfoPath 窗体中。 因此,不需要将 ItemMetadata.xml 与工作流一起部署。 我只是为了参考将文件添加到工作流的 Forms 文件夹中。

将控件绑定到任务架构

在 InfoPath 窗体上,放置要绑定到任务架构的控件。 在示例中,我使用了文本框控件来绑定数据。 为了确保任务数据不会更改,我将其设置为只读,并将文本框控件的背景颜色更改为灰色。

右键单击控件,然后单击文本框属性。 在对话框中,选择数据选项卡,然后单击默认值文本框旁边的公式按钮。

插入公式对话框中,单击插入字段或组。 在选择字段或组对话框中,在字段下拉列表中选择 ItemMetadata 连接。 现在选择您要将控件数据绑定的数据连接中的字段,然后单击确定。 单击确定关闭所有对话框。


  

配置 Visual Studio 工作流

在工作流中,我们必须在任务的 MethodInvoking 事件中,即在我们创建任务时,将数据传递给 InfoPath 窗体。 我们将使用 ExtendedProperties 字典将数据上传到 InfoPath 窗体。 使用以下代码将值添加到 ExtendedProperties。

if (listItem != null)
{
       this.createTaskInitialClearanceTaskProperties.ExtendedProperties["ows_title"] 
                        = listItem["Title"].ToString();
       this.createTaskInitialClearanceTaskProperties.ExtendedProperties["ows_technology"] 
                        = listItem["Technology"].ToString();
       this.createTaskInitialClearanceTaskProperties.ExtendedProperties["ows_experience"] 
                        = listItem["Experience"].ToString();
}  

部署工作流程。

© . All rights reserved.