Команда Jmix рада сообщить о выпуске Jmix 2.4. В этом обновлении представлены мощные дополнения и улучшения, ориентированные на различные требования разработки, от усовершенствований пользовательского интерфейса до возможностей интеграции. Подробный обзор всех изменений и информацию о переходе на новую версию можно найти на странице Что нового в документации.
Рассмотрим ключевые функции Jmix 2.4.
Дополнение Calendar
Новое дополнение Calendar предоставляет UI-компонент FullCalendar
, основанный на популярной JavaScript-библиотеке FullCalendar. Компонент FullCalendar
поддерживает разные режимы отображения, такие как день, неделя и месяц. Пользователи могут взаимодействовать с событиями, перетаскивая их для изменения времени и растягивая для корректировки продолжительности.
Компонент FullCalendar позволяет добавлять различные поставщики данных, например, ContainerDataProvider
для создания событий календаря из JPA или DTO сущностей.
Это дополнение позволяет разработчикам добавлять современный и функциональный календарь в свои приложения на базе Jmix.
Дополнение PivotTable
Дополнение PivotTable предоставляет UI-компонент PivotTable
, основанный на библиотеке PivotTable.js. Этот компонент идеально подходит для анализа и визуализации данных, позволяя пользователям:
- Создавать интерактивные сводные таблицы для визуального исследования данных.
- Использовать функцию перетаскивания для легкой перестройки и группировки данных.
- Выполнять агрегацию данных с помощью сумм, средних значений, подсчета и других методов.
Компонент PivotTable с интуитивно понятным интерфейсом упрощает работу со сложными данными.
Дополнение Kanban
Дополнение Kanban добавляет инструмент визуального управления проектами в Jmix. Построенное на базе JavaScript-библиотеки Smart Kanban, это дополнение позволяет эффективно отслеживать и управлять задачами. Основные функции включают:
- Настраиваемую доску Kanban, которая легко интегрируется с любым экраном Jmix.
- Управление задачами, включая назначение пользователей, сроки и приоритеты.
- Управление этапами с колонками, представляющими разные фазы рабочего процесса.
- Поддержку перетаскивания для удобного перемещения задач.
- Возможности настройки внешнего вида и поведения доски.
С этим дополнением рабочие процессы проекта могут эффективно управляться прямо в приложении Jmix.
Дополнение UI Constraints
Дополнение UI Constraints позволяет разработчикам управлять видимостью и доступностью компонентов пользовательского интерфейса на основе декларативных политик, определяемых в ресурсных ролях. Это означает, что элементы интерфейса могут отображаться или скрываться без написания кода, только на основании разрешений пользователя. Это делает реализацию управления интерфейсом на основе ролей проще, экономит время и повышает безопасность.
Дополнение REST DataStore
Дополнение REST DataStore предоставляет простой способ интеграции с другими приложениями на Jmix. Внешние сущности из удаленного Jmix-приложения можно получить через интерфейс DataManager
, так же как и локальные сущности. Это позволяет разработчикам отображать, обновлять и сохранять данные из удаленных приложений без написания специального кода для CRUD-операций.
Примеры использования этого дополнения можно найти в следующих руководствах:
Связывание данных для HTML-компонентов
HTML-компоненты, такие как div
, span
и заголовки, теперь можно декларативно связывать с сущностями вашей модели данных с использованием атрибутов dataContainer
и property
в XML. Это сокращает необходимость программно устанавливать значения в контроллерах экранов, упрощая код и улучшая его читаемость.
<layout>
<h3 id="nameField" dataContainer="departmentDc" property="name"/>
<div id="hrManagerField" dataContainer="departmentDc" property="hrManager"/>
</layout>
Рендерер фрагментов
Рендереры для компонентов, таких как virtualList
и dataGrid
, теперь можно определять с использованием UI фрагментов. Это означает, что вы можете использовать фрагменты для настройки отображения элементов, что дает большую гибкость в проектировании интерфейса.
Новый XML-элемент fragmentRenderer
указывает класс фрагмента, например:
<virtualList itemsContainer="usersDc">
<fragmentRenderer class="com.company.onboarding.view.userfragment.UserFragment"/>
</virtualList>
Пример фрагмента, используемого в качестве рендерера:
<fragment xmlns="http://jmix.io/schema/flowui/fragment">
<data>
<instance id="userDc" class="com.company.onboarding.entity.User">
<loader id="userDl"/>
</instance>
</data>
<content>
<formLayout id="form" dataContainer="userDc">
<textField id="usernameField" property="username" readOnly="true"/>
<textField id="firstNameField" property="firstName"/>
<textField id="lastNameField" property="lastName"/>
<textField id="emailField" property="email"/>
</formLayout>
</hbox>
</content>
</fragment>
Класс рендерера фрагмента должен наследоваться от базового класса FragmentRenderer
с параметрами типа, указывающими корневой компонент и отображаемую сущность, например:
@FragmentDescriptor("user-fragment.xml")
@RendererItemContainer("userDc")
public class UserFragment extends FragmentRenderer<FormLayout, User> {
}
Аннотация @RendererItemContainer
используется для указания контейнера данных, который принимает отображаемую сущность.
Асинхронные задачи
Новый компонент UiAsyncTasks позволяет разработчикам выполнять операции асинхронно с использованием контекста безопасности текущего пользователя, а затем обновлять интерфейс результатом. Этот легкий механизм, основанный на CompletableFuture
, идеально подходит для простых асинхронных операций, дополняя более сложный механизм фоновых задач.
@Autowired
private UiAsyncTasks uiAsyncTasks;
private void loadCustomersAsync() {
uiAsyncTasks.supplierConfigurer(this::loadCustomers)
.withResultHandler(customers -> {
customersDc.setItems(customers);
notifications.create("Customers loaded").show();
})
.supplyAsync();
}
private List<Customer> loadCustomers() {
return customerService.loadCustomers();
}
Улучшения поиска
Функциональность полнотекстового поиска была расширена благодаря новой аннотации @ExtendedSearch
, поддерживающей поиск «Начинается с» для индексированных полей. Обновленный компонент searchField
позволяет пользователям открывать окно настроек поиска для настройки стратегий и размеров результатов, улучшая гибкость поиска.
Инспектор компонентов Studio
Инспектор компонентов в Jmix Studio теперь организует свойства по категориям, таким как General, Data Binding, Size, Position, и Look & Feel. Эта категоризация упрощает поиск нужных свойств, повышая производительность. Также улучшена поддержка выбора иконок с использованием свойства icon
.
Поддержка OpenAPI в Studio
Jmix Studio теперь поддерживает расширенную интеграцию с OpenAPI, включая конфигурацию генератора OpenAPI-клиента и автоматическую генерацию DTO-сущностей, мапперов и промежуточных сервисов. Эти функции упрощают интеграцию внешних REST API, облегчая работу с внешними источниками данных.
Пример использования этих возможностей можно найти в руководстве Integrating Applications Using OpenAPI.
Обновленные зависимости
Релиз Jmix 2.4 включает обновления основных зависимостей:
- Spring Boot обновлен до версии 3.3.
- Vaadin обновлен до версии 24.4.
Таким образом, Jmix по-прежнему основывается на современной, безопасной и производительной платформе.
Планы на будущее
Выпуск Jmix 2.4 представляет новые функции, которые предоставляют разработчикам дополнительные инструменты для создания приложений.
Наши планы на следующий релиз в феврале 2025 года включают:
- Завершение разработки режима Tabbed Main Window, что позволит открывать экраны во вкладках внутри главного окна вместо использования вкладок браузера.
- Создание дополнения Message Templates с Flow UI, аналогичного дополнению Email Templates для Classic UI, но с более гибким подходом, охватывающим широкий спектр вариантов использования.
- Добавление возможности редактирования элементов карты, предоставляемой дополнением Maps.
Мы также будем собирать отзывы о новой функциональности Jmix 2.4 и дорабатывать ее. Это особенно касается экспериментальных функций интеграции, таких как поддержка OpenAPI и REST DataStore.
Как всегда, мы выделим значительное время на исправление ошибок, добавление мелких функций и улучшение производительности.
Подробная дорожная карта для будущих релизов доступна в виде проекта на GitHub. Патчи для текущей версии 2.4 будут выпускаться примерно раз в месяц для обеспечения регулярных обновлений.
Мы приглашаем вас присоединиться к нашему форуму, чтобы обсудить эти новые функции, поделиться своим опытом и пообщаться с сообществом. Благодарим наших участников сообщества за ценные отчеты об ошибках, пулл-реквесты, идеи и предложения — ваши вклады делают Jmix лучше!