Страница администратора
Общее описание
Страница администратора предоставляет централизованный интерфейс управления системой Citeck. Она разделена на группы разделов, каждая из которых соответствует отдельному микросервису и содержит ссылки на журналы, бизнес-процессы и инструменты разработчика.
Доступ к странице администратора требует наличия роли ROLE_ADMIN.
Настройка разделов меню администратора
Для настройки разделов меню администратора существуют два типа артефактов. Важно использовать правильный механизм:
Тип артефакта |
Путь |
Статус |
|---|---|---|
|
|
Устарел — не влияет на меню администратора в актуальных версиях платформы |
|
|
Актуален — правильный механизм для изменения меню администратора |
Предупреждение
Артефакты типа ui/admin-sections-group не оказывают эффекта на меню администратора в текущих версиях платформы.
Для изменения структуры меню администратора необходимо использовать app/artifact-patch с целевым артефактом ui/menu$admin-workspace-menu.
Подробнее см. раздел Настройка через artifact-patch (актуальный механизм) ниже.
Настройка через artifact-patch (актуальный механизм)
Разделы меню администратора добавляются с помощью патчей для артефактов типа app/artifact-patch, которые модифицируют артефакт ui/menu$admin-workspace-menu.
Структура патча:
---
id: add-my-service-admin-menu-section
name:
en: Add my service admin section
ru: Добавить раздел администратора
target: 'ui/menu$admin-workspace-menu'
system: true
order: 500
type: json
config:
operations:
- op: add
path: '$.subMenu.left.items'
value:
id: my-service-section
label:
en: My Service
ru: Мой сервис
hidden: false
type: SECTION
config: { }
items:
- id: my-service-journal
label:
en: My Journal
ru: Мой журнал
hidden: false
type: JOURNAL
config:
recordRef: uiserv/journal@my-journal-id
Ключевые поля:
Поле |
Описание |
|---|---|
|
Всегда |
|
Всегда |
|
Порядок применения патча: |
|
|
Структура элемента меню типа SECTION:
Поле |
Описание |
|---|---|
|
Уникальный идентификатор секции |
|
Локализованное название секции (объект с ключами |
|
Признак скрытия; |
|
|
|
Конфигурация секции (обычно пустой объект |
|
Список элементов-журналов (тип |
Структура элемента меню типа JOURNAL:
Поле |
Описание |
|---|---|
|
Уникальный идентификатор элемента |
|
Локализованное название (объект с ключами |
|
Признак скрытия; |
|
|
|
Ссылка на журнал в формате |
Паттерн: выделение устаревших разделов в Legacy-секцию
Если накопились журналы, которые больше не используются активно, рекомендуется вынести их в отдельную секцию с меткой «Legacy» (Устаревшее). Это сохраняет доступ к данным, не перегружая основной раздел.
Соглашения:
Идентификатор патча:
add-<сервис>-legacy-admin-menu-section.Название секции:
{ "en": "Legacy", "ru": "Устаревшее" }— единообразное имя упрощает навигацию.Значение
order:1000— секция отображается в конце боковой панели после всех остальных разделов.Идентификатор секции:
<сервис>-legacy-section.
Пример патча для Legacy-секции (add-integrations-legacy-admin-menu-section.yml):
---
id: add-integrations-legacy-admin-menu-section
name:
en: Add legacy integrations admin section
ru: Добавить раздел администратора устаревших интеграций
target: 'ui/menu$admin-workspace-menu'
system: true
order: 1000
type: json
config:
operations:
- op: add
path: '$.subMenu.left.items'
value:
id: integrations-legacy-section
label:
en: Legacy
ru: Устаревшее
hidden: false
type: SECTION
config: { }
items:
- id: integrations-ecos-sync
label:
en: Synchronizations
ru: Синхронизации
hidden: false
type: JOURNAL
config:
recordRef: uiserv/journal@ecos-sync
- id: integrations-ecos-credentials
label:
en: Credentials
ru: Учётные данные
hidden: false
type: JOURNAL
config:
recordRef: uiserv/journal@ecos-credentials
Текущая структура меню ecos-integrations
После разделения на активные и устаревшие журналы раздел интеграций в меню администратора выглядит следующим образом:
Файл патча |
|
Содержимое |
|---|---|---|
|
500 |
Активные журналы: Data Sources, Records sources, Camel DSL, Camel DSL Instance, Synchronization state, Synchronization log, External portals, Incoming webhooks |
|
1000 |
Устаревшие журналы: Synchronizations, Credentials, EDI boxes configuration, OSGI Bundles, File import configuration, Files for Import, File import items |
Примечание
Файл add-notifications-admin-menu-section.yml имеет историческое имя (был скопирован из сервиса уведомлений), однако его внутренний идентификатор — add-integrations-admin-menu-section. Не переименовывайте файл без согласования, но учитывайте это несоответствие при работе с артефактами меню администратора в проекте.
Добавление нового журнала в меню администратора
При добавлении нового журнала в меню администратора:
Добавьте новый элемент в
config.operations[0].value.itemsсоответствующего файла патча.Используйте шаблон идентификатора:
<сервис>-<journal-id>.Используйте шаблон
recordRef:uiserv/journal@<journal-id>.Активные журналы →
add-notifications-admin-menu-section.yml.Устаревшие журналы →
add-integrations-legacy-admin-menu-section.yml.
Предупреждение
Не модифицируйте файлы ui/admin-sections-group/*.json для изменений меню администратора — эти артефакты не оказывают эффекта на меню в текущих версиях платформы.
Устаревший механизм: ui/admin-sections-group
Устарело, начиная с версии 0.0: Ниже приведено описание артефактов ui/admin-sections-group, которые не влияют на меню администратора в текущих версиях платформы. Документация сохранена для справки.
Артефакты типа ui/admin-sections-group описывали группы разделов в меню администратора.
Стандартные группы разделов (исторический справочник):
Микросервис |
Идентификатор группы |
Порядок |
|---|---|---|
ecos-apps |
application |
0 |
ecos-process |
process |
10 |
ecos-model |
model |
20 |
ecos-uiserv |
user-interface |
30 |
ecos-notifications |
notification |
40 |
ecos-integrations |
integration |
50 |
ecos-integrations |
integration-legacy |
1000 |
Примечание
Группа integration-legacy содержит устаревшие журналы микросервиса ecos-integrations (ecos-sync, ecos-credentials, edi-box, ecos-osgi-bundles, file-import-config, file-import-task, file-import-task-item).
Значение order: 1000 намеренно выбрано большим, чтобы группа отображалась в конце боковой панели после всех остальных разделов. Это рекомендуемое соглашение для групп с устаревшим/legacy-содержимым.
Типы разделов (устаревший справочник)
Тип |
Параметры |
Описание |
|---|---|---|
JOURNAL |
journalId — идентификатор журнала |
Раздел с журналом |
BPM |
— |
Раздел с бизнес-процессами в виде плитки или списка |
DEV_TOOLS |
— |
Страница инструментов разработчика (dev-tools) |
Модель группы разделов
AdminSectionsGroupDef {
id: String // идентификатор группы (должен быть неизменным)
name: MLText // локализованное имя группы
order: Float // порядок в меню (чем больше, тем ниже)
sections: List<AdminSectionDef> // список разделов
}
Модель раздела
AdminSectionDef {
name: MLText // имя раздела (необязательно для типа JOURNAL)
type: String // тип раздела: JOURNAL | BPM | DEV_TOOLS
config: ObjectData // конфигурация, зависящая от типа раздела
}
Пример конфигурации группы (устаревший)
{
"id": "user-interface",
"name": {
"en": "UI configuration",
"ru": "Конфигурация UI"
},
"order": 30,
"sections": [
{
"type": "JOURNAL",
"config": {
"journalId": "ecos-journals"
}
},
{
"type": "JOURNAL",
"config": {
"journalId": "ecos-forms"
}
}
]
}
Пример патча для ui/admin-sections-group (устаревший, не работает)
id: add-some-journal-to-admin-page
name:
ru: Добавить журнал "Some Journal" на страницу администратора
en: Add journal "Some Journal" to admin page
target: ui/admin-sections-group$application
type: json
config:
operations:
- op: add
path: '$.sections'
value:
type: JOURNAL
config:
journalId: some-journal-id
Пример файла integration-legacy.json (устаревший)
{
"id": "integration-legacy",
"name": {
"en": "Legacy",
"ru": "Устаревшее"
},
"order": 1000,
"sections": [
{ "type": "JOURNAL", "config": { "journalId": "ecos-sync" } },
{ "type": "JOURNAL", "config": { "journalId": "ecos-credentials" } },
{ "type": "JOURNAL", "config": { "journalId": "edi-box" } },
{ "type": "JOURNAL", "config": { "journalId": "ecos-osgi-bundles" } },
{ "type": "JOURNAL", "config": { "journalId": "file-import-config" } },
{ "type": "JOURNAL", "config": { "journalId": "file-import-task" } },
{ "type": "JOURNAL", "config": { "journalId": "file-import-task-item" } }
]
}
Примечание
При разбиении группы убедитесь, что суммарное количество журналов во всех результирующих файлах совпадает с исходным. Это позволяет избежать потери или дублирования журналов.