Эх не всё все так ладно порой как хотелось бы в объектной модели SharePoint-а  с актуальностью данных.

История:

Руками создаём site collection и пытаемся активировать некую фичу (далее Ф1), которая в свою очередь зависима от другой фичи Ф2 (она содержит  определение workflowtemplate). И вот собственно, на активацию Ф1 вешаем FeatureReceiver, который поднимает из RootWeb WorkflowTemplate (определение которого определен в фиче Ф2) и далее осуществляет с ним некие магические действия.

Т.е. примерно так:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{

  Microsoft.SharePoint.SPSite spSite = (Microsoft.SharePoint.SPSite)properties.Feature.Parent;

  Microsoft.SharePoint.SPWeb spWeb = spSite.RootWeb;

  SPWorkflowTemplate spWorkflowTemplate =
    spWeb.WorkflowTemplates[new Guid("{FB3EBAFA-5B08-402c-B4F2-4CC1A66C21FA}")];

  ...

}

И вся история в том что spWeb не содержит  WorkflowTemplate, который определён в Ф2 (хотя Ф2 активируется, т.е. WorkflowTemplate добавляется)

Если  же сделать как-нибудь так:

using (SPWeb spWeb2 = spSite.OpenWeb(spWeb.ID))

{
  SPWorkflowTemplate spWorkflowTemplate =
    spWeb2.WorkflowTemplates[new Guid("{FB3EBAFA-5B08-402c-B4F2-4CC1A66C21FA}")];

}

то  всё отлично. Но надо быть осторожным, ибо коли наделать каких-либо изменений объекте spWeb то в дальнейшем при обращении к spSite.RootWeb он скорее всего свалится с ошибкой, что объект был изменён.

Комментарии

rss

Комментаформа

For spam filtering purposes, please copy the number 1443 to the field below:

Навигационное древо

Каталог

Будет всякого разного:
Copyright © 2007 Шапель Павел.
Powered  by