Создание плагина для веб-сервера ПОЛИНОМ: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; }
}