Инициализация контекста объектов
После подключения к серверу Docsvision, создания пользовательской сессии, может быть создан контекст объектов для работы с методами API уровня бизнес-логики.
-
Пишется код для скрипта карточки, т.к. в этом случае готовый контекст объектов может быть получен непосредственно из класса скрипта.
-
Предполагается использовать исключительно методы базового API.
-
Получить экземпляр класса
ObjectContext
— сущность контекста объектов. -
Используя платформенные сервисы, загрузить в контекст объектов преобразователи данных и необходимые сервисы.
Создание и инициализация контекста объектов является затратной операцией с точки зрения потребления аппаратных ресурсов. Рекомендуется использовать созданный и проинициализированный контекст объектов, а не создавать новый. |
Далее приведён полный код инициализации контекста объектов для возможности работы с системными карточками и карточками библиотеки Базовые объекты.
Разверните, чтобы увидеть полностью:
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;
}
-
Добавить в проект сборки Docsvision:
-
DocsVision.Platform.ObjectModel.dll
-
DocsVision.Platform.ObjectManager.dll
-
DocsVision.Platform.SystemCards.ObjectModel.dll
-
DocsVision.BackOffice.ObjectModel.dll
-
DocsVision.Platform.StorageServer.dll
Указанные DLL-файлы входят в состав клиента и сервера Docsvision.
-
-
Подключить пространства имён:
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;