在本教程的第三部分,将解释如何将数据从工作流发送到任务表单(InfoPath)。在第二部分中,解释了如何通过使用任务属性的扩展属性从工作流中检索InfoPath表单的数据。将使用任务属性对象将数据从工作流发送到InfoPath表单。
要将数据发送到InfoPath表单,需要一个名为ItemMetadata.xml的XML文件。ItemMetadata.xml文件是区分大小写的,因此请确保文件名完全相同。此文件定义了任务模式。 SharePoint在表单的加载事件上将任务数据推送到编辑表单。将把ItemMetadata.xml作为次要数据源添加到InfoPath表单中。无论是否使用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与工作流一起部署。将文件添加到工作流的表单文件夹中,仅供参考。
在InfoPath表单上,放置想要绑定到任务模式的控件。在示例中,使用了文本框控件来绑定数据。为确保任务数据不被更改,将其设置为只读,并更改了文本框控件的背景颜色为灰色。
右键单击控件,然后单击文本框属性。在对话框中,选择数据选项卡,然后单击默认值文本框旁边的公式按钮。
在插入公式对话框中,单击插入字段或组。在选择字段或组对话框中,选择字段下拉列表中的ItemMetadata连接。现在选择想要将控件数据绑定到的字段,然后单击确定。通过单击确定关闭所有对话框。
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();
}