Что нового
В данном разделе приведена информация о новой функциональности и возможных несовместимых изменениях в фреймворке 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.