Release 2.6.0

Дата выхода: 15.04.2025

Канбан-доска для жизненного цикла

Добавлена возможность отображать статус жизненного цикла объектов системы в виде канбан-доски. Открыть это представление можно двумя способами:

  • из реестра объектов (требуется настройка: в экземпляре класса "Маршрут приложения Osa", у которого свойсвто "имя маршрута" соответствует пути текущего реестра, нужно указать свойство "имеет бизнес-объект")
  • из рабочего пространства путем добавления одноименного виджета

Доступны следующие функции:

  • выбор класса экземпляров (с подклассами или без)
  • настройка полей картчоки доски (заголовок, подзаголовок, содержимое)
  • группировка экземпляров по выбранному свойству
  • выбор представления для карточки экземпляра

При открытии в рабочем пространстве виджет настраивается как и другие виджеты, при открытии компонента из реестра настройки доступны только администратору и при сохранении применяются для всех пользователей к доске текущего реестра.

Возможность взаимодействия с p_api с помощью кодов объектов

Добавлена возможность работы с p_api с использованием кодов свойств вместо их id (задается в поле "Код" для классов и свойств). Для этого нужно в JSON запроса указать ``useCodes: true, а также для всех propв запросе требуется наличие уникальногоidx`.

Структура ответа с группировкой

{
data: [
  {
     id: string, // ид экземпляра
     readonly: boolean,
     can_delete: boolean,
     // в массивах - уникальные записи
     idx1: string[], // если нет значений,
     idxI: number[],
     idxN: [{id, name}]
  },
  ...
],
headers: {
  idxN: {
    idx: number,
    code: string, // propCode
    prop: string // uuid свойства
  },
  ...
}
}

Пример запроса

// Было
{
  "act":"get_data",
  "class":"90d73d72-9eba-4dde-bf0c-1e96093ae437",
  "fields":[
    {"prop":"00000000-0000-0000-0000-000000000000"},
    {"prop":"dd84a247-9216-446d-b88a-2f1ae25d8696"},
    {"prop":"c21246e4-8c33-1052-3b40-9e68b5a33de4"}
  ]
}

// Стало
{
  "act":"get_data",
  "useCodes": true,
  "classCode":"MyClassCode",
  "fields":[
    {"idx":1,"propCode":"termId"},
    {"idx":2,"propCode":"stringProp"},
    {"idx":3,"propCode":"domainProp"}
  ]
}

Пример ответа

// Было
{
    "data": [
        {
            "row": 1,
            "inst": "48943e55-a8a2-4668-89c4-0c6164e685c3",
            "readonly": false,
            "can_delete": true,
            "idx": 1,
            "prop": "00000000-0000-0000-0000-000000000000",
            "val": "1"
        },
        {
            "row": 1,
            "inst": "48943e55-a8a2-4668-89c4-0c6164e685c3",
            "readonly": false,
            "can_delete": true,
            "idx": 2,
            "prop": "dd84a247-9216-446d-b88a-2f1ae25d8696",
            "val": "это строка"
        },
        {
            "row": 1,
            "inst": "48943e55-a8a2-4668-89c4-0c6164e685c3",
            "readonly": false,
            "can_delete": true,
            "idx": 3,
            "prop": "c21246e4-8c33-1052-3b40-9e68b5a33de4",
            "cap": "Admin-Panel",
            "val": "d4764360-7e6d-49a1-9167-09b6c21cebee"
        },
        {
            "row": 2,
            "inst": "48943e55-a8a2-4668-89c4-0c6164e685c3",
            "readonly": false,
            "can_delete": true,
            "idx": 1,
            "prop": "00000000-0000-0000-0000-000000000000",
            "val": "1"
        },
        {
            "row": 2,
            "inst": "48943e55-a8a2-4668-89c4-0c6164e685c3",
            "readonly": false,
            "can_delete": true,
            "idx": 2,
            "prop": "dd84a247-9216-446d-b88a-2f1ae25d8696",
            "val": "это строка"
        },
        {
            "row": 2,
            "inst": "48943e55-a8a2-4668-89c4-0c6164e685c3",
            "readonly": false,
            "can_delete": true,
            "idx": 3,
            "prop": "c21246e4-8c33-1052-3b40-9e68b5a33de4",
            "cap": "API desc",
            "val": "a6227634-a4a5-4914-a9fe-4a33325a2cd6"
        }
    ]
}

// Стало
{
  data: [
  {
    id: "48943e55-a8a2-4668-89c4-0c6164e685c3",
    readonly: false,
    can_delete: true,
    idx1: ["1"],
    idx2: ["это строка"],
    idx3: [
	  {id: "d4764360-7e6d-49a1-9167-09b6c21cebee", name: "Admin-Panel"},
	  {id: "a6227634-a4a5-4914-a9fe-4a33325a2cd6", name: "API descr"}
    ]
  }
  ],
  headers: {
    idx1: {
      idx: 1,
      code: "termId",
      prop: "00000000-0000-0000-0000-000000000000"
    },
    idx2: {
      idx: 2,
      code: "stringProp",
      prop: "dd84a247-9216-446d-b88a-2f1ae25d8696"
    },
    idx3: {
      idx: 3,
      code: "domainProp",
      prop: "c21246e4-8c33-1052-3b40-9e68b5a33de4"
    }
  }
}

Синхронные обработчики в событийной модели OSA

Добавлена возможность использования синхронных обработчиков в событийной модели OSA. Особенности:

  • если в обработчике возникнет ошибка, то и сам запрос на изменение данных не будет исполнен
  • запрос на изменение данных будет считаться выполненным только после того, как все синхронные обработчики будут выполнены

Код обработчика реализуется в виде хранимой процедуры, принимающей массив id строк таблицы public.evn и возвращающей произволльный JSON. Имя хранимой процедуры нужно указать в поле "sql-функция для синхронной обработки события" класса "События API".

Хранение значений вычисляемых свойств в БД

В "Классе всех свойств" появилось логическое свойство "Хранить значение вычисляемого свойства в базе данных". Запросы get_data и get_form для свойств, где проставлен этот признак, не вычисляют значения, а берут их из БД. Для вычисления значений применяется метод, рассчитывающий:

  • значения расчетных свойств с установленным признаком "Хранить значение вычисляемого свойства в базе данных"
  • имена терминов для классов с правилом имяобразования и установленным признаком "Хранить вычисленное имя в базе данных"
/*
 *  Запрос
 */
{
  act: "recalc_props",
  session: "session_id", // идентификатор сессии
  insts: [], // коллекция ид экземпляров
  props: [] // коллекция ид свойств
}
/*
 *  Ответ
 */
{
  msg: "Операция завершена успешно"
}

Если поле "insts" не указано или равно null, то пересчет осуществляется для экземпляров всех классов (и их подклассов), в которых есть указанные в "props" свойства. Запрос выполняется только для пользователей-администраторов.

Анализ изменения онтологии

Добавлен инструмент анализа изменений в онтологии ("Лаборатория" - "Изменения онтологий") путем сравнения двух файлов, сгенерированных функцией "Экспорт через API" в онтокарте (файлы ".ontoexp"). Результат сравнения отображается в виде дерева, где изменения сгруппированы по типам "Классы", "Свойства", "Экземпляры", "Правила", "Представления", "Закладки", "Описатели полей", "Зависимости", "Описатели ограничений", "Роли", "Описатели доступа к экземплярам", "Дискурсы", "Назначения", "Вложения", "Предметные области".

Имеются следующие возможности:

  • исключение выбранных свойств из сравнения
  • фильтрация результатов (скрытие объектов без изменений, скрытие отдельных свойств)
  • просмотр объектов в факт-эксплорере или копирование id
  • разворачиваение/сворачивание узлов дерева

Индексация вложений

Добавлена возможность индексации файлов вложений для последующего поиска для "docx", "odt" и цифровых "pdf" (файлы со сканами не поддерживаются). Типы индексируемых вложений задаются в классе "Глобальные настройки OSA", индексация выполняется по расписанию. Поиск осуществялется через раздел "Поиск бизнес-объектов".

Для работы данной функции требуется внесение изменений в конфигурацию онтоплатформы.

Генерация определений с помощью БЯМ

Добавлена возможность генерации дискурсов типа "Определение" для любых объектов системы с помощью БЯМ (больших языковых моделей). Поддерживаются БЯМ с api, совместимые с OpenAI. Для работы данной функции требуется внесение изменений в конфигурацию онтоплатформы.

Нововведения в структурированных документах

Семантический контекст документа

Классу "Структурированный документ" добавлено поле "контекст документа", которое выступает в роли семантического контекста. При указании в нем одного или нескольких предметных областей, эта информация передается во всплывающее окно дискурса при клике по термину. В окне выполняется фильтрация дискурсов по контексту: отображаются только те дискурсы, у которых нужная предметная область установлена непосредственно на дискурсе или на источнике дискурса. Фильтрация работает по принципу пересечения, то есть для отображения в окне у дискурса или у его источника должна быть хотя бы одна предметная область из тех, что заданы в контексте документа. Если контекст документа задан, то в диалоге после всех дискурсов отображается информация о нем, а также переключатель, позволяющий отключить фильтрацию контекстом и показать все дискурсы.

Обновленные стили документов

Обновлены стили в обычных и структурированных документах, в том числе стили в режиме редактирования. Скорректирован размер шрифта, настроены отступы и иконки интерфейса для более удобного восприятия содержимого.

Выделение цветом компонентов структурированного документа пользователем

Добавлена возможность выделить цветом любой компонент в редакторе структурированных документов. Выделение цветом абзацев (и только абзацев) отображается также в просмотре документа. Команда доступна в меню компонента.

Добавление содержимого из другого документа

В дополнение к существующему механизму включения внешнего содержимого добавлен расширенный диалог вставки из другого документа. С его помощью можно в визуальном режиме выбрать несколько компонентов из указанного документа и вставить их либо в виде внешнего содержимого, либо в виде копии. Команда доступна в меню добавления компонента.

Сборка документа

Добавлен новый инструмент сборки документов. Он позволяет компоновать документ из частей других документов. Все компоненты всех документов отображаются в виде таблицы (с возможностью фильтрации). Пользователь перетаскивает нужные строки из таблицы в панель справа. Выбрав компонент в таблице или в панели справа, панелях снизу показывается предварительный просмотр и граф для данного компонента. Пользователь может менять условия выборки компонентов в таблице, при этом ранее добавленные компоненты в панели справа остаются. Один компонент можно добавить в панель справа только один раз. Как только пользователь наберёт все нужные компоненты, он может поменять порядок их следования перетаскиванием в панели справа. Нажав на кнопку "Добавить в документ...", пользователь может либо создать новый документ, либо выбрать существующий. При подтверждении все компоненты из панели справа будут добавлены в выбранный документ.

Инструмент сборки документов доступен администраторам нажатем кнопки в тулбаре из реестра структурированных документов.

Возможность сворачивания компонентов документа при редактировании

В редакторе добавлена возможность свернуть любой компонент. В свернутом состоянии он занимает меньше экранного пространства, что очень удобно при работе с большими документами. Сворачивание компонентов в редакторе не влияет на вид документа при просмотре. Кнопка сворачивания доступна непосредсвенно на компоненте.

Компонент "Список таблиц"

Добавлен новый тип компонента "Список таблиц", позволяющий вывести список всех таблиц, имеющихся в данном документе. Выводятся названия таблиц и их номер (если нумерация таблиц включена). У каждой таблицы есть параметр "Показывать в списке таблиц", позволяющий управлять отображением таблицы в списке.

Назначения компонентам дополнительных классов

Возможность назначения классов дискурса компонентам документа расширена до возможности назначения компонентам любых других классов (через класс "Дополнительные классы компонента документа"). Назначенные классы всегда отображаются в редакторе, а нажатие по классу открывает карточку этого класса.

Сохранение нумерации компонентов

Добавлена возможность сохранять фактическую нумерацию компонентов для последующего использования вне структурированных документов. Сохранение выполняется вручную в редакторе структурированных документов по нажатию кнопки (меню шестерёнка в тулбаре). Сохраняется нумерация только тех компонентов, у которых она фактически имеется, у остальных проставляется пустое значение. Данные записываются в свойство "сохраненный номер пункта".

Импорт

Добавлена возможность импорта данных из файлов "docx", "odt" и цифровой "pdf" (файлы со сканами не поддерживаются). Импорт создается в разеле "Лаборатория" - "Импорт документов". Можно загрузить несколько документов, при этом для каждого из них будет создан структурированный документ с импортированным содержимым. При импорте учитывается иерархия разделов и изображения.

Для работы данной функции требуется внесение изменений в конфигурацию онтоплатформы.

Прочие изменения

  • исправлена ошибка, из-за которой некоторые термины в редакторе иногда показываются в виде ID
  • добавлена возможность отобразить дополнительно свойство при поиске терминов в документе
  • исправлены ошибки в генераторе (отображались служебные символы, если в семантическом поиске возвращались дискурс; не работало дополнение новыми компонентами, появившимися в результатах семантического поиска)
  • оптимизирована загрузка и хранение структурированных документов
  • оптимизировано потребление ресурсов при больших объемах документа
  • добавлено отображение иерархии разделов в диалоге вставки
  • исправлено некорректное поведение карточки при изменении размеров
  • исправлена ошибка, возникающая при закрытии любого виджета
  • улучшен алгоритм поиска ранее выделенного текста при отображении комментариев
  • исправление запрос публикации структурированного документа
  • адаптирован механизм подсветки комментариев в тексте для совместимости с непрозрачным фоном компонентов
  • улучшен скролл-бар
  • комментарии не отображались в предварительном просмотре документа до нажатия по выделенному тексту
  • при открытии контекстного меню компонента оверлэй не перекрывал область комментариев
  • добавлена навигация по комментариям (переход к следующему и предыдущему комментарию)
  • в режиме просмотра структурированного документа не получалось создать публикацию
  • исправлена нестабильная работа режима презентации
  • исправлена нумерация таблиц в режиме просмотра
  • исправлены проблемы нумерации компонентов в редакторе
  • в оглавление документа добавлены списки таблиц и иллюстраций
  • добавлена возможность указать источник для компонентов структурированного документа
  • добавлено отображение источников для списков иллюстраций и таблиц
  • исправлены проблемы с форматированием экспортированного структурированного документа
  • добавлена возможность менять ширину карточки экземпляра в редакторе
  • исправлена ошибка, возникающая при редактировании свойств в карточке нового компонента, если компонент документа еще не был сохранен
  • при отсутствии названия иллюстрации отображалось пустое пространство
  • при разделении длинного абзаца фокус перемещался в конец длинного абзаца
  • добавлена возможность просмотреть текущий этап жизненного цикла компонента в его карточке

Нововведения в рабочих пространствах

Плагины в рабочих пространствах

В рабочих пространствах можно написать плагин для расширения функциональных возможностей. Код плагина нужно скопировать в экземпляр класса "Плагины рабочих пространств" в свойство "Код плагина рабочего пространства". После этого код плагина можно будет выбрать из списка.

Отношения в виде таблиц в таблицах

Добавлена возможность отображать отношения в виде таблиц в таблицах рабочего пространства. Имеется возможность ограничивать отображаемые таблицы и настраивать представления.

Виджет "Канбан-доска"

Добавлен новый виджет "Канбан-доска" для рабочих пространств, позволяющий визуализировать жизненный цикл объектов.

Виджет "Древовидное представление"

Добавлен новый виджет "Древовидное представление", позволяющий отображать иерархическую структуру для выбранного класса по заданному свойству. Имеется возможность сортировки по заданному свойству, установки ограничения на количество отображаемых данных и возможность загружать дополнительные данные по нажатию кнопки.

Работа с тегами в таблицах

Добавлена возможность работы с тегами в таблицах. Теги отображаются в строках таблицы, можно фильтровать таблицу по заданному тегу, а также назначать теги в карточке экземпляра.

Кнопки с действием в строках таблицы

Существующий механизм добавления кнопок дополнен возможностью создания кнопок с вызовом Javascript-функций, при этом instId будет заменен на id экземпляра строки.

Прочие изменения

  • исправлена ошибка при открытии рабочего пространства
  • доработано открытие карточки в рабочем пространстве по прямой ссылке
  • исправлен запрос при вычислении класса экземпляра при множественном наследовании
  • исправлена ошибка при отображении семантического поиска с серверной пагинацией
  • исправлена сортировка в виджете "Таблица фактов" при использовании семантического поиска
  • добавлена кнопка добавления новых экземпляров - с подклассами
  • добавлена возможность не загружать данные в таблице до взаимодействия
  • добавлено представление бизнес-объекта для семантического поиска и OSA-правил
  • реализовано отображение дискурсов в реестре рабочих пространств
  • добавлена кнопка создания нового экземпляра в виджете карточка экземпляра

Нововведения в факт-эксплорере

  • кнопку "Загружать состояния экземпляров" скрыта для пользователей без прав администратора
  • исправлена опечатка в тултипе на кнопке
  • граница карточки перекрывала всплывающее окно с дискурсами термина в факт-эксплорере

Нововведения в онтокартах

Цвет отношения с правилом

Добавлено цветокодирование отношений с правилами:

  • вычисляемое свойство - фиолетовый
  • зависимость - серый
  • значение по умолчанию - голубой

Прочие изменения

  • добавлено отображение связи класса, у которого настроено ограничение с классами из ограничения
  • добавлена возможность запрета на создание типов связей на карте для роли
  • добавлено отображение связи Свойство-источник данных транзитивности для листьев в карточке свойства - заменить на "Элементарно транзитивно по"
  • добавлена возможность сливать классы из виджета "проблемы онтологии"
  • запрещено редактирование онтологической карты в режиме просмотра в карточке бизнес-объекта
  • исправлено некорректное отображение непересекающихся свойств
  • исправлена ошибка в пояснении при создании отношения "самого на себя"
  • добавлены параметры ограничений поиска в Ограничении класса
  • исправлено отображение двух скроллбаров в компоненте "Собственные и наследуемые свойства"
  • исправлена ошибка, из-за которой при правом клике онтологии не занимают строку полностью
  • сайдбар больше не прячется при предпросмотре онтологий в реестре
  • исправлена ошибка отображения настроенных изображении экземпляров в таблице фактов
  • Исправлено некорректное отображение цвет текста на форме w3c
  • функция "Дрилл" переименована в функцию "Декомпозиция"
  • добавлена возможность посмотреть собственные и наследуемые свойства класса (через контекстное меню)

Нововведения в реестрах

Древовидные фильтры

  • добавлена возможность сохранять фильтры с запросом значения у пользователя по типу фильтра "содержит"
  • при использовании иерархических пользовательских фильтров id использованного фильтра указывается в url реестра
  • исправлена ошибка сброса древовидного фильтра после редактирования экземпляра в карточке

Предпросмотр в реестрах

Добавлен предпросмотр следующих типов объектов:

  • онтология
  • семантический поиск
  • диаграмма

Прочие изменения

  • вкладка "Предпросмотр" перенесена на вторую позицию
  • в реестре "OSA-правила" добавлена колонка "Использование", отображающая текущие сценарии применения правила
  • исправлено некорректное поведение заголовков колонок в реестрах

Общесистемные нововведения

Новые параметры скрытия элементов управления

В карточке роли для поля "Скрыть элементы управления OSA" добавлены новые параметры:

// онтологические карты
OntologyMap.menu.addTextTaxonomy

// Реестр онтологий
OntologyMaps.menu.tags
OntologyMaps.menu.filter
OntologyMaps.menu.treeFilter
OntologyMaps.menu.add

// меню системы
MainMenu.list.clearCache
MainMenu.list.logOut


// Register
RegisterMenu.registerName.tags
RegisterMenu.registerName.OsaFilter
RegisterMenu.registerName.showCreateButton
RegisterMenu.registerName.additionalComponent


// где registerName:
	Publications
	Diagrams
	Dmn
	Documents
	Courses
	ALU
	Flows
	FCA
	Graphs
	TextOntologies
	Reports
	WorkspaceItems
	portfolioProject
	Rules
	scheduler
	SemanticSearch
	roles
	excelImport
	StructuredDocuments
	Workflows
	WorkflowInstances

Инструменты самодиагностики

На бэкенде был добавлен метод ping, который возвращает статус компонентов системы. Статус представляет из себя светофор:

  • GREEN: все компоненты системы доступны
  • YELLOW: есть недоступные компоненты которые не входят в список критичных компонентов("CORE_SERVICES")
  • RED: один или несколько, критичных для системы компонентов, недоступны.

Когда светофор переходит в статус RED, пользовательский интерфейс блокируется, для этого на фронте есть периодическая задача опроса метода ping. После возвращения системы в статус GREEN пользовательский интерфейс разблокируется.

Для добавления компонента в мониторинг нужно перечислить компоненты через запятую в переменной "MONITORING_TASKS" службы backend, доступные компоненты:

  • s3
  • rabbit
  • remote-runner
  • remote-calc
  • redis
  • scheduler
  • notifications
  • worker
  • indexer
  • log-adapter

Чтоб сделать компонент критическим важным, нужно перечислить компоненты через запятую в переменной "CORE_SERVICES" службы backend, например: s3,rabbit,remote-runner,remote-calc

В случае когда переменная "MONITORING_TASKS" не задана, или компоненты не указаны, метод ping всегда будет возвращать статус GREEN

Возможность обновления последовательностей для свойств с автоинкрементом

В разделе "Настройки" - "Команды" (/settings/commands) добавлена команда "Обновить последовательности". Эту команду необходимо выполнять администратору платформы по запросу пользователей при добавлении свойства с автоинкрементом к классу.

Журнал запросов к онтологическому ядру

Для администраторов добавлена возможность просматривать журнал запросов к онтологическому ядру ("Настройки" - "Журнал запросов"). Имеется возможность поиска и просмотр отдельных записей. Запросы в записях представлены как в исходном, так и форматированном виде.

Cтраница "Команды"

Для администраторов добавлена возможность выполнять ряд служебных команд онтологической платформы ("Настройки" - "Команды"). Доступны следующие команды:

  • Очистка кэша приложения - удаление временных данных, которые накопились в процессе работы приложения
  • Режим обслуживания - открытие диалогового окна управления режимом обслуживания для приложения
  • Обновить провайдеры поиска - отправка команды на принудительную загрузку и обновление кода провайдеров поиска
  • Обновить последовательности - обновление последовательностей для автоинкрементных свойств
  • Настройка LLM - указание необходимых для подключения к LLM параметров

Возможность подать заявку на удаление аккаунта

Теперь пользователи могут подать заявку на удаление своего аккаунта (по умолчанию возможность отключена). Аккаунт перейдет в неактивное состояние и будет автоматически удален через количество дней, указанных в переменной USER_DELETE_TIMEOUT_DAYS службы backend. В класс "Пользователи" добавлено поле "Дата подачи заявки на удаление".

Отображение дискурсов в компоненте предварительного просмотра

При использовании предварительного просмотра в рабочих пространствах и в реестрах, добавлено отображение дискурсов для следующих типов объектов:

  • онтология
  • диаграмма
  • семантический поиск
  • правила
  • структурированный документ

Прочие изменения

  • исходный код провайдера индексации теперь вычитывается каждый раз при старте задачи индексации
  • улучшена обработка ошибок при выполнении хранимых процедур из кода обработчика
  • теперь при открытии любой страницы в неподдерживаемом браузере не происходит навигация на отдельную страницу ошибки, сообщение отображается без изменения текущего url
  • исправлены ошибки при работе древовидного поиска
  • добавлена возможность перетаскивать страницы и объекты из реестров в пользовательское меню, а также возможность закрепить отдельные пункты меню
  • в поле поиска отношений кнопка сброса введенного текста для поиска не отображается, если текст не введен
  • выровнен размер иконок в верхнем меню
  • некорректно формировалась ссылка на загруженный документ
  • исправлена ошибка в работе семантического поиска, появляющаяся в определенных ситуациях