Модули и версионирование¶
Модули¶
Модуль — это логическое объединение сущностей администрирования для удобного переноса и версионирования конфигурации.
Типовые объекты модуля:
- разделы и категории;
- дополнительные параметры;
- статусы и подписи;
- отчеты, порталы, виджеты;
- автоматизации (смарт-пакеты, смарт-выражения, смарт-расписания).
Базовые операции¶
Создание модуля:
- Нажмите «Создать».
- Укажите название.
- Сохраните.
Редактирование:
- выберите модуль в списке и измените данные.
Удаление:
- удаление возможно только если в модуле нет связанных сущностей.
Назначение сущностей модулю:
- в формах администрирования выбирается значение «Модуль»;
- если модуль не выбран, объект относится к общему (глобальному) модулю.
Пример выбора модуля для категории:
Важно:
- при создании ДП и смартов внутри категории обычно наследуется модуль категории;
- система ограничивает смешивание сущностей разных модулей в ряде сценариев конфигурирования.
Что хранится в БД¶
Modules— карточка модуля (Id,Name,VersionConfigId).VersionConfigs— версии конфигурации модуля (ConfigVersion,ConfigDate,Link,ModuleId).RepoSettings— настройки активного репозитория (тип, источник, ключи доступа, локальный путь).
Версионирование модулей (RevisionRepository)¶
Версионирование работает через API, а не через отдельную UI-форму мастера:
POST /api/admin/revisionrepository/versionconfig— создать версию;POST /api/admin/revisionrepository/versionconfig/changeversion— переключить модуль на существующую версию;DELETE /api/admin/revisionrepository/versionconfig/{id}— удалить версию;POST /api/admin/revisionrepository/reposettings/preparerepository— подготовить активный репозиторий.
Настройка репозитория¶
Перед созданием/переключением версий должен быть настроен активный RepoSettings:
POST /api/admin/revisionrepository/reposettingsGET /api/admin/revisionrepository/reposettingsPOST /api/admin/revisionrepository/reposettings/{id}DELETE /api/admin/revisionrepository/reposettings/{id}
Поддерживаются провайдеры:
FileSystem;Git.
Поток «Создать версию»¶
CreateConfigVersion(moduleId, version):- нормализует имя версии;
- создает запись в
VersionConfigs; -
обновляет
Modules.VersionConfigId. -
BuildCurrentConfiguration(moduleId): - собирает конфигурацию модуля через экспортный механизм переноса;
-
формирует
VersonConfigDtoс тремя JSON-блоками. -
RevisionRepositoryService.Push(...): - провайдер (
FileSystem/Git) записывает файлы версии в хранилище.
Поток «Сменить версию»¶
ChangeConfigVersion(moduleId, versionId):-
валидирует, что версия принадлежит модулю.
-
RevisionRepositoryService.Pull(link): -
читает файлы версии из репозитория.
-
SetVersionConfiguration(...): - десериализует конфигурацию;
-
вызывает импорт через
MigrationImportService.Import(...). -
Импортный post-step:
- обновляет кеши;
-
запускает денормализацию импортированных категорий/сводных.
-
Если импорт завершился ошибкой:
- выполняется rollback привязки модуля на предыдущую версию.
Формат версии (текущее состояние)¶
В каталоге версии хранятся три файла:
data.jsonadditionalData.jsonconfig.json
Link версии обычно имеет вид:
module{moduleId}/{version}.
Активная доработка: мультифайловый формат¶
В активном проекте утилиты переноса прорабатывается переход от единого data.json к раскладке на набор файлов по областям конфигурации (категории/глобальные сущности).
Цели:
- уменьшить размер и конфликтность git-diff;
- упростить частичную навигацию по конфигурации;
- сохранить обратную совместимость со старым форматом.
Подробности: docs/projects/oac/multifile-export.md.
Диагностика проблем по версиям¶
Проверяйте по порядку:
- Активен ли нужный
RepoSettings. - Корректен ли
Linkи доступны ли файлы версии. - Есть ли запись версии в
VersionConfigsи привязка вModules.VersionConfigId. - Нет ли ошибок импорта/денормализации в логах migration-контуров.
- После
changeversion— применились ли целевые сущности и кеши.