Модульная архитектура
Система Юниверс MDM состоит из набора модулей, что создают MDM-системы, обладающие только необходимыми инструментами и функциями. Модульная архитектура имеет следующие особенности:
- Различаются frontend и backend модули. 
- Различаются свободные модули и проприетарные. 
- Отдельный инструмент MDM может содержаться как в одном модуле, так и сразу в нескольких. Таким образом, для использования отдельных инструментов может потребоваться подключить несколько модулей. 
- Существует системный набор модулей, без которых система не способна работать. 
Примечание
В различных проектах может быть свой состав модулей.
Каждый модуль отвечает за определенные возможности системы. Обмен данными между модулями системы осуществляется с помощью REST API, основная документация по работе с которым хранится в Swagger.
Актуальный список REST-методов доступен по ссылке http://<хост>:<порт>/universe-backend/api. См. подрообнее о работе в Swagger.
Модули с приставкой "rest" в имени - это модули, отвечающие за предоставление API и endpoint-ы. При обращении к ним они проверяют корректность запроса и, если все верно, отдают инструкции другим модулям. В одной операции может быть задействовано несколько модулей.
Перечень модулей системы
| Модуль | Системное имя модуля | Описание модуля | 
|---|---|---|
| Пакетный экспорт записей в XLSX | com.unidata.mdm.bulk.export.records.xlsx | Пользовательская пакетная операция экспорта записей в Excel. | 
| Пакетное удаление записей | com.unidata.mdm.bulk.remove.records | Пользовательская пакетная операция удаления записей. | 
| Параметрические классификаторы | com.unidata.mdm.classifiers | Модуль управления классификаторами. | 
| Краулер для PostgreSQL | com.unidata.mdm.crawler.postgres | Референсная реализация краулера данных PostgreSQL. | 
| Модуль EE | com.unidata.mdm.ee | Модуль с уникальным для EE редакции функциями (инициализация некоторых полей лицензии со стандартными значениями для EE редакции, гостевой режим и т.п.). | 
| Операция экспорта данных | com.unidata.mdm.job.export.data | Фоновая пакетная операция экспорта данных. | 
| Операция миграции | com.unidata.mdm.job.migrate | Операция миграции данных с Юниверс MDM 5.X на 6.X. | 
| Лицензия | com.unidata.mdm.license | Модуль проверки лицензий. | 
| Пакетная операция экспорта записей XLSX REST | com.unidata.mdm.rest.v1.bulk.export.records.xlsx | REST API v1 пользовательской пакетной операции экспорта записей в Excel. | 
| Классификаторы REST | com.unidata.mdm.rest.v1.classifiers | REST API V1 модуля классификаторов. | 
| Лицензия REST | com.unidata.mdm.rest.v1.license | REST API v1 модуля проверки лицензий. | 
| Операция пакетного удаления записей REST | com.unidata.mdm.rest.v2.bulk.remove.records | REST API v2 пользовательской пакетной операции удаления записей. | 
| Модуль бизнес-процессов REST | com.unidata.mdm.rest.v2.workflow.core | REST API v2 модуля управления бизнес-процессами. | 
| Модуль системных ограничений | com.unidata.mdm.system.limits | Модуль для задания тех или иных ограничений в системе. Регулирует доступность бизнес-процессов, реестров, ядер и т.д. | 
| Модуль управления бизнес-процессами | com.unidata.mdm.workflow.core | Основной модуль управления бизнес-процессами (BPMN). Поддерживает управление и выполнение произвольных BPMN процессов. Построен на основе Camunda. | 
| Данные бизнес-процессов | com.unidata.mdm.workflow.data | Модуль соединения модулей управления бизнес-процессами и модуля данных. Содержит компоненты, необходимые для построения взаимодействия между модулями при наступлении событий в каждом из них, и обеспечивающие передачу таких событий между модулями. | 
| Модуль экспорта классификации XLSX | com.universe.mdm.bulk.export.classification.data.xlsx | Модуль, отвечающий за экспорт данных классификации в формате XLSX. | 
| Модуль импорта классификации XLSX | com.universe.mdm.bulk.imprt.classification.data.xlsx | Модуль, отвечающий за иимпорт данных классификации в формате XLSX. | 
| Пакетная модификация записей классификации | com.universe.mdm.bulk.modify.classifications | Модуль пакетной операции модификации записей классификации. | 
| Пакетная операция модификации записей | com.universe.mdm.bulk.modify.records | Модуль пакетной операции модификации записей. | 
| Основной коммерческий модуль | com.universe.mdm.core | Коммерческий модуль, отвечающий за замещения, группы пользователей и пр. | 
| Импорт данных из очередей | com.universe.mdm.data.recipient | Модуль подключения к очереди, в которую поступают данные. | 
| Модуль качества данных классификации | com.universe.mdm.dq.classifiers | Модуль качества данных классификации. | 
| Данные + Качество + Процессы интеграция | com.universe.mdm.dqw | Интеграционный модуль, реализующий видимость одновременно данных, качества и процессов. | 
| Модуль интеграции LDAP | com.universe.mdm.ldap.integration | Модуль интеграции с Active Directory, который включает в себя: импорт профилей и групп из AD по расписанию; аутентификацию (проверку подлинности); авторизацию (предоставление доступа к какому-либо ресурсу) с учетом групп AD; sso (работа с UniverseMDM после авторизации в AD). Текущая функциональность позволяет настроить параметры синхронизации пользователей и групп и провести их синхронизацию. | 
| Поддержка классификации в модуле metadriven | com.universe.mdm.metadriven.classifier | Metadriven компоненты для работы с моделью доменного классификатора. | 
| Основной модуль Metadata-driven REST API | com.universe.mdm.metadriven.core | Основной модуль Metadata-driven REST API. Предоставляет операции над данными в "естественном" виде REST API. Структура объектов передаваемых в рамках API зависят от модели данных. | 
| Модуль MetaDrivenDQ | com.universe.mdm.metadriven.dq | Модуль MetaDrivenDQ. | 
| Smart ETL. Нотификации | com.universe.mdm.notifications | Модуль отправки событий в сервис ETL. | 
| Пакетная операция экспорта классификации XLSX REST V1 | com.universe.mdm.rest.v1.bulk.export.classifications.xlsx | REST API v1 операции пакетного экспорта классификации - модуль фрагмента классификаций. | 
| Пакетная модификация записей REST V1 - классификация | com.universe.mdm.rest.v1.bulk.modify.classifications | REST API v1 операции пакетной модификации записей классификации - модуль фрагмента классификаций. | 
| Пакетная модификация записей REST | com.universe.mdm.rest.v1.bulk.modify.records | REST API v1 операции пакетной модификация записей. | 
| Основной коммерческий модуль REST | com.universe.mdm.rest.v1.core | REST API v1 коммерческого модуля. | 
| LDAP REST API V1 | com.universe.mdm.rest.v1.ldap.integration | REST API v1 модуля интеграции LDAP. | 
| Metadata-driven REST API V1 | com.universe.mdm.rest.v1.metadriven | REST API v1 модуля Metadata-driven. | 
| Пакетные операции | org.unidata.mdm.bulk.core | Модуль массовых операций. Содержит сервис для работы с массовыми операциями: регистрация, запуск и т.п. | 
| Основной модуль UniData | org.unidata.mdm.core | Модуль общих сервисов системы. Содержит различные вспомогательные сервисы, предоставляющие общие и/или вспомогательные функции для прочих модулей. В частности: сервисы подсистемы безопасности, фоновых операций, аудита, мониторинга, владельцев и т.д. | 
| Модуль данных | org.unidata.mdm.data | Модуль данных. Содержит все связанное с данными: модель данных, сервисы для выполнения операций на записях и данных и т.п. | 
| Качество данных (DQ) | org.unidata.mdm.dq.core | Основной модуль Data Quality. Содержит модель качества данных и общие стандартные функции. Предоставляет главную точку входа для применения правил качества. | 
| Данные в DQ | org.unidata.mdm.dq.data | Модуль, связывающий модуль данных с модулем DQ. Содержит сегменты (потоков выполнения) для применения правил качества, а также стандартные функции, применимые только к объектам модуля данных. | 
| Модуль черновиков | org.unidata.mdm.draft | Модуль, который содержит все связанное с черновиками. Другие модули, которые используют функции черновиков, зависят от этого модуля. | 
| Операция переиндексации | org.unidata.mdm.job.reindex | Модуль операции переиндексации данных. | 
| Основной модуль сопоставления | org.unidata.mdm.matching.core | Основной модуль матчинга (сопоставления данных). Содержит модель матчинга. Содержит сервисы для выполнения матчинга и работы с кластерами дубликатов. | 
| Данные матчинга (сопоставления данных) | org.unidata.mdm.matching.data | Модуль, связывающий модуль данных с модулем матчинга. Содержит сегменты (потоков выполнения) для применения матчинга, а также фракции матчинга для операции переиндексации данных. | 
| Postgres хранилище данных матчинга (сопоставления) | org.unidata.mdm.matching.storage.postgres | Модуль хранилища данных для сопоставления. Использует для хранения данных БД PostgreSQL и предоставляет алгоритм сопоставления п | 
| UniData Meta модуль | org.unidata.mdm.meta | Модуль абстрактной модели данных. Содержит обобщенные типы, примитивы и прочее, необходимое для реализации различных моделей данных Также содержит сервисы перечислений, единиц измерений и систем-источников. | 
| REST модуль System | org.unidata.mdm.rest.system | Модуль общих типов и примитивов REST API системы. Не содержит реализаций, используется для создания REST API прочих модулей. | 
| Пакетные операции REST | org.unidata.mdm.rest.v2.bulk.core | REST API v2 модуля пользовательских пакетных операций. | 
| Основной REST модуль | org.unidata.mdm.rest.v2.core | REST API v2 модуля общих сервисов системы. | 
| REST Модуль данных V2 | org.unidata.mdm.rest.v2.data | REST API v2 работы с данными: атомарные запросы, избранное, записи и связи и т.д. | 
| REST модуль качества данных (DQ) | org.unidata.mdm.rest.v2.dq.core | REST API v2 управления моделью качества (функции качества, правила). | 
| REST DQ данных | org.unidata.mdm.rest.v2.dq.data | REST API v2 сегментов результата проверки (для рендеринга операций над данными) и сервисы проверки записей. | 
| REST модуль черновиков | org.unidata.mdm.rest.v2.draft | REST API v2 модуля черновиков (org.unidata.mdm.draft). | 
| REST сопоставления | org.unidata.mdm.rest.v2.matching.core | REST API v2 управления моделью сопоставления (таблицы, алгоритмы, назначения и т.д). | 
| REST сопоставления данных | org.unidata.mdm.rest.v2.matching.data | REST API v2 сегментов результата сопоставления (для рендеринга операций над данными). | 
| UniData V2 REST Meta | org.unidata.mdm.rest.v2.meta | REST API v2 работы с моделью данных: перечисления, системы источники, реестры/справочники/связи, группы и т.д. | 
| REST поиска V2 | org.unidata.mdm.rest.v2.search | REST API v2 модуля поиска (org.unidata.mdm.search). | 
| Модуль поиска UniData | org.unidata.mdm.search | Модуль поиска. Выполняет все задачи, связанные с поисками в системе, а именно: управление (включая создание) поисковыми индексами, выполнение поисковых запросов и т.д. Реализовано на базе Opensearch. | 
| Модуль System | org.unidata.mdm.system | Системный обязательный модуль. Содержит различные сервисы по работе с модулями, потоками выполнения, запуска системы, пространств имен, миграции БД и прочее. Обязательный модуль для работы приложения, построенного на базе системы, и содержит необходимый минимум для поддержки модульной архитектуры, и модулей на ее базе. | 
| Операция консолидации данных | org.universe.mdm.job.duplicate | Модуль пакетной операции консолидации. | 
| Операция матчинга (сопоставления) | org.universe.mdm.job.matching | Модуль пакетной операции сопоставления. | 
| Операция переприменения данных | org.universe.mdm.job.reapply | Модуль пакетной операции переприменения данных. | 
| Маркирование | org.universe.mdm.marks | Модуль маркирования различных объектов платформы (например, оценки и комментарии). | 
| REST Оценок V1 | org.universe.mdm.rest.v1.marks | REST API v1 модуля маркирования объектов. | 
Использование Frontend-модулей
Система Юниверс MDM содержит множество точек расширения, каждая из которых имеет свой идентификатор.
Модули содержат в себе набор расширений. Таким образом, при подключении модуля, его расширения подставляются в точки расширения приложения. При этом имеется возможность переопределить какое-то расширение через стандартный механизм (UI UserExits).
Каждая точка расширения предоставляет контракт по взаимодействию родительского и дочернего модулей. Родительским модулем считается модуль, в который встраивается расширение, а дочерним тот, который встраивается в родительский.
Взаимодействие между дочерними модулями возможно только через родителя-посредника. Например, могут быть базовые взаимодействия на базе контрактов. Для написания особых взаимодействий родительский модуль должен быть расширяемым.
Компонент модуля может как хранить данные самостоятельно, так и принимать их снаружи через контракт.