Актуальность данных в объектной модели SharePoint
вторник, 15 июля 2008Эх не всё все так ладно порой как хотелось бы в объектной модели 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 |