Инициализация контекста объектов

После подключения к серверу Docsvision, создания пользовательской сессии, может быть создан контекст объектов для работы с методами API уровня бизнес-логики.

Создавать контекст объектов не требуется, если:
  • Пишется код для скрипта карточки, т.к. в этом случае готовый контекст объектов может быть получен непосредственно из класса скрипта.

  • Предполагается использовать исключительно методы базового API.

Чтобы инициализировать контекст объектов, потребуется:
  1. Получить экземпляр класса ObjectContext — сущность контекста объектов.

  2. Используя платформенные сервисы, загрузить в контекст объектов преобразователи данных и необходимые сервисы.

Создание и инициализация контекста объектов является затратной операцией с точки зрения потребления аппаратных ресурсов. Рекомендуется использовать созданный и проинициализированный контекст объектов, а не создавать новый.

Далее приведён полный код инициализации контекста объектов для возможности работы с системными карточками и карточками библиотеки Базовые объекты.

Разверните, чтобы увидеть полностью:
ObjectContext CreateObjectContext(UserSession userSession)
{
 var sessionContainer = new ServiceContainer();
 sessionContainer.AddService(typeof(UserSession), userSession);

 var objectContext = new ObjectContext(sessionContainer);

 var mapperFactoryRegistry = objectContext.GetService<IObjectMapperFactoryRegistry>();
 mapperFactoryRegistry.RegisterFactory(typeof(SystemCardsMapperFactory));
 mapperFactoryRegistry.RegisterFactory(typeof(BackOfficeMapperFactory));
 mapperFactoryRegistry.RegisterFactory(typeof(Docsvision.WorkerService.ObjectModel.Mapping.WorkerServiceMapperFactory));


 var serviceFactoryRegistry = objectContext.GetService<IServiceFactoryRegistry>();
 serviceFactoryRegistry.RegisterFactory(typeof(BackOfficeServiceFactory));
 serviceFactoryRegistry.RegisterFactory(typeof(SystemCardsServiceFactory));
 serviceFactoryRegistry.RegisterFactory(typeof(Docsvision.WorkerService.ObjectModel.Services.WorkerServiceServiceFactory));


 objectContext.AddService<IPersistentStore>(DocsVisionObjectFactory.CreatePersistentStore(new SessionProvider(userSession), null));

 IMetadataProvider metadataProvider = DocsVisionObjectFactory.CreateMetadataProvider(userSession);
 objectContext.AddService<IMetadataManager>(DocsVisionObjectFactory.CreateMetadataManager(metadataProvider, userSession));
 objectContext.AddService<IMetadataProvider>(metadataProvider);

 return objectContext;
}
Чтобы использовать приведенные в коде типы, потребуется:
  1. Добавить в проект сборки Docsvision:

    • DocsVision.Platform.ObjectModel.dll

    • DocsVision.Platform.ObjectManager.dll

    • DocsVision.Platform.SystemCards.ObjectModel.dll

    • DocsVision.BackOffice.ObjectModel.dll

    • DocsVision.Platform.StorageServer.dll

      Указанные DLL-файлы входят в состав клиента и сервера Docsvision.

  2. Подключить пространства имён:

    using DocsVision.BackOffice.ObjectModel;
    using DocsVision.BackOffice.ObjectModel.Mapping;
    using DocsVision.BackOffice.ObjectModel.Services;
    using DocsVision.Platform.Data.Metadata;
    using DocsVision.Platform.ObjectManager;
    using DocsVision.Platform.ObjectModel;
    using DocsVision.Platform.ObjectModel.Mapping;
    using DocsVision.Platform.ObjectModel.Persistence;
    using DocsVision.Platform.SystemCards.ObjectModel.Mapping;
    using DocsVision.Platform.SystemCards.ObjectModel.Services;
    using System.ComponentModel.Design;