Миграция с Classic UI
Вследствие несовместимости между Classic и Flow UI автоматическое обновление с Jmix 1.x Classic UI до Jmix 2.3 невозможно.
Есть два метода ручной миграции. Первый из них более универсальный и применим к проектам, использующим как Jmix 1.5, так и 1.6, но он также более трудоемкий. Этот метод подробно описан в руководстве на форуме.
Второй метод основан на том, что в составе Jmix 1.5 есть экспериментальная реализация Flow UI, и Studio может автоматически мигрировать проекты, использующие Flow UI, с версии 1.5 на последнюю версию 2.x. Этот метод может использоваться только для проектов, основанных на Jmix 1.5.
Ниже в данном разделе приведена инструкция по апгрейду приложения на основе 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.3, используя стандартную процедуру апгрейда проекта в Studio.
-
Добавьте в проект необходимые дополнения используя Marketplace или руководствуясь инструкциями по ручной установке этих дополнений.
-
Выполните команду Build → Build Project и устраните ошибки компиляции, если они возникнут.
-
Запустите приложение.
-
Studio отбразит окно Liquibase Root Changelog Check и предложит удалить команды
include, ссылающиеся на модули, которых нет в проекте Jmix 2.3 Flow UI (например,/io/jmix/uidata/liquibase/changelog.xml). Примите предложенные изменения и продолжите. -
Studio создаст Liquibase changelog с командами для удаления таблиц
UI_FILTER_CONFIGURATION,UI_SETTINGиUI_TABLE_PRESENTATION. Эти команды следует сохранить и применить, так как данные таблицы не содержат никаких полезных данных для Flow UI. -
Если в базе данных есть таблицы дополнений, отсутствующих в Jmix 2.3, убедитесь что эти таблицы не будут удалены. Либо нажмите Remove from Changelog → Remove and Ignore для соответствующего узла с командой
dropTableв окне генерации файлов Liquibase changelog, либо отмените процесс и добавьте свойствоmain.datasource.studio.liquibase.exclude-prefixesперед тем как запускать приложение снова. Например:main.datasource.studio.liquibase.exclude-prefixes = FOO_
-
После старта приложения вы сможете войте в приложение и открыть стандартные экраны управления пользователями.
Разработка новых экранов
На данный момент вы получили работающее приложение, основанное на Jmix 2.3. Его пользовательский интерфейс включает в себя только экраны, предоставляемые шаблоном нового приложения: LoginView, MainView, UserListView и UserDetailView.
На следующем шаге можно создать CRUD-экраны для объектов вашей модели данных, используя Мастер создания экранов.
В результате у вас получится приложение со старой моделью данных и бэкенд-логикой, а также с новым пользовательским интерфейсом, который позволяет управлять данными с помощью стандартных экранов списка/деталей. Теперь вам нужно кастомизировать пользовательский интерфейс, используя Flow UI API и его набор компонентов.