Важные изменения

Версия 6.10.2

1. Обновление алгоритмов сопоставления

После обновления до версии 6.10.2 для корректной работы правил сопоставления необходимо:

  1. Создать черновик модели правил сопоставления.

  2. Удалить все назначения таблиц и наборов правил на реестры и справочники.

  3. Опубликовать черновик.

  4. Создать новый черновик модели правил сопоставления.

  5. Добавить заново назначения таблиц и наборов правил на реестры и справочники.

  6. Опубликовать новый черновик.

  7. Поскольку все таблицы сопоставления в БД будут удалены и созданы заново, то необходимо выполнить операцию сопоставления данных для пересчета кластеров дубликатов.

Версия 6.10.1

1. Рекомендации по переиндексации

При переходе на 6.10.1 необходима переиндексация данных (записи, связи, черновики, классификации) с флагами "Очистить индексы" и "Обновить маппинги". Прежде всего это влияет на реестры/справочники, на которых есть назначения классификаторов.

2. Особенности ограничений на сборках SE и EE редакций

  • Количество ядер процессора: в EE редакции = 16, в SE = 8, если иное значение не указано напрямую в лицензии.

  • Количество узлов поискового движка и платформы: в EE редакции - не ограничено, в SE = 2, если иное значение не указано напрямую в лицензии.

  • Ограничение многопоточности операций переиндексации данных (reindexDataJob) применяется только для редакции SE (по умолчанию reindexDataJob выполняется только на одном узле - в лицензии можно отключить это ограничение). В сборке EE операция выполняется на всех узлах, не зависимо от того, что указано в лицензии.

Версия 6.10

1. Валидация атрибутов типа "Ссылка на справочник"

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

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

Пример ошибки: "Атрибут [wrong_atr] справочника [ref_name], на который ссылается атрибут [link] в [entity_name], должен быть обязательным и отображаемым".

В случае невозможности исправления модели через UI необходимо:

  1. Зайти в раздел "Импорт/экспорт" и экспортировать модель данных в формате xml.

  2. Открыть скачанный файл любым редактором, найти элемент реестра register, в котором происходит ошибка (в примере [entity_name]). См. Рисунок 1.

  3. Найти атрибут типа "Ссылка на справочник" из ошибки (в примере [link]) и удалить в элементе атрибута строку с элементом "lookupEntityDisplayAttributes" и именем атрибута справочника из ошибки (в примере [wrong_atr]). См. Рисунок 2.

  4. Проделать шаги 2-3 для всех атрибутов из ошибки. Сохранить файл.

  5. Импортировать файл модели обратно в систему.

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

Пример кода для реестра:

<register version="37" name="test" displayName="test" description="" dashboardVisible="false" flyweight="false" hierarchical="false" maxHierarchyLevel="0">
   <simpleAttribute name="dd" displayName="dd" description="" readOnly="false" hidden="false" nullable="false" order="1" searchable="true" displayable="true" mainDisplayable="true" useAttributeNameForDisplay="false" simpleDataType="Integer" enumDataType="" linkDataType="" unique="false" searchMorphologically="false" searchCaseInsensitive="false" searchWithTransliteration="false" lookupEntityType="">
     <customProperties name="DATACARD_ATTRIBUTE_PREVIEW_TYPE" value="default"/>
     <customProperties name="DATACARD_ATTRIBUTE_TYPE" value="default"/>
     <lookupLink xmlns="">false</lookupLink>
   </simpleAttribute>
   <simpleAttribute name="link" displayName="link" description="" readOnly="false" hidden="false" nullable="true" order="5" searchable="false" displayable="true" mainDisplayable="false" useAttributeNameForDisplay="false" enumDataType="" linkDataType="" unique="false" searchMorphologically="false" searchCaseInsensitive="false" searchWithTransliteration="false" lookupEntityType="test_spr" lookupEntityCodeAttributeType="String">
     <customProperties name="DATACARD_ATTRIBUTE_PREVIEW_TYPE" value="default"/>
     <customProperties name="DATACARD_ATTRIBUTE_TYPE" value="default"/>
     <lookupEntityDisplayAttributes>wrong_atr</lookupEntityDisplayAttributes>
     <lookupLink xmlns="">true</lookupLink>
   </simpleAttribute>
 </register>

Пример кода для атрибута:

<simpleAttribute name="link" displayName="link" description="" readOnly="false" hidden="false" nullable="true" order="5" searchable="false" displayable="true" mainDisplayable="false" useAttributeNameForDisplay="false" enumDataType="" linkDataType="" unique="false" searchMorphologically="false" searchCaseInsensitive="false" searchWithTransliteration="false" lookupEntityType="test_spr" lookupEntityCodeAttributeType="String">
     <customProperties name="DATACARD_ATTRIBUTE_PREVIEW_TYPE" value="default"/>
     <customProperties name="DATACARD_ATTRIBUTE_TYPE" value="default"/>
     <lookupEntityDisplayAttributes>wrong_atr</lookupEntityDisplayAttributes>
     <lookupLink xmlns="">true</lookupLink>
   </simpleAttribute>
Элемент реестра (register)

Рисунок 1 - Элемент реестра (register)

Элемент "lookupEntityDisplayAttributes"

Рисунок 2 - Элемент "lookupEntityDisplayAttributes"

2. Модуль уведомлений org.universe.mdm.notifications

Изменился сегмент отправки уведомлений о вставке записи com.universe.mdm.notifications[SEND_UPSERT_NOTIFICATION].

После обновления для использования старой версии сегмента необходимо установить параметр com.universe.mdm.notifications.notifications.upsert.version=1.

Подробнее см. в журнале тех. изменений.

3. Настройка кластерной конфигурации

В каталог unidata-deploy добавлены следующие файлы:

  • docker-compose-cluster.yaml

  • haproxy.cfg

Обновлен файл .env - добавлен блок настроек для запуска кластерной конфигурации "Settings for cluster", часть переменных из которых содержится в файле платформы backend.properties.

Запуск кластерной конфигурации осуществляется командой:

docker-compose -f docker-compose-cluster.yaml up -d

После запуска будет создан контейнер с балансировщиком haproxy и по два контейнера с BE и FE.

Проверка работы балансировщика haproxy доступна по адресу http://ip:8087/haproxy_stats.

Запросы с http://ip:8087 будут перенаправляться на ui и ui2 в режиме roundrobin.

Связь между контейнерами осуществляется следующим образом: ui - mdm и ui2 - mdm2.

Конфигурация портов:

  • Frontend Ports (для Standard Edition):

    • FRONTEND_PORT=28080

    • FRONTEND_PORT_2=28081

  • Backend Ports (для Standard Edition):

    • BACKEND_PORT=29080

    • BACKEND_PORT_2=29081

  • Frontend Ports (для Enterprise Edition):

    • FRONTEND_PORT=8082

    • FRONTEND_PORT_2=8083

  • Backend Ports (для Enterprise Edition):

    • BACKEND_PORT=9081

    • BACKEND_PORT_2=9082

Система доступна по адресу http://ip:8087, а также каждый ui отдельно:

  • ui http://ip:28080 и ui2 http://ip:28081 (для Standard Edition)

  • ui http://ip:8082 и ui2 http://ip:8083 (для Enterprise Edition)

Версия 6.9
  1. Устаревшая версия REST API

В релизе 6.9 REST API версия v1 отмечена как устаревшая, поэтому исключена из продуктов Юниверс. Описанные ниже запросы доступны только в версии v2:

Исключены из SE/EE:

  • org.unidata.mdm.rest.core

  • org.unidata.mdm.rest.v1.search

  • org.unidata.mdm.rest.v1.meta

  • org.unidata.mdm.rest.v1.data

  • org.unidata.mdm.rest.v1.draft

  • org.unidata.mdm.rest.v1.dq.core

  • org.unidata.mdm.rest.v1.dq.data

  • org.unidata.mdm.rest.v1.bulk.core

  • org.unidata.mdm.rest.v1.matching.core

  • org.unidata.mdm.rest.v1.matching.data

  • com.unidata.mdm.rest.v1.bulk.remove.records

  • com.unidata.mdm.rest.v1.workflow.core

Исключены из CE:

  • org.unidata.mdm.rest.core

  • org.unidata.mdm.rest.v1.data

  • org.unidata.mdm.rest.v1.meta

  • org.unidata.mdm.rest.v1.draft

  • org.unidata.mdm.rest.v1.search

  • org.unidata.mdm.rest.v1.dq.core

  • org.unidata.mdm.rest.v1.dq.data

  • org.unidata.mdm.rest.v1.matching.core

  • org.unidata.mdm.rest.v1.matching.data

  • org.unidata.mdm.rest.v1.bulk.core

  1. Миграция с Elasticsearch на OpenSearch

Предупреждение

В релизе 6.9 Юниверс MDM перешла с Elasticsearch на OpenSearch. Появились изменения публичного API.

  • Изменилась сигнатура org.unidata.mdm.search.service.SearchService#setIndexSettings. Настройки передаются как IndexSettings, а не Map<String, Object>. Пример использования нового класса: org.unidata.mdm.job.reindex.service.impl.ReindexDataJobPrepareItemWriter#PREPARE_INDEX_PARAMS.

  • org.unidata.mdm.search.service.impl.AdminComponentImpl#getNodesInfo переименован в org.unidata.mdm.search.service.impl.AdminComponentImpl#getNodesCount и возвращает число узлов. Если необходима остальная информация по узлам, требуется доработка.

  • Конструкторы AdminComponentImpl, SearchComponentImpl и SearchServiceImpl принимают org.unidata.mdm.search.service.impl#OpenSearchClientWrapper вместо org.elasticsearch.client.Client.

  • Изменен класс, возвращаемый protected-методами BaseComponentImpl.

  • Изменен класс, возвращаемый public-методами SearchComponentImpl. Обработкой таких значений занимается org.unidata.mdm.search.service.impl.SearchServiceImpl#extractSearchResult(org.unidata.mdm.search.context.SearchRequestContext, java.util.List<org.universe.opensearch.client.opensearch.core.SearchResponse<com.fasterxml.jackson.databind.node.ObjectNode>>).

  • В параметре org.unidata.mdm.core.audit.enabled.storages изменено одно из возможных значений: es → index.

При переходе на OpenSearch необходимо выполнить дополнительные шаги для сохранения данных аудита.

  1. Проверки аутентификации по имени пользователя и IP адресу

В релизе 6.9 были добавлены проверки аутентификации пользователей и задача по очистке старых паролей.

При установке системы с нуля или обновлении с более старых версий необходимо в файл backend.properties внести параметр org.unidata.mdm.core.job.clean.inactive.passwords.cronex или INACTIVE_PASSWORD_CLEAN_JOB_CRONEX переменную среды контейнера для запуска очистки паролей.

Остальные параметры доступны для редактирования через UI и не требуют дополнительной записи в файл.

  1. Обновление прав пользователя без выхода из системы

Обновление прав пользователя, его ролей и групп происходит без необходимости выходить из системы и заново авторизовываться:

  • Если пользователь обновляет собственные настройки, то изменения автоматически обновятся на UI.

  • Если пользователь обновляет настройки другого аккаунта, то на экране пользователя, имеющего активную сессию, отобразится модальное окно с возможностью принять обновления (Рисунок 1).

Модальное окно с уведомлением об изменениях

Рисунок 1 – Модальное окно с уведомлением об изменениях

  1. Дополнительные события аудита

При обновлении системы с существующей БД новые события аудита будут доступны только после выполнения следующих действий:

  • В параметр системы "Хранилище журнала аудита" org.unidata.mdm.core.audit.enabled.storages добавьте значение "index".

  • Обновите пути аудита "Маршруты сообщений модуля Core" org.unidata.mdm.system.messaging.domains.core-messaging из core.xml.

  1. Обновление шаблона Excel для импорта / экспорта записей

Было изменено название листа комплексного атрибута в XLSX-файле. Теперь указывается имя самого атрибута и имя вложенного объекта.

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

Версия 6.8
  1. Миграции базы данных

Предупреждение

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

Если при обновлении с предыдущих версий необходимо мигрировать существующие базы данных, то выполните следующие действия:

  • Создайте резервные копии БД и поисковых индексов.

  • Обновите систему до Юниверс MDM 6.8. Не запускайте систему.

  • До запуска системы выполните следующий SQL-код вручную:

    alter extension "uuid-ossp" set schema public;
    alter extension "postgres_fdw" set schema public;
    alter extension "hstore" set schema public;
    
  • Расширение timescaledb (схема org_unidata_mdm_timelog) при этом не обновляется. Чтобы обновить расширение, пересоздайте его с удалением. Выполните следующий SQL-код вручную:

    drop schema if exists org_unidata_mdm_timelog_core cascade;
    drop extension if exists timescaledb cascade;
    
  • При запуске системы применятся все изменения, будет создана новая схема org_unidata_mdm_timelog.

Это не затрагивает сценарий первичной установки Юниверс MDM 6.8. При установке на чистый сервер миграции инициализируют базу данных автоматически.

  1. Миграция данных в Docker volumes

В версии 6.8 изменились имена Docker volumes. Изменение влияет на случаи, когда необходимо обновить Юниверс MDM с более ранних версий, и если система была установлена через Docker, а данные при этом хранились в Docker volumes. Чтобы провести миграции volumes вам необходимо обратиться к вендору за инструкцией.

  1. Устаревшая версия REST API

Предупреждение

В релизе 6.8 запросы REST API v1 отмечены как устаревшие, так как не совместимы с новой моделью безопасности системы. В следующем релизе API v1 будет удален. Рекомендуется переход на v2.

  1. Невозможность обновления прав доступа

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

  1. Переход формата времени на UTC

Начиная с версии 6.7 timestamp перешел на UTC (Zulu time), в связи с этим формат времени должен оканчиваться на букву Z.