我有一个关于sharepoint工作流程和事件接收器的问题。我有一个事件接收器,它在元素上设置元数据。之后,我使用工作流将项目元数据复制到列表中。遗憾的是,工作流程不会复制事件接收器设置的元数据。我认为因为它是在事件接收者之前执行的。是否有可能更改顺序,以便工作流程将在事件接收器之后执行?接收器以同步的方式绑定到ItemAdded和ItemUpdated事件。
感谢您的帮助! 帕特里克
答案 0 :(得分:2)
您可以使用SPWorkFlowAssociation运行与列表或内容类型关联的工作流。 示例(添加项目后运行工作流程)
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
答案 1 :(得分:0)
SPListItem:
“Synchronous”事件(以ItemAdd * ing *结尾)始终在工作流程之前执行。
“Asynchronous”事件(-ed结束如ItemAdd * ed *)总是在执行工作流后执行。
因此,您必须将Elements.xml文件的“Synchronization”属性设置为“Synchronous”,并且工作流将始终在事件接收器之后执行。
注意:默认情况下,添加和更新的事件是异步运行的,因此您必须在Elements.xml中进行更改。