工作流修改表单 (SharePoint Foundation)
上次修改时间: 2010年4月8日
适用范围: SharePoint Foundation 2010
您可能希望使用户在工作流运行于某个项目时能够更改工作流的某些点。例如,您可能希望使用户能够将其任务分配给其他人或者将特定任务添加到工作流。提供给用户以便在工作流运行于某个项目时更改工作流的选项称为修改。
您可以创建使用户能够指定修改参数的修改表单。
在设计工作流时,可以通过向工作流添加 EnableWorkflowModification 活动来创建修改。是否可以修改取决于 EnableWorkflowModification 活动添加到的 EventHandlingScope 活动。定义修改时,会为该特定修改在工作流状态页上添加一个链接。当 EventHandlingScope 包含活动随工作流的运行进入范围时,Microsoft SharePoint Foundation 使用户可以使用修改链接。当包含活动离开范围时,Windows SharePoint Services 从工作流状态页移除修改链接。
工作流状态页上的修改链接将用户定向到工作流修改表单。
指定修改表单
在工作流中使用的每个修改表单必须有自己的 GUID。SharePoint Foundation 使用此 GUID 将用户选择的修改与相应的表单相匹配。
若要指定修改表单,必须设置三个数据:
将 EnableWorkflowModification 活动的 ModificationID 属性设置为针对您的修改而生成的 GUID。
在工作流模板定义中,将 Workflow 元素的 ModificationURL 属性设置为要使用的修改表单。
如果工作流包括多个修改,则可以对使用此属性指定的表单进行编程,以执行以下操作:
基于传递到此表单的修改标识符,显示表单的不同视图。
基于传递到此表单的修改标识符,重定向到其他表单。
备注
SharePoint Foundation 支持工作流模板定义中的绝对路径或相对于服务器的路径。您必须用其中一种格式来表示所有的表单路径 URL。例如,您可以使用绝对路径(如 "http://site/library/page.aspx"),也可以使用相对于服务器的路径(如 "/layouts/page.aspx")。SharePoint Foundation 不支持工作流模板定义中的链接地址。
在工作流模板定义中,添加 Modification_guid_Name 元素,其中的 guid 是针对您修改而生成的 GUID。将此元素设置为您要为修改指定的名称。SharePoint Foundation 会将此名称显示为工作流状态页上的修改链接的链接文本。例如:
<Modification_GUID_Name>Add a New Reviewer</Modification_GUID_Name>
修改表单处理
当特定的 EnableWorkflowModification 活动进入范围时,工作流将调用 EnableWorkflowModification 方法并将两条数据作为参数传递给 SharePoint Foundation:
修改表单的 GUID,存储在活动的 ModificationId 属性中。
以字符串形式传递给修改表单的信息;这些信息大部分是数据上下文,存储在活动的 ContextData 属性中。
备注
工作流开发人员必须生成包含要在 EnableWorkflowModification 方法中传递的上下文数据的字符串。为了便于编程,我们建议开发人员为其创建的每个修改创建一个对象。每个修改对象应具有与修改表单的主要数据源架构完全匹配的 XML 序列化架构。
SharePoint Foundation 检查工作流模板定义 XML 以确定修改的名称,并将此名称用作它向工作流状态页添加的修改链接的链接文本。
在 SharePoint 对象模型中,当前可用于工作流实例的修改将列在 SPWorkflowModificationCollection 对象中。
如果用户单击某个给定的修改链接,则 SharePoint Foundation 会检查工作流模板定义 XML,特别是 Workflow 元素的 ModificationURL,它指定要显示的修改表单。SharePoint Foundation 加载该表单并从 EnableWorkflowModification 活动传递上下文数据。
修改表单开发人员必须对当用户提交修改表单时所执行的操作进行编程。在大多数情况下,该表单调用 ModifyWorkflow 方法并传递工作流实例 ID、SPWorkflowModification 对象以及(可选项)更新的上下文信息。此操作将随之修改正在运行的工作流实例。
若要处理工作流修改事件,请将 OnWorkflowModified 事件活动添加到工作流。SharePoint Foundation 将在调用 ModifyWorkflow 方法时引发此事件活动。此活动在 EventHandlingScope 活动的事件处理程序中使用时最有用。SharePoint Foundation 会将修改上下文数据传递给事件活动。
工作流开发人员还必须分析作为字符串传递给 OnWorkflowModified 事件活动的上下文数据。