如何:访问工作流中的工作流任务表单数据
上次修改时间: 2010年5月7日
适用范围: SharePoint Server 2010
创建工作流任务时,其属性数据来自 SPWorkflowTaskProperties 对象,此对象可通过 CreateTask 活动的 TaskProperties 属性进行访问。此对象包含每个工作流任务的标准信息,以及任务架构中包含的任何自定义属性。通过初始化您为 TaskProperties 属性指定的 SPWorkflowTaskProperties 对象变量,可以使用传递给工作流的任务数据。
备注
通过 TaskProperties 属性访问的 SPWorkflowTaskProperties 对象只是包含有关新创建的任务的初始化信息;它并未以任何方式动态绑定到任务本身。对任务所做的更改不会反映在存储于此 SPWorkflowTaskProperties 对象的数据中。
SPWorkflowTaskProperties 对象包含 SharePoint Foundation 中每个工作流任务的标准属性集,这些属性包括 AssignedTo、DueDate、StartDate 和 TaskType 等。
此外,此对象还包含一个哈希表(由 ExtendedProperties 属性表示),用于存储自定义任务属性。可以访问特定的自定义属性,方法是将该属性的名称作为 ExtendedProperties 属性的索引传递。
Microsoft SharePoint Server 2010 对哈希表中包含数据的任务字段后的每个自定义数据值进行命名。例如,如果工作流任务中有一个名为 comments 的文本字段,则该字段的数据在 ExtendedProperties 属性哈希表中具有的索引名称也为 comments。
备注
ExtendedProperties 哈希表由标准字段和自定义字段填充。但是,标准的工作流任务类型字段由 GUID 索引而不是其名称表示,以防止可能与同名的自定义字段发生名称冲突。我们建议您通过各自的属性来访问标准的工作流任务字段,而不是通过 ExtendedProperties 哈希表来访问这些字段。
通常,将与任务相关的每个活动的 TaskProperties 属性绑定到您为 CreateTask 活动(创建了该特定任务)的 TaskProperties 属性定义的对象变量。此对象变量用作将数据传入任务的管道。
有关设置活动属性的详细信息,请参阅 Windows Workflow Foundation SDK。
Microsoft InfoPath 2010 工作流任务表单中的数据不会直接传入工作流,因为此类数据将用于工作流关联或初始表单。相反,任务表单会直接更改与任务项中的表单架构对应的字段;这些更改仅在工作流等待 OnTaskChanged 事件时传入工作流。若要接收来自 InfoPath 表单的数据,您需要针对相应事件(例如 OnTaskChanged)的事件接收器活动。绑定到 OnTaskChanged 对象的 AfterProperties 属性的 SPWorkflowTaskProperties 对象将存储任务中已更改的字段(且仅限那些已更改的字段)。默认情况下,InfoPath 表单将使用与表单架构匹配的字段来更改任务。
访问工作流中的工作流任务表单数据
如果数据来自标准的工作流任务字段,则通过使用 SPWorkflowTaskProperties 对象的相应属性来访问它。
例如,假设将工作流任务的 OnTaskChanged 活动的 AfterProperties 的属性设置为名为 wfTaskProps 的 SPWorkflowTaskProperties 对象变量。为了访问 AssignedTo 属性,在代码中引用它,如下所示:
wfTaskProps.AssignedTo.ToString()
wfTaskProps.AssignedTo.ToString()
如果数据来自自定义字段,则通过将字段名称用作 SPWorkflowTaskProperties 对象的 ExtendedProperties 属性的索引值来访问它。
例如,若要访问名为 comments 的自定义属性,请如下所示在代码中引用它:
wfTaskProps.ExtendedProperties["comments"].ToString()
wfTaskProps.ExtendedProperties("comments").ToString()