1

我正在使用 sharepoint 2010,但我被卡住了。我有一个具有 FeatureAcitvated 方法的功能。在这种方法中,我有一个类,我希望它具有启动我创建的工作流的代码。

所以我做了这个

 foreach (SPListItem item in itemCollection)
     {
      SPWorkflowAssociation wfAssoc = listItem.ParentList.WorkflowAssociations[new Guid("0768433d-23b1-4797-be66-fefc486e7e08")];
     }

然而它始终为空。它永远找不到我的工作流程。当我查看 WorkflowAssociations 时,它只计算了一些我认为可能是内置的工作流之一。

所以我想知道我的工作流程是在这个时候生成的吗?还是在功能 EventReceiver 类被触发后创建它?

我通过 Visual Studios 2010 将我的工作流程创建为列表工作流程

4

1 回答 1

1

我认为这段代码将解决您的问题。您需要做的第一件事是获取工作流模板与列表的关联。列表只需要一次,而不是每个项目一次。然后循环遍历每个项目,并使用网站集的 WorkflowManager 属性启动每个项目的工作流。

var assoc = list.WorkflowAssociations[new Guid("...")];
var manager = site.WorkflowManager;
foreach (SPListItem item in list.Items) 
{ 
    manager.StartWorkflow(item, assoc, assoc.AssociationData, true); 
}
于 2011-05-11T02:21:09.147 回答