工作流任务表单 (Microsoft SharePoint Server 2010)

上次修改时间: 2010年4月7日

适用范围: SharePoint Server 2010

可以为工作流中的任务指定自定义表单。由于工作流任务是获分配内容类型的 SharePoint 项目,因此,内容类型决定着要用于工作流中的任务类型的自定义表单。

有关工作流任务编辑表单的更多概念性信息,请参阅 Microsoft SharePoint 2010 软件开发工具包 (SDK) 中的工作流任务表单 (SharePoint Foundation)

指定工作流任务表单

若要为工作流任务指定 Microsoft InfoPath 2010 编辑表单,请执行下列操作:

  1. 在工作流定义文件中,将 Workflow 元素的 TaskListContentTypeId 属性设置为下面的内容类型:

    TaskListContentTypeId="0x01080100C9C9515DE4E24001905074F980F93160"  
    

    Microsoft SharePoint Server 2010 中包含的此内容类型指定自定义任务显示和编辑表单,它们包含一个用于呈现 InfoPath 表单的 Office Forms Server 控件。

  2. 将一个元素添加到工作流模板定义的 Metadata 元素中。此元素是 TaskID_FormURN 元素(工作流),其中 N 表示已分配给工作流中的该任务类型的整数。将此元素设置为要用于此任务的 InfoPath 2010 表单的 URN。例如:

    <MetaData>
      …
      <Task0_FormURN>urn:schemas-adventureworks-com:workflow:ReviewRouting-Review</Task0_FormURN>
      …
    </MetaData>
    

    若要区分工作流创建的任务类型,请给该工作流中的每个任务类型指定一个整数标识符。第一个任务类型是 0,第二个是 1,依次类推。这使您能够将不同的内容类型和不同的表单指定给每个任务类型。这些任务类型标识符在给定的工作流中必须是唯一的。例如,创建一个任务的任何工作流具有"任务 0"任务类型;但是,任务类型在所有工作流中不必相同。

有关工作流定义架构的详细信息,请参阅 Microsoft SharePoint 2010 软件开发工具包 (SDK) 中的工作流定义

工作流任务表单处理

当用户单击链接以编辑或显示工作流任务时,SharePoint Server 2010 会检查 Workflow 元素的 TaskListContentTypeId 属性,以确定任务内容类型。它接着检查内容类型定义,以确定是否指定了自定义表单。如果将 InfoPath 编辑表单用于工作流任务,则您已将内容类型设置为指定自定义任务显示和编辑表单的类型,该表单包含一个用于呈现 InfoPath 表单的 Office Forms Server 控件。SharePoint Server 2010 加载此自定义表单,而此表单会根据 SharePoint Server 2010 传给它的任务 ID 检查适当的 TaskID_FormURN 元素(工作流) 元素。自定义页随后为任务类型加载指定的表单。

此页还检索表示任务的 SPListItem 对象的 XML 属性的内容,并将其作为辅助数据源传给表单。

当用户将他们的更改提交给表单时,承载页会调用 AlterTask 方法,将 SPListItem 对象和更新的数据作为参数传递。此方法使用指定的 XML 更新指定的 SPListItem 对象。

SharePoint Server 2010 处理在 AlterTask 方法中传入的 XML,并按以下方式传递 SPItem 方法:如果该 XML 中的某个命名属性匹配 SPWorkflowTask 对象中的属性,SharePoint Server 2010 会将该 XML 属性值提升到匹配的对象属性中。任何不匹配 SPWorkflowTask 对象的属性的 XML 属性被连接在一起,并存储在有关此对象的"溢出"字段中。可以使用 GetExtendedPropertiesAsHashtable 方法来访问此数据。

为了便于编程,我们强烈建议开发人员为其任务类型创建内容类型,并且每个任务内容类型的架构完全匹配指定给它的编辑任务表单的架构。这种方法提供一对一的属性映射,而且不需要分析"溢出"字段就能提取其他值。

在调用 AlterTask 方法时,SharePoint Server 2010 会引发 OnTaskChanged 事件。若要处理此事件,请将 OnTaskChanged 事件活动添加到工作流中。此事件的 AfterProperties 属性包含已更改的任务属性。

请参阅

任务

如何:设计 InfoPath 工作流表单

如何:访问工作流中的工作流任务表单数据

如何:设计工作流任务表单以使用任务数据

概念

SharePoint Server 2010 中的工作流

工作流的 InfoPath 表单

工作流关联和初始表单 (Microsoft SharePoint Server 2010)

工作流修改表单 (Microsoft SharePoint Server 2010)

工作流任务表单 (Microsoft SharePoint Server 2010)

其他资源

Workflow Definition Schema for InfoPath Forms