Миграция с Classic UI
Вследствие несовместимости между Classic и Flow UI автоматическое обновление с Jmix 1.5 Classic UI до Jmix 2.1 невозможно. В этом разделе приведена инструкция по апгрейду приложения на основе Jmix 1.5 Classic UI вручную.
Преобразование в проект на Flow UI
Сначала необходимо удалить Classic UI из проекта и адаптировать структуру проекта и скрипты сборки к Flow UI.
-
Откройте проект на Classic UI в IDE.
Далее мы будем называть этот проект "мигрирующим".
-
Создайте новый проект на последней версии Jmix 1.5 в другом каталоге, используя шаблон
Full-Stack Application with Incubating FlowUI
. Выберите то же имя и базовый пакет, что и в мигрирующем проекте.Далее мы будем называть этот проект "созданным".
-
Скопируйте следующие файлы из корневого каталога созданного проекта в мигрирующий:
.gitignore build.gradle package.json tsconfig.json types.d.ts vite.config.ts
Здесь и далее производите копирование, выполнив команду Copy в окне инструментов Project исходного проекта, а затем команду Paste на соответствующем узле целевого проекта.
-
В мигрирующем проекте удалите следующие каталоги (выключите Safe delete чтобы избежать бесполезных предупреждений от IDE):
-
src/main/java/<base_package>/screen
-
src/main/resources/<base_package>/screen
-
src/main/themes
-
src/main/resources/<base_package>/theme
-
-
Скопируйте следующие каталоги из созданного проекта в мигрирующий:
-
frontend
-
src/main/java/<base_package>/view
-
src/main/resources/<base_package>/view
-
src/main/resources/META-INF
-
-
В файле
application.properties
мигрирующего проекта:-
Удалите свойства
jmix.ui.*
. -
Скопируйте свойства
jmix.flowui.*
,ui.*
,vaadin.*
из созданного проекта в мигрирующий.
-
-
Скопируйте файл
src/main/resources/<base_package>/menu.xml
из созданного проекта в мигрирующий и перезапишите существующий файл. -
Откройте файл
src/main/resources/<base_package>/messages_en.properties
мигрирующего проектв и удалите сообщения<base_package>.screen.*
и<base_package>/menu.application
. Скопируйте сообщения<base_package>.view.*
и<base_package>/menu.application.title
из такого же файла созданного проекта. -
Скопируйте классы
FullAccessRole
иUiMinimalRole
пакета<base_package>.security
из созданного проекта в мигрирующий. -
В других имеющихся ролях мигрирующего проекта удалите аннотации
io.jmix.securityui.role.annotation.MenuPolicy
иio.jmix.securityui.role.annotation.ScreenPolicy
. -
Добавьте следующий код в заголовок главного класса приложения:
@Push @Theme(value = "<project_name>") @PWA(name = "<project_name>", shortName = "<project_name>") class ... implements AppShellConfigurator
Например:
// ... import com.vaadin.flow.component.page.AppShellConfigurator; import com.vaadin.flow.component.page.Push; import com.vaadin.flow.server.PWA; import com.vaadin.flow.theme.Theme; // ... @Push @Theme(value = "onboarding") @PWA(name = "Onboarding", shortName = "Onboarding") @SpringBootApplication public class OnboardingApplication implements AppShellConfigurator {
-
Запустите команду Reload All Gradle Projects в окне инструментов Gradle чтобы заново импортировать проект в IDE.
-
Обновите проект до версии Jmix 2.1, используя стандартную процедуру апгрейда проекта в Studio.
-
Добавьте в проект необходимые дополнения используя Marketplace или руководствуясь инструкциями по ручной установке этих дополнений.
-
Выполните команду Build → Build Project и устраните ошибки компиляции, если они возникнут.
-
Запустите приложение.
-
Studio отбразит окно Liquibase Root Changelog Check и предложит удалить команды
include
, ссылающиеся на модули, которых нет в проекте Jmix 2.1 Flow UI (например,/io/jmix/uidata/liquibase/changelog.xml
). Примите предложенные изменения и продолжите. -
Studio создаст Liquibase changelog с командами для удаления таблиц
UI_FILTER_CONFIGURATION
,UI_SETTING
иUI_TABLE_PRESENTATION
. Эти команды следует сохранить и применить, так как данные таблицы не содержат никаких полезных данных для Flow UI. -
Если в базе данных есть таблицы дополнений, отсутствующих в Jmix 2.1, убедитесь что эти таблицы не будут удалены. Либо нажмите Remove from Changelog → Remove and Ignore для соответствующего узла с командой
dropTable
в окне генерации файлов Liquibase changelog, либо отмените процесс и добавьте свойствоmain.datasource.studio.liquibase.exclude-prefixes
перед тем как запускать приложение снова. Например:main.datasource.studio.liquibase.exclude-prefixes = FOO_
-
После старта приложения вы сможете войте в приложение и открыть стандартные экраны управления пользователями.
Разработка новых экранов
На данный момент вы получили работающее приложение, основанное на Jmix 2.1. Его пользовательский интерфейс включает в себя только экраны, предоставляемые шаблоном нового приложения: LoginView
, MainView
, UserListView
и UserDetailView
.
На следующем шаге можно создать CRUD-экраны для объектов вашей модели данных, используя Мастер создания экранов.
В результате у вас получится приложение со старой моделью данных и бэкенд-логикой, а также с новым пользовательским интерфейсом, который позволяет управлять данными с помощью стандартных экранов списка/деталей. Теперь вам нужно кастомизировать пользовательский интерфейс, используя Flow UI API и его набор компонентов.