1

我有一个关于共享点工作流程和事件接收器的问题。我有一个在元素上设置元数据的事件接收器。之后,我使用工作流将项目元数据复制到列表中。不幸的是,工作流不会复制事件接收器设置的元数据。我想是因为它是在事件接收器之前执行的。是否有可能更改顺序,以便在事件接收器之后执行工作流?接收者以同步方式绑定到 ItemAdded 和 ItemUpdated 事件。

谢谢您的帮助!帕特里克

4

2 回答 2

2

您可以使用 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

于 2010-12-20T06:13:53.383 回答
0

SPListItem:

“同步”事件(-ing 结尾,如 ItemAdd*ing*),总是在工作流之前执行。

“异步”事件(像 ItemAdd*ed* 这样的 -ed 结尾)总是在工作流执行之后执行。

因此,您必须将 Elements.xml 文件的“同步”属性设置为“同步”,并且工作流将始终在事件接收器之后执行。

注意:默认情况下,添加和更新的事件是异步运行的,因此您必须在 Elements.xml 中进行更改。

于 2014-01-24T14:43:32.173 回答