Добавление сервисов и поддержки новых типов карточек в контекст объектов

По умолчанию в контекст объектов, предоставляемый в серверном расширении, загружаются сервисы и преобразователи данных (см. документ Руководство разработчика Docsvision), позволяющие работать с карточками библиотек Базовые объекты и Конструктор согласований, системными карточками и карточками приложения Управление документами: SystemCardsMapperFactory, BackOfficeMapperFactory, ApprovalDesignerMapperFactory, SystemCardsServiceFactory, BackOfficeServiceFactory, DocumentsManagementServiceFactory и ApprovalDesignerServiceFactory.

Если требуется поддержать собственные типы карточек в объектной модели Docsvision, программист должен добавить в контекст объектов преобразователи данных для этих типов, и сервисы для работы с данными карточками. Инструкция по разработке фабрик сервисов и фабрик преобразователей данных приведена в Руководстве разработчика Docsvision.

Выполните указанные ниже действия для добавления сервисов и преобразователей данных в контекст объектов. Все действия выполняются в проекте серверного расширения (нового или существующего).

  1. Подключите к проекту сборки, в которых реализованы классы разработанных фабрик сервисов и преобразователей данных.

  2. Откройте файл ядра расширения.

  3. Переопределите метод OnObjectContextCreate, вызываемый при создании контекста объектов, добавив в него код регистрации фабрик сервисов и преобразователей данных.

    Следующий код демонстрирует пример добавления в контекст объектов фабрики сервисов CustomLibraryServiceFactory и фабрики преобразователей данных CustomLibraryMapperFactory.

    public override void OnObjectContextCreate(ObjectContext objectContext)
     {
        base.OnObjectContextCreate(objectContext);
    
        (1)
    
        IObjectMapperFactoryRegistry mapperFactoryRegistry = objectContext.GetService<IObjectMapperFactoryRegistry>(); (2)
    
        mapperFactoryRegistry.RegisterFactory(typeof(CustomLibraryMapperFactory)); (3)
    
        IServiceFactoryRegistry serviceFactoryRegistry = objectContext.GetService<IServiceFactoryRegistry>(); (4)
    
        serviceFactoryRegistry.RegisterFactory(typeof(CustomLibraryServiceFactory)); (5)
    }
    1 Далее следует стандартный код добавления фабрик в контекст объектов (см. Руководство разработчика Docsvision).
    2 Получаем из существующего контекста объектов сервис регистрации фабрик преобразователей данных.
    3 Регистрируем фабрику преобразователей данных, реализованную в классе CustomLibraryMapperFactory.
    4 Получаем из существующего контекста объектов сервис регистрации фабрик сервисов.
    5 Регистрируем фабрику сервисов, реализованную в классе CustomLibraryServiceFactory.

    Добавленный в контекст объектов сервис можно получить стандартным образом:

ISomeService someService = objectContext.GetService<ISomeService>();

+ . Опубликуйте серверное расширение.

+ NOTE: Сборки, содержащие классы фабрик сервисов и преобразователей данных, нужно скопировать в каталог со сборкой данного серверного расширения.