【问题标题】:Invoke SharePoint Workflow after EventReceiver在 EventReceiver 之后调用 SharePoint 工作流
【发布时间】:2010-12-19 14:47:25
【问题描述】:

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

感谢您的帮助! 帕特里克

【问题讨论】:

    标签: event-handling sharepoint-2010 sharepoint-workflow eventreceiver


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      SPListItem:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多