Dynamic Model

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

Основные возможности:

  • Добавление динамических атрибутов к существующим (статическим) сущностям и определение новых динамических сущностей.

  • Хранение расширенных данных в выделенных таблицах базы данных — дополнительных таблицах для статических сущностей и выделенных таблицах для динамических сущностей — для хорошей производительности.

  • Настройка UI времени выполнения путём объявления новых экранов и пунктов меню.

  • Определение валидации, уникальности атрибутов и безопасности на основе ресурсных ролей.

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

  • Предоставление локализованных имён и сообщений для динамической модели.

  • Модель редактируется в графическом административном UI и хранится как версионируемое YAML-определение.

Дополнение Dynamic Model в настоящее время находится в экспериментальном состоянии и может значительно измениться в следующем релизе Jmix.

Dynamic Model и Dynamic Attributes

Jmix предлагает два различных дополнения для расширения модели данных во время выполнения.

Dynamic Attributes хранят дополнительные значения в структуре Entity-Attribute-Value. Они хорошо подходят для определяемых администратором пользовательских полей, добавляемых к существующим сущностям.

Dynamic Model добавляет настоящие атрибуты и новые сущности, опирающиеся на выделенные таблицы базы данных. Помимо данных, она может определять экраны и пункты меню времени выполнения, а её определение модели является редактируемым и версионируемым. Выбирайте Dynamic Model, когда вам нужны новые сущности, выделенные таблицы, UI времени выполнения или управляемое, версионируемое определение модели.

Установка

Для этого дополнения требуется Enterprise подписка. Если у вас нет подписки, ознакомьтесь с разделом Пробная Enterprise+BPM подписка, чтобы получить пробную версию.

Для автоматической установки через Jmix Marketplace следуйте инструкциям в разделе Дополнения.

Для ручной установки выполните следующие шаги.

  1. Настройте доступ к премиум-репозиторию.

    • Добавьте премиум-репозиторий в свой build.gradle:

      repositories {
          // ...
          maven {
              url = 'https://nexus.jmix.io/repository/premium'
              credentials {
                  username = rootProject['premiumRepoUser']
                  password = rootProject['premiumRepoPass']
              }
          }
      }
    • Добавьте учетные данные премиум-репозитория в ~/.gradle/gradle.properties:

      premiumRepoUser=123456123456
      premiumRepoPass=abcdefabcdef

      Получите учетные данные репозитория из вашего лицензионного ключа: первая часть ключа перед тире – это имя пользователя репозитория, часть после тире – пароль. Например, если ваш ключ выглядит как 123456-abcdef abcdef, имя пользователя – 123456, а пароль – abcdef abcdef.

  2. Добавьте зависимости в ваш build.gradle:

    implementation 'io.jmix.dynmodel:jmix-dynmodel-starter'
    implementation 'io.jmix.dynmodel:jmix-dynmodel-flowui-starter'

Важное примечание для приложений в режиме меню Single mode

Если ваше приложение использует режим меню Single mode, вам следует вручную добавить пункты меню после установки дополнения.

  1. Откройте Дизайнер меню в Jmix Studio.

  2. Перейдите на вкладку Structure.

  3. Доступные пункты меню отображаются на левой панели.

    add menu items
  4. Чтобы добавить пункты:

    • Выберите нужные пункты и нажмите кнопку > кнопка (Add Selected).

    • Или перетащите их с левой панели в текущую структуру меню справа.

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