我有一个关于共享点工作流程和事件接收器的问题。我有一个在元素上设置元数据的事件接收器。之后,我使用工作流将项目元数据复制到列表中。不幸的是,工作流不会复制事件接收器设置的元数据。我想是因为它是在事件接收器之前执行的。是否有可能更改顺序,以便在事件接收器之后执行工作流?接收者以同步方式绑定到 ItemAdded 和 ItemUpdated 事件。
谢谢您的帮助!帕特里克
我有一个关于共享点工作流程和事件接收器的问题。我有一个在元素上设置元数据的事件接收器。之后,我使用工作流将项目元数据复制到列表中。不幸的是,工作流不会复制事件接收器设置的元数据。我想是因为它是在事件接收器之前执行的。是否有可能更改顺序,以便在事件接收器之后执行工作流?接收者以同步方式绑定到 ItemAdded 和 ItemUpdated 事件。
谢谢您的帮助!帕特里克
您可以使用 SPWorkFlowAssociation 运行与 List 或 Content Type 关联的工作流。示例(添加项目后运行工作流)
public override void ItemAdded(SPItemEventProperties properties)
{
SPList parentList = properties.ListItem.ParentList;
SPWorkflowAssociation associationTemplate =
parentList.WorkflowAssociations.GetAssociationByName("Your Workflow Name",
new CultureInfo
(Convert.ToInt32(parentList.ParentWeb.RegionalSettings.LocaleId)));
SPSite siteCollection = properties.ListItem.ParentList.ParentWeb.Site;
siteCollection.WorkflowManager.StartWorkflow(properties.ListItem,
associationTemplate, String.Empty);
}
有关 SPWorkflowAssociation 的更多信息查看以下链接
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation.aspx
SPListItem:
“同步”事件(-ing 结尾,如 ItemAdd*ing*),总是在工作流之前执行。
“异步”事件(像 ItemAdd*ed* 这样的 -ed 结尾)总是在工作流执行之后执行。
因此,您必须将 Elements.xml 文件的“同步”属性设置为“同步”,并且工作流将始终在事件接收器之后执行。
注意:默认情况下,添加和更新的事件是异步运行的,因此您必须在 Elements.xml 中进行更改。