Portal.Module.Sdk
C# SDK для опционального provisioner в функциональных модулях (.portalmod).
Настройка SDK: Extension SDK с korport.ru/developers.
Шаблон проекта
Заголовок раздела «Шаблон проекта»dotnet new install ./portal-sdk-1.0.0/templates/portal-moduledotnet new portal-module -n MyModule -o ./my-modulecd my-module./build.sh# → dist/contoso-my-module.portalmodВ .csproj — PackageReference Include="Portal.Module.Sdk".
Интерфейс
Заголовок раздела «Интерфейс»public interface IModuleProvisioner{ Task ProvisionAsync(ModuleProvisionContext ctx, CancellationToken ct); Task UpgradeAsync(ModuleProvisionContext ctx, string fromVersion, CancellationToken ct);}По умолчанию UpgradeAsync вызывает ProvisionAsync.
ModuleProvisionContext
Заголовок раздела «ModuleProvisionContext»| Свойство | Тип | Описание |
|---|---|---|
ModuleKey | string | id модуля из module.json |
Version | string | версия устанавливаемого модуля |
Refs | IReadOnlyDictionary<string, string> | карта lists.tasks.id → UUID |
Services | IModuleProvisionServices | сервисы provisioner |
SeedPath | string? | "seed" если в архиве есть каталог seed/ |
ModuleFiles | IReadOnlyDictionary<string, byte[]>? | содержимое ZIP (пути в нижнем регистре, разделитель /) |
Log | IModuleInstallLog | журнал установки |
IModuleInstallLog
Заголовок раздела «IModuleInstallLog»| Метод | Описание |
|---|---|
Info(message) | информационное сообщение в журнал установки |
Warn(message) | предупреждение в журнал установки |
IModuleProvisionServices
Заголовок раздела «IModuleProvisionServices»| Метод | Описание |
|---|---|
GetListIdAsync / GetNodeIdAsync / GetLibraryIdAsync | UUID ресурса по ключу из module.json |
TryGetRef | ссылка на ресурс (в т.ч. modules.other-module.lists.x.id); null, если ключ не найден |
GetListItemCountAsync | количество элементов списка |
CreateListItemAsync / UpdateListItemAsync | CRUD элементов (ключи полей — internal_name) |
GetListItemIdsOrderedAsync | id элементов по дате создания |
EnsureLocalUserAsync(login, displayName, email) | идемпотентное создание локального пользователя; возвращает UUID |
FindUserIdByLoginAsync(login) | поиск пользователя по логину; null, если не найден |
UploadLibraryFileAsync | загрузка файла в библиотеку |
SetNodeDefaultPageAsync(nodeId, pageId) | назначить страницу по умолчанию для узла |
AddGroupMemberAsync(groupId, userId) | добавить пользователя в группу доступа |
Подробнее: Функциональные модули, Кейсы работы с сущностями.