Table of Contents

Создание плагина для веб-сервера ПОЛИНОМ:MDM

Для веб-сервера ПОЛИНОМ:MDM предусмотрена возможность создания плагинов.

Общая информация

Плагин представляет собой сборку с типом "библиотека классов" (dll) и может включать в себя сущности и контроллеры.

Создание дополнения

Необходимо создать проект версии .NET 8, и в его зависимостях указать следующие библиотеки WEB API ПОЛИНОМ:MDM:

  • Ascon.Polynom.Api.dll
  • Ascon.Polynom.Web.Api.Core.dll
  • Ascon.Polynom.Web.Api.Plugins.Basic.dll

Контроллеры дополнений необходимо наследовать от базового контроллера дополнений WebApiPluginController. Необходимые сущности могут быть созданы произвольно.

Доступ для авторизованных пользователей web-API ПОЛИНОМ:MDM

В случае необходимости доступ к контроллерам может быть ограничен и предоставлен только пользователям, авторизованным в web-API ПОЛИНОМ:MDM. Для этого необходимо применить атрибут [Authorize] к требуемому методу контроллера или контроллеру в целом, если необходимо ограничить доступ ко всем его методам.

Получение сессии ПОЛИНОМ:MDM

Открытая сессия ПОЛИНОМ:MDM для текущего пользователя может быть получена при помощи метода GetPolynomApiSession().

Документация Swagger

Для подключения формирования файла с документацией на основе комментариев необходимо в файле проекта дополнения (csproj) добавить следующий блок:

<PropertyGroup>
 <Title>[Название проекта]</Title>
 <AssemblyTitle>$(Title)</AssemblyTitle>
 <AssemblyDescription>$(Title)</AssemblyDescription>
 <DocumentationFile>$(OutputPath)\$(AssemblyName).xml</DocumentationFile>
</PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
  </ItemGroup>

При сборке проекта будет сформирован xml-файл с названием "[Название сборки].xml", расположенный в выходной директории сборки.

Подключение дополнения

Для подключения дополнения необходимо разместить полученный dll-файл в директорию развернутого приложения. Если необходимо также подключить Swagger-документацию, то в директорию также необходимо приложить сформированный xml-файл. Дополнение подключится автоматически при перезапуске приложения.

Пример дополнения Sample.Web.Api.Plugin

В примере дополнения реализован контроллер SampleController с единственным методом по предоставлению статистики наполнения хранилища Get (доступен по адресу /sample?api-version=1). В методе производится сбор статистики наполнения хранилища с использованием Ascon.Polynom.Api.ISession. Результат возвращается в json, представляющем собой заполнение экземпляра класса, определенного в дополнении:

/// <summary>
/// Представляет статистику хранилища.
/// </summary>
public class CountInfo
{
    /// <summary>
    /// Возвращает или задает количество справочников.
    /// </summary>
    public int ReferenceCount { get; set; }

    /// <summary>
    /// Возвращает или задает количество каталогов.
    /// </summary>
    public int CatalogCount { get; set; }

    /// <summary>
    /// Возвращает или задает количество каталогов документов.
    /// </summary>
    public int DocumentCatalogCount { get; set; }

    /// <summary>
    /// Возвращает или задает количество каталогов представлений.
    /// </summary>
    public int ViewpointCatalogCount { get; set; }

    /// <summary>
    /// Возвращает или задает количество понятий в корне.
    /// </summary>
    public int RootConceptCount { get; set; }

    /// <summary>
    /// Возвращает или задает количество вложенных понятий.
    /// </summary>
    public int InnerConceptCount { get; set; }

    /// <summary>
    /// Возвращает или задает количество групп определений свойств.
    /// </summary>
    public int PropertyDefinitionGroupCount { get; set; }

    /// <summary>
    /// Возвращает или задает количество определений свойств.
    /// </summary>
    public int PropertyDefinitionCount { get; set; }
}