decorate image
decorate image
ОНЛАЙН-КУРС: РАЗРАБОТКА НА JMIX BPM
Все статьи

Выпущена версия Jmix 2.4

Команда 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 лучше!

Jmix - это open-source платформа быстрой разработки бизнес-приложений на Java