Что нового

В данном разделе приведена информация о новой функциональности и возможных несовместимых изменениях в фреймворке Jmix версии 1.7. Примите их во внимание при обновлении с предыдущей версии фреймворка.

Для фреймворка 1.7 нет Studio с соответствующим номером версии. Вместо этого рекомендуется использовать последнюю доступную Studio 2.x.

Для создания новых проектов рекомендуется использовать Jmix версии 2.x.

Обновление

Для автоматического обновления проекта на Jmix 1.7 требуется Studio 2.5.2 или более поздней версии, поэтому в первую очередь обновите плагин Jmix Studio.

Studio 2.5.2 требует IntelliJ IDEA или OpenIDE версии 2024.3 или выше.

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

  • Обновляет версию Jmix BOM, которая, в свою очередь, определяет версии всех зависимостей.

  • Обновляет версию Jmix Gradle plugin.

  • Обновляет версию Gradle wrapper до 8.12.1 в gradle/wrapper/gradle-wrapper.properties.

Обновленные зависимости

Обновлены следующие важные зависимости:

  • Vaadin 8.14.4

  • EclipseLink 2.7.15

  • Embedded Tomcat 9.0.102

Новая и улучшенная функциональность

Сокращение времени сборки

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

Например, если вы собрали проект, затем изменили контроллер экрана и снова запустили сборку, в консоли должно появиться сообщение: Entities enhancing was skipped, because entity classes haven’t been changed since the last build.

Чтобы отключить это поведение и энхансить все сущности при каждой компиляции, добавьте следующую конфигурацию в build.gradle:

jmix {
    entitiesEnhancing {
        skipUnmodifiedEntitiesEnhancing = false
    }
}

Подробнее см. #4254.

Очистка таблицы токенов OAuth2

В таблицы oauth_access_token и oauth_refresh_token добавлен столбец expires_at. Он заполняется датой истечения срока действия, взятой из данных токена при его создании.

Новый сервис OAuth2ExpiredTokenCleaner позволяет удалять просроченные access/refresh токены. Если вы хотите вызывать его регулярно, настройте задание Quartz.

Обратите внимание, что существующие записи не будут обновлены при миграции, и в столбце expires_at у них останутся значения null. Таким образом, OAuth2ExpiredTokenCleaner не удалит эти записи. Если нужно очистить старые записи, выполните соответствующий SQL-запрос вручную.

Подробнее см. #4120.

Колонки Table и DataGrid

Раньше, если имя любой колонки изменялось, все пользовательские настройки игнорировались для всего компонента. Теперь настройки колонок применяются для всех неизменённых колонок.

Подробнее см. #3953.

Обновление состояния действий

Теперь при открытии каждого экрана в AfterShowEvent состояние всех его действий обновляется в соответствии со списком EnabledRule.

Подробнее см. #3907.

Размеры диалогового режима по умолчанию

Высота и ширина dialogMode для генерируемых экранов теперь по умолчанию установлены в AUTO.

Подробнее см. #3952.

Список всех перечислений

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

Подробнее см. #3930.

Опасные изменения

Данный релиз не содержит опасных изменений.

Список изменений

  • Решенные проблемы в Jmix Framework: