Запускаем онлайн-курс «Jmix PRO»!
📅 Даты: 7 - 24 апреля
🕒 Время: с 18:00 до 21:00 по московскому времени
💻 Формат: учебные сессии в МТС Линк, общение в закрытом Telegram-чате.
В данном курсе подробно рассматривается работа с файлами и данными, разработка административного пользовательского интерфейса, развертывание приложений, подсистема управления доступом
Что вы узнаете и научитесь делать?
1️⃣ Использовать систему управления доступом.
Создавать и назначать роли. Рассмотрим пример регистрации и активации пользователей. Разберем интеграцию с внешним сервисом аутентификации на примере KeyCloak SSO.
2️⃣ Подготавливать приложения к развертыванию в продуктовой среде правильно.
Также мы изучим доступные способы сборки приложения - от JAR до собственного многослойного образа Docker.
3️⃣ Создавать типовой пользовательский интерфейс с множеством доступных компонентов.
Стилизовать приложения Jmix, создавать собственные компоненты интерфейса, создавать обработчики событий интерфейса.
4️⃣ Создавать модель данных приложения, получать доступ к данным с использованием разнообразных подходов программно и декларативно.
Выгружать файлы на сервер, отображать их в пользовательском интерфейсе, инициировать загрузку файлов из браузера.
📌Домашние задания с проверкой тренером!
🔗 Регистрация, стоимость и условия здесь.
#мероприятия
📅 Даты: 7 - 24 апреля
🕒 Время: с 18:00 до 21:00 по московскому времени
💻 Формат: учебные сессии в МТС Линк, общение в закрытом Telegram-чате.
В данном курсе подробно рассматривается работа с файлами и данными, разработка административного пользовательского интерфейса, развертывание приложений, подсистема управления доступом
Что вы узнаете и научитесь делать?
1️⃣ Использовать систему управления доступом.
Создавать и назначать роли. Рассмотрим пример регистрации и активации пользователей. Разберем интеграцию с внешним сервисом аутентификации на примере KeyCloak SSO.
2️⃣ Подготавливать приложения к развертыванию в продуктовой среде правильно.
Также мы изучим доступные способы сборки приложения - от JAR до собственного многослойного образа Docker.
3️⃣ Создавать типовой пользовательский интерфейс с множеством доступных компонентов.
Стилизовать приложения Jmix, создавать собственные компоненты интерфейса, создавать обработчики событий интерфейса.
4️⃣ Создавать модель данных приложения, получать доступ к данным с использованием разнообразных подходов программно и декларативно.
Выгружать файлы на сервер, отображать их в пользовательском интерфейсе, инициировать загрузку файлов из браузера.
📌Домашние задания с проверкой тренером!
🔗 Регистрация, стоимость и условия здесь.
#мероприятия
👍3
📢 Уже ЗАВТРА! Не пропустите продолжение вебинара по Jmix BPM!
12 марта в 16:00 по мск Станислав Макаров, продуктовый аналитик платформы Jmix, продолжит показывать, как с помощью Jmix BPM создавать процессы, ориентированные на обработку событий.
На вебинаре вы узнаете:
🔸Как брокер сообщений RabbitMQ выступает источником событий для запуска процессов.
🔸Как запускаются процессы в ответ на изменение данных и при помощи планировщика Quartz.
🔸Как используются внутренние события Jmix для управления интерфейсом и бизнес-логикой
💎БОНУС: Вы увидите в действии компоненты для работы с картами (Maps) и графиками (Charts) и другие возможности платформы Jmix.
Рекомендуем посмотреть первую часть встречи по данной теме здесь.
🔗 Регистрация по ссылке
До встречи в эфире!
#мероприятия
12 марта в 16:00 по мск Станислав Макаров, продуктовый аналитик платформы Jmix, продолжит показывать, как с помощью Jmix BPM создавать процессы, ориентированные на обработку событий.
На вебинаре вы узнаете:
🔸Как брокер сообщений RabbitMQ выступает источником событий для запуска процессов.
🔸Как запускаются процессы в ответ на изменение данных и при помощи планировщика Quartz.
🔸Как используются внутренние события Jmix для управления интерфейсом и бизнес-логикой
💎БОНУС: Вы увидите в действии компоненты для работы с картами (Maps) и графиками (Charts) и другие возможности платформы Jmix.
Рекомендуем посмотреть первую часть встречи по данной теме здесь.
🔗 Регистрация по ссылке
До встречи в эфире!
#мероприятия
👍6❤2
Media is too big
VIEW IN TELEGRAM
Работа с несколькими вкладками в Flow UI
Корпоративным пользователям приходится работать со сложными данными📊, например, в ERP-приложениях. Удобно открывать несколько вкладок и переключаться между ними — это позволяет просматривать другую информацию, не закрывая текущее окно. Например, когда вы редактируете сложную сущность с множеством полей и вам нужно уточнить детали.
И вот почти готово!🎉
Пока в экспериментальном режиме, но уже можно попробовать, как функционирует Jmix-приложение со множеством вкладок в новом интерфейсе Flow UI. Разработчики честно предупреждают, что это пока не для продакшн, а только посмотреть, окончательная версия появится в следующем релизе.
При помощи бина
Если вы до сих пор откладывали миграцию своего приложения на новый Jmix из-за сложностей переделки интерфейса, то сейчас самое время начать!
📗Читайте в документации, как попробовать новый режим!
#фича #jmix25
Корпоративным пользователям приходится работать со сложными данными📊, например, в ERP-приложениях. Удобно открывать несколько вкладок и переключаться между ними — это позволяет просматривать другую информацию, не закрывая текущее окно. Например, когда вы редактируете сложную сущность с множеством полей и вам нужно уточнить детали.
И вот почти готово!🎉
Пока в экспериментальном режиме, но уже можно попробовать, как функционирует Jmix-приложение со множеством вкладок в новом интерфейсе Flow UI. Разработчики честно предупреждают, что это пока не для продакшн, а только посмотреть, окончательная версия появится в следующем релизе.
При помощи бина
ViewBuilders вы сможете открывать экраны, передавать в них параметры, получать возвращаемые значения и так далее.Если вы до сих пор откладывали миграцию своего приложения на новый Jmix из-за сложностей переделки интерфейса, то сейчас самое время начать!
📗Читайте в документации, как попробовать новый режим!
#фича #jmix25
🔥15👍2
Jmix Community Meetup: полезные материалы 💪🏻
Как обещали, публикуем материалы с митапа.
🔹 Презентации спикеров.
🔹 Панели (Dashboards) для мониторинга метрик производительности приложений на базе Jmix для системы Grafana и источника данных Prometheus.
На данный момент в репозитории расположены две готовые панели инструментов. Одна для Jmix 1.6.0+, другая для Jmix 2.2.0+.
Также репозиторий содержит файл с более подробным описанием настройки Jmix для работы с метриками и панелями визуализации Grafana.
🔹Фотоотчет.
Надеемся для тех, кто не смог присутствовать на митапе, данная информация также будет полезна 🙌🏻 Если возникнут вопросы, мы с радостью ответим на них в чате.
#мероприятия
Как обещали, публикуем материалы с митапа.
🔹 Презентации спикеров.
🔹 Панели (Dashboards) для мониторинга метрик производительности приложений на базе Jmix для системы Grafana и источника данных Prometheus.
На данный момент в репозитории расположены две готовые панели инструментов. Одна для Jmix 1.6.0+, другая для Jmix 2.2.0+.
Также репозиторий содержит файл с более подробным описанием настройки Jmix для работы с метриками и панелями визуализации Grafana.
🔹Фотоотчет.
Надеемся для тех, кто не смог присутствовать на митапе, данная информация также будет полезна 🙌🏻 Если возникнут вопросы, мы с радостью ответим на них в чате.
#мероприятия
GitHub
GitHub - jmix-framework/jmix-grafana-dashboards
Contribute to jmix-framework/jmix-grafana-dashboards development by creating an account on GitHub.
🔥12👍1
⚡️⚡️Мы начинаем вебинар "Событийный подход в разработке процессных приложений 2.0 с помощью Jmix BPM" через 5 минут здесь ➡️ https://my.mts-link.ru/j/104598363/2015651562
Mts-link.ru
Событийный подход в разработке процессных приложений 2.0
На этом вебинаре вы узнаете о применении событийно-ориентированного подхода в разработке процессных приложений.
❤3👍2
🎥 Запись вебинара: Событийный подход в разработке процессных приложений 2.0 с Jmix BPM
Дата проведения: 12.03.2025 год
Как сказал Стас Макаров, спикер вебинара и продуктовый аналитик Jmix, мы продолжаем наш "долгоиграющий сериал по Jmix BPM" 😎 Вторая серия уже доступна к просмотру здесь.
Следующий вебинар по Jmix BPM уже запланирован на 16 апреля, следите за нашими новостями!
#мероприятия
Дата проведения: 12.03.2025 год
Как сказал Стас Макаров, спикер вебинара и продуктовый аналитик Jmix, мы продолжаем наш "долгоиграющий сериал по Jmix BPM" 😎 Вторая серия уже доступна к просмотру здесь.
Следующий вебинар по Jmix BPM уже запланирован на 16 апреля, следите за нашими новостями!
#мероприятия
VK Видео
Событийный подход в разработке процессных приложений 2.0 с Jmix BPM
На данном вебинаре Станислав Макаров, продуктовый аналитик платформы Jmix, продолжает показывать, как с помощью Jmix BPM создавать процессы, ориентированные на обработку событий. Вы узнаете: 🔸 Как брокер сообщений RabbitMQ выступает источником событий для…
🔥9❤3
Media is too big
VIEW IN TELEGRAM
Hot deploy 🚀– в Студию!
Горячее развертывание a.k.a. Hot deploy это крайне полезная фича для ускорения разработки, поскольку позволяет мгновенно применять изменения без остановки приложения.⚡
Реализован Hot deploy был в Jmix давно, можно сказать изначально. Однако это не было столь удобно, как теперь в Jmix 2.5. Раньше надо было смотреть в консоль, чтобы убедиться, что Hot deploy сработал.
В новом релизе стало гораздо нагляднее: теперь Studio отображает специальную иконку в правом верхнем углу окна редактора для файлов, поддерживающих горячее развертывание (контроллеры и дескрипторы экранов, пакеты сообщений, роли и т.д.)
С таким индикатором разработчик постоянно видит состояние изменений в исходном коде и при может их доставить их в работающее приложение в любой момент. ⏱️
📚Подробнее читайте в документации.
#фича #jmix25
Горячее развертывание a.k.a. Hot deploy это крайне полезная фича для ускорения разработки, поскольку позволяет мгновенно применять изменения без остановки приложения.⚡
Реализован Hot deploy был в Jmix давно, можно сказать изначально. Однако это не было столь удобно, как теперь в Jmix 2.5. Раньше надо было смотреть в консоль, чтобы убедиться, что Hot deploy сработал.
В новом релизе стало гораздо нагляднее: теперь Studio отображает специальную иконку в правом верхнем углу окна редактора для файлов, поддерживающих горячее развертывание (контроллеры и дескрипторы экранов, пакеты сообщений, роли и т.д.)
С таким индикатором разработчик постоянно видит состояние изменений в исходном коде и при может их доставить их в работающее приложение в любой момент. ⏱️
📚Подробнее читайте в документации.
#фича #jmix25
🔥18❤2
БД со справочниками и демо данными в Git’е – это удобно!👻
Когда делаешь прототип, то часто приходится экспериментировать и откатываться назад, если идея не сработала или что-то пошло не так. С кодом проблем нет – Git позволит вернуться в точку, где все работало. Но как быть с базой?
Окей, схему БД синхронизирует Liquibase, за что ему большое спасибо. Но иногда эксперименты заходят так далеко, что базу проще сгенерить заново, чем чинить. А потом нужно опять заводить какие-то данные для демо или для тестирования.
Чтобы этого избежать, было бы удобно вместе с кодом хранить и версию базы. Тогда можно будет вернуться на любой шаг и продолжить разработку. Но как это сделать? Бэкапить базу вручную и помнить, для какой версии эти данные? Неудобно!
К счастью, есть способ проще: кладем саму БД в Git и дело в шляпе! Но этот способ работает только с HSQLDB, с Postgres или другой «настоящей» СУБД будет слишком хлопотно.
Что надо сделать:
1. Запустите приложение.
При этом база будет создана автоматически в папке
2. Отредактируйте файл
Нужно чтобы файлы БД из директории
Вместо
🔸Но не надо хранить в репозитории лок-файл
Вот и все! 🎉
Теперь при каждом коммите база данных тоже будет сохраняться, и вы сможете быстро перейти к любой версии.
Это еще удобно, когда показываешь систему и вводишь разные данные:
чтобы не чистить все вручную, можно просто взять и загрузить сохраненную версию.
#лайфхак
Когда делаешь прототип, то часто приходится экспериментировать и откатываться назад, если идея не сработала или что-то пошло не так. С кодом проблем нет – Git позволит вернуться в точку, где все работало. Но как быть с базой?
Окей, схему БД синхронизирует Liquibase, за что ему большое спасибо. Но иногда эксперименты заходят так далеко, что базу проще сгенерить заново, чем чинить. А потом нужно опять заводить какие-то данные для демо или для тестирования.
Чтобы этого избежать, было бы удобно вместе с кодом хранить и версию базы. Тогда можно будет вернуться на любой шаг и продолжить разработку. Но как это сделать? Бэкапить базу вручную и помнить, для какой версии эти данные? Неудобно!
К счастью, есть способ проще: кладем саму БД в Git и дело в шляпе! Но этот способ работает только с HSQLDB, с Postgres или другой «настоящей» СУБД будет слишком хлопотно.
Что надо сделать:
1. Запустите приложение.
При этом база будет создана автоматически в папке
.jmix/hsqldb2. Отредактируйте файл
.gitignore: Нужно чтобы файлы БД из директории
.jmix попадали в коммит, а все прочие игнорировались. Поэтому перечислим их следующим образом:!.jmix/hsqldb/*.lobs (BLOB-объекты, если есть)
!.jmix/hsqldb/*.log
!.jmix/hsqldb/*.properties
!.jmix/hsqldb/*.noscriptВместо
* можете подставить ваш Project id, например, ord.log.🔸Но не надо хранить в репозитории лок-файл
*.lck, иначе будет выскакивать ошибка. Вот и все! 🎉
Теперь при каждом коммите база данных тоже будет сохраняться, и вы сможете быстро перейти к любой версии.
Это еще удобно, когда показываешь систему и вводишь разные данные:
чтобы не чистить все вручную, можно просто взять и загрузить сохраненную версию.
#лайфхак
🔥9
🔈 Вебинар Jmix и Axiom JDK: Как перестать изобретать "велосипеды" и не сжигать ресурсы при создании проекта
9 апреля 2025, 16:00 по мск
Вместе с нашим партнером Axiom JDK, средой разработки и исполнения JAVA™ с российской техподдержкой для коммерческих и государственных компаний, обсудим важную тему - Как сократить затраты при разработке решений?
Разработчики и бизнес нередко по-разному подходят к решению задач.
Разработчики стремятся создавать все с нуля, самостоятельно, полагая, что так быстрее, удобнее и понятнее. На старте, когда проект ограничен небольшими задачами, этот подход может работать эффективно. Однако при расширении функционала появляются новые требования, усложняющие реализацию, увеличивающие затраты и создающие риски при внедрении и дальнейшем использовании.
🚲 Как избежать необходимости изобретать "велосипед"?
На встрече поговорим про:
🔹 Ситуацию с программным обеспечением на ИТ рынке 2025.
🔹 Вызовы при создании внутренних цифровых активов компании.
🔹 Пути разработки на Java. Подходы к построению архитектуры web-приложения.
🔗 Регистрация по ссылке
Присоединяйтесь к обсуждению!
#мероприятия
9 апреля 2025, 16:00 по мск
Вместе с нашим партнером Axiom JDK, средой разработки и исполнения JAVA™ с российской техподдержкой для коммерческих и государственных компаний, обсудим важную тему - Как сократить затраты при разработке решений?
Разработчики и бизнес нередко по-разному подходят к решению задач.
Разработчики стремятся создавать все с нуля, самостоятельно, полагая, что так быстрее, удобнее и понятнее. На старте, когда проект ограничен небольшими задачами, этот подход может работать эффективно. Однако при расширении функционала появляются новые требования, усложняющие реализацию, увеличивающие затраты и создающие риски при внедрении и дальнейшем использовании.
🚲 Как избежать необходимости изобретать "велосипед"?
На встрече поговорим про:
🔹 Ситуацию с программным обеспечением на ИТ рынке 2025.
🔹 Вызовы при создании внутренних цифровых активов компании.
🔹 Пути разработки на Java. Подходы к построению архитектуры web-приложения.
🔗 Регистрация по ссылке
Присоединяйтесь к обсуждению!
#мероприятия
🔥9
Поваренная книга от Jmix:
Готовим пользовательские интерфейсы для людей
А вы знали, что в наших UI Samples есть сборник рецептов о том, как создавать интерфейсы, когда нужно сделать нечто более замысловатое, чем типовой CRUD-экран?
Вот, хотя бы с использованием композиций (
Методом проб и ошибок подобные конструкции самому реализовать трудно, да и чтение документации не всегда помогает сразу, хотя в документации все написано. Потому что темы эти действительно сложные 🤔. Зато наглядный пример с пояснениями от разработчиков позволяет быстро решить задачу.
Итак, экран с композицией
Предположим, мы создаем систему управления аэропортами✈️. Как известно, в аэропорте может быть несколько терминалов. То есть, сущности
🔅Показать на экране редактирования сущности нужно таблицу со связанными объектами🔗, которые можно открывать и редактировать. Причем у вам может быть много уровней вложенности.
🔅Или можо использовать экран мастер-деталь, чтобы уменьшить вложенность диалоговых окон.
🔅А еще есть inline-редактор для таблиц, который тоже может быть удобен в каких-то случаях.
🔅И учтите, что при работе с композициями нужно позаботиться о правильной сортировке, чтобы видеть подчиненные сущности в контексте корневой.
🔅И бывает полезно информировать пользователя об изменениях, если они произошли после того, как он открыл экран
Как это правильно и удобно показать в интерфейсе,
смотрите по ссылке на нашу книгу рецептов📚
#cookbook #гайд
Готовим пользовательские интерфейсы для людей
А вы знали, что в наших UI Samples есть сборник рецептов о том, как создавать интерфейсы, когда нужно сделать нечто более замысловатое, чем типовой CRUD-экран?
Вот, хотя бы с использованием композиций (
composition).Методом проб и ошибок подобные конструкции самому реализовать трудно, да и чтение документации не всегда помогает сразу, хотя в документации все написано. Потому что темы эти действительно сложные 🤔. Зато наглядный пример с пояснениями от разработчиков позволяет быстро решить задачу.
Итак, экран с композицией
Предположим, мы создаем систему управления аэропортами✈️. Как известно, в аэропорте может быть несколько терминалов. То есть, сущности
Airport и Terminal связаны отношением composition. Соответственно, надо открывать и редактировать атрибуты терминала из экрана аэропорта. Это можно сделать разными способами:🔅Показать на экране редактирования сущности нужно таблицу со связанными объектами🔗, которые можно открывать и редактировать. Причем у вам может быть много уровней вложенности.
🔅Или можо использовать экран мастер-деталь, чтобы уменьшить вложенность диалоговых окон.
🔅А еще есть inline-редактор для таблиц, который тоже может быть удобен в каких-то случаях.
🔅И учтите, что при работе с композициями нужно позаботиться о правильной сортировке, чтобы видеть подчиненные сущности в контексте корневой.
🔅И бывает полезно информировать пользователя об изменениях, если они произошли после того, как он открыл экран
Как это правильно и удобно показать в интерфейсе,
смотрите по ссылке на нашу книгу рецептов📚
#cookbook #гайд
🔥12👍5
На недавнем вебинаре по Jmix BPM мы говорили о событиях в процессе.
И, пожалуй, самый сложный момент был в том, как выполнить неблокирующий вызов внешнего сервиса, чтобы процесс мог завершить задачу и двинуться дальше. Иначе у вас будет долго висеть открытая транзакция, а это нехорошо.
Если вы думаете, что достаточно поставить флаг
Чтобы разобраться в этом вопросе читайте на Хабре новую статью Станислава Макарова
Неблокирующий вызов внешнего сервиса в процессе
#статья
И, пожалуй, самый сложный момент был в том, как выполнить неблокирующий вызов внешнего сервиса, чтобы процесс мог завершить задачу и двинуться дальше. Иначе у вас будет долго висеть открытая транзакция, а это нехорошо.
Если вы думаете, что достаточно поставить флаг
async и все волшебным образом образуется, то это не так. Все гораздо сложнее. Чтобы разобраться в этом вопросе читайте на Хабре новую статью Станислава Макарова
Неблокирующий вызов внешнего сервиса в процессе
#статья
🔥6👍4
🆕 Видеообзор: Что нового в Jmix 2.5
Дмитрий Кремнев, ведущий разработчик Jmix, вернувшись с нашего митапа, не смог остаться равнодушным к просьбе коммьюнити подготовить отдельное видео по последним обновлениям и планам на будущее!
Специально для тех, кто не смог посетить встречу в Москве, публикуем обзор релиза 2.5 🤘
📌 VK
📌 YOUTUBE
Делитесь обратной связью в чате!
#обновления #jmix25
Дмитрий Кремнев, ведущий разработчик Jmix, вернувшись с нашего митапа, не смог остаться равнодушным к просьбе коммьюнити подготовить отдельное видео по последним обновлениям и планам на будущее!
Специально для тех, кто не смог посетить встречу в Москве, публикуем обзор релиза 2.5 🤘
📌 VK
📌 YOUTUBE
Делитесь обратной связью в чате!
#обновления #jmix25
VK Видео
Что нового в Jmix 2.5
В этом видео Дмитрий Кремнев, ведущий разработчик Jmix, показывает новые возможности и улучшения, представленные в последней версии Jmix, и рассказывает о планах на следующие релизы. Ключевые обновления в релизе 2.5: 1. Новое дополнение Tabbed window mode…
🔥15👍3
Продолжаем рассказывать про новое в релизе Jmix 2.5!🎉
Сегодня речь пойдет про REST API и REST DataStore, два аддона, которые работают в паре и дополняют друг друга. В новом релизе их взаимодействие стало еще теснее.
🔸Фетч-планы в REST API и REST DataStore
Теперь вы можете передавать произвольные fetch-планы в виде JSON-объектов в ваши REST API endpoints.
Что это значит для вас? 🤔
✅ Больше не нужно определять все fetch-планы в общих репозиториях.
✅ Используйте встроенные fetch-планы в ваших клиентских экранах и Java-коде!
🔸Новый Capabilities API
Он информирует клиента о функциях, поддерживаемых данным универсальным REST API.
🔸Использование FileStorage с REST DataStore
В REST DataStore появилась специальная реализация FileStorage, которая работает с файлами, расположенными в хранилище файлов удаленного приложения через REST-эндпойнты /files.
🔸Настраиваемые пути REST-эндпойнтов
Пути универсальных эндпойнтов REST API теперь можно настраивать с помощью свойств приложения.
🔸Сессии в REST API
Дополнение Jmix Sessions предоставляет поддержку сессий, поддерживаемых для REST-запросов с одним и тем же токеном.
#фича #jmix25
Сегодня речь пойдет про REST API и REST DataStore, два аддона, которые работают в паре и дополняют друг друга. В новом релизе их взаимодействие стало еще теснее.
🔸Фетч-планы в REST API и REST DataStore
Теперь вы можете передавать произвольные fetch-планы в виде JSON-объектов в ваши REST API endpoints.
Что это значит для вас? 🤔
✅ Больше не нужно определять все fetch-планы в общих репозиториях.
✅ Используйте встроенные fetch-планы в ваших клиентских экранах и Java-коде!
🔸Новый Capabilities API
Он информирует клиента о функциях, поддерживаемых данным универсальным REST API.
🔸Использование FileStorage с REST DataStore
В REST DataStore появилась специальная реализация FileStorage, которая работает с файлами, расположенными в хранилище файлов удаленного приложения через REST-эндпойнты /files.
🔸Настраиваемые пути REST-эндпойнтов
Пути универсальных эндпойнтов REST API теперь можно настраивать с помощью свойств приложения.
🔸Сессии в REST API
Дополнение Jmix Sessions предоставляет поддержку сессий, поддерживаемых для REST-запросов с одним и тем же токеном.
#фича #jmix25
🔥8👍3
16 апреля, 16:00 по мск
Станислав Макаров, продуктовый аналитик Jmix, уже готовит новый вебинар! В этот раз Стас представит богатый арсенал Jmix BPM по работе с данными, который позволяет реализовать сложные сценарии их обработки в виде сервисных задач бизнес-процесса 🔝
На встрече вы узнаете:
▪️Что такое процессные переменные и как их правильно использовать.
▪️Когда и как применять Entity Data Task, и когда их использовать не стоит.
▪️Как реализовать Service Task по обработке данных.
▪️Каковы лучшие практики и риски при использовании бизнес-данных в процессе
#мероприятия
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10😱2
Автор рассказывает о создании образовательной платформы с помощью ассистента Jmix. Как можно быстро сгенерировать UML-диаграммы, определить доменную модель и реализовать ключевые сущности, не написав ни строчки кода вручную.
#статья
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Разработка Java-проекта с Jmix AI Assistant
Эта заметка инспирирована статей на Хабре Разработка Java-проекта с ChatGPT-4: от идеи до реализации [1]. После ее прочтения автор начал экспериментировать в разработке ПО с различными AI...
🔥19❤3👍3
Сегодня на 31-й Конференции «Информационные технологии в страховании» в Москве выступает Антон Решанов, Руководитель продаж Jmix в России и Беларуси.
💡 Тема доклада: «Особенности автоматизации бизнес-процессов в InsurTech». Ох и много мы говорим про Jmix BPM в этом году 😎
Приходите послушать, задать вопросы и пообщаться про Jmix.
📍 Связаться с Антоном можно по телефону +7 937 238 0322
#мероприятия
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥3
Март был богат на события, и апрель не отстает! 🌪️
Дмитрий Кремнев, ведущий Jmix-разработчик, которого вы знаете по вебинарам и недавнему митапу, будет рад встретиться с вами на JPoint👋
3-4 апреля находите Диму на площадке и задавайте ему любые вопросы про Jmix.
Как его найти? Конечно, по фирменной толстовке Жмых-Жмых! Или напишите ему в тг.
На мероприятии будут также наши друзья Amplicode и Spring АйО, рекомендуем тоже к ним заглянуть😉
#мероприятия
Дмитрий Кремнев, ведущий Jmix-разработчик, которого вы знаете по вебинарам и недавнему митапу, будет рад встретиться с вами на JPoint
3-4 апреля находите Диму на площадке и задавайте ему любые вопросы про Jmix.
Как его найти? Конечно, по фирменной толстовке Жмых-Жмых! Или напишите ему в тг.
На мероприятии будут также наши друзья Amplicode и Spring АйО, рекомендуем тоже к ним заглянуть
#мероприятия
Please open Telegram to view this post
VIEW IN TELEGRAM
JPoint 2026. Java-конференция для опытных разработчиков
JPoint 2026 | Конференция по разработке на Java. Крупнейшая в России
Java-конференция. Отобранные спикеры и экспертный контент. Несколько десятков докладов о JVM, Spring Boot, фреймворках и архитектуре.
👍12❤2🔥1
Продолжаем рассказывать про Jmix.2.5📣
Новый релиз платформы Jmix кроме новых фич также обогатился гайдами. Потому что мало иметь крутые фичи, надо еще рассказывать, как ими пользоваться, чтобы вы могли быстро создавать крутые продукты. Поэтому команда Jmix регулярно выпускает новые гайды, вот держите следующий:
Гайд по инициализации сущностей🎉
Зачем нужно инициализировать сущности? — Есть много причин.
Например, можно сократить проверки на null, уменьшить ручной ввод, минимизировать ошибки и так далее.
— Но это же очень просто!
Мы же умеем инициализировать переменные в коде.
В чем проблема?
Дело в том, что в Jmix задать начальные значения атрибутов сущностей можно несколькими разными способами, и это по-разному сказывается на конечном результате —поэтому и понадобился специальный гайд.
Итак, сущности можно инициализировать:
🔸 Прямо в описании класса
🔸 С помощью метода @PostConstruct
🔸 Посредством инжекции зависимостей
🔸 По событиям InitEntityEvent, EntitySavingEvent, EntityChangedEvent
На уровне UI💻, причем есть несколько вариантов
🔹 При инициализации экрана
🔹 При обновлении связанных полей
🔹 При сохранении сущности
А когда какой способ рациональнее выбрать, 📚читайте в нашем гайде
#гайд #jmix25
Новый релиз платформы Jmix кроме новых фич также обогатился гайдами. Потому что мало иметь крутые фичи, надо еще рассказывать, как ими пользоваться, чтобы вы могли быстро создавать крутые продукты. Поэтому команда Jmix регулярно выпускает новые гайды, вот держите следующий:
Гайд по инициализации сущностей🎉
Зачем нужно инициализировать сущности? — Есть много причин.
Например, можно сократить проверки на null, уменьшить ручной ввод, минимизировать ошибки и так далее.
— Но это же очень просто!
Мы же умеем инициализировать переменные в коде.
В чем проблема?
Дело в том, что в Jmix задать начальные значения атрибутов сущностей можно несколькими разными способами, и это по-разному сказывается на конечном результате —поэтому и понадобился специальный гайд.
Итак, сущности можно инициализировать:
🔸 Прямо в описании класса
🔸 С помощью метода @PostConstruct
🔸 Посредством инжекции зависимостей
🔸 По событиям InitEntityEvent, EntitySavingEvent, EntityChangedEvent
На уровне UI💻, причем есть несколько вариантов
🔹 При инициализации экрана
🔹 При обновлении связанных полей
🔹 При сохранении сущности
А когда какой способ рациональнее выбрать, 📚читайте в нашем гайде
#гайд #jmix25
👍14
Поваренная книга от Jmix, выпуск 2:
Работа с данными в UI
Вот несколько рецептов для эффективной работы с данными и элементами UI!
1️⃣ Каскадные выпадающие списки
Каскадные выпадающие списки фильтруют элементы на основе предыдущего выбора в иерархии. Например, выбор планеты в первом списке обновляет второй список, показывая ее луны.
📌 Совет: Используйте
2️⃣ Копирование сущностей
При копировании сущностей в представлениях списка вы можете использовать два подхода:
• Копировать: Создает новый экземпляр и немедленно сохраняет его.
• Копировать и редактировать: Создает новый экземпляр и открывает детальный просмотр сущности для редактирования. Сохраняется только после подтверждения пользователем.
🛠 Совет: Используйте
3️⃣ Пользовательский фильтр с декларативными условиями
Вы можете реализовать пользовательский фильтр, связав поля ввода с условиями запроса через
🔍 Совет: Совмещайте с компонентом
4️⃣ Пользовательский фильтр с модификацией запроса
Изменяйте текст запроса программно, когда изменяется значение поля ввода. Это позволяет реализовать более сложные фильтрации, например, поиск без учета регистра.
🛠 Совет: Метод
5️⃣ Отложенная загрузка данных
Оптимизируйте пользовательский опыт, откладывая загрузку данных до окончательного выбора. После завершения выбора заказов, данные загружаются через 2 секунды.
⏱ Совет: Используйте фасет таймера для загрузки данных только после завершения выбора пользователя.
6️⃣ Сохранение сущности через пользовательский сервис
Отправляйте сущности в пользовательские сервисы для обработки, обеспечивая изолированную и гибкую работу. Например, обновите статус контракта через сервис, перехватывая стандартные операции сохранения.
💡 Совет: Используйте сервисные бины для обработки изменений статуса и убедитесь, что представление сохраняет только измененные сущности.
7️⃣ Использование представлений базы данных
Используйте только для чтения представления базы данных для отображения агрегированных данных без возможности редактирования. Для редактирования данных используйте связанные сущности через обработчики.
🔧 Совет: Обновляйте таблицу данных после успешного коммита с помощью окна диалога для редактирования.
🔗 Следите за новыми полезными советами!
Первый пост о Cookbook смотри здесь.
#cookbook
Работа с данными в UI
Вот несколько рецептов для эффективной работы с данными и элементами UI!
1️⃣ Каскадные выпадающие списки
Каскадные выпадающие списки фильтруют элементы на основе предыдущего выбора в иерархии. Например, выбор планеты в первом списке обновляет второй список, показывая ее луны.
📌 Совет: Используйте
DataLoadCoordinator, чтобы автоматически перезагружать связанные данные при изменении выбора!2️⃣ Копирование сущностей
При копировании сущностей в представлениях списка вы можете использовать два подхода:
• Копировать: Создает новый экземпляр и немедленно сохраняет его.
• Копировать и редактировать: Создает новый экземпляр и открывает детальный просмотр сущности для редактирования. Сохраняется только после подтверждения пользователем.
🛠 Совет: Используйте
MetadataTools.copy() для поверхностного копирования выбранных сущностей.3️⃣ Пользовательский фильтр с декларативными условиями
Вы можете реализовать пользовательский фильтр, связав поля ввода с условиями запроса через
DataLoadCoordinator. Он автоматически инициирует загрузку данных при событии BeforeShowEvent.🔍 Совет: Совмещайте с компонентом
genericFilter для большей гибкости.4️⃣ Пользовательский фильтр с модификацией запроса
Изменяйте текст запроса программно, когда изменяется значение поля ввода. Это позволяет реализовать более сложные фильтрации, например, поиск без учета регистра.
🛠 Совет: Метод
reload() в контроллере явно инициирует логику фильтрации.5️⃣ Отложенная загрузка данных
Оптимизируйте пользовательский опыт, откладывая загрузку данных до окончательного выбора. После завершения выбора заказов, данные загружаются через 2 секунды.
⏱ Совет: Используйте фасет таймера для загрузки данных только после завершения выбора пользователя.
6️⃣ Сохранение сущности через пользовательский сервис
Отправляйте сущности в пользовательские сервисы для обработки, обеспечивая изолированную и гибкую работу. Например, обновите статус контракта через сервис, перехватывая стандартные операции сохранения.
💡 Совет: Используйте сервисные бины для обработки изменений статуса и убедитесь, что представление сохраняет только измененные сущности.
7️⃣ Использование представлений базы данных
Используйте только для чтения представления базы данных для отображения агрегированных данных без возможности редактирования. Для редактирования данных используйте связанные сущности через обработчики.
🔧 Совет: Обновляйте таблицу данных после успешного коммита с помощью окна диалога для редактирования.
🔗 Следите за новыми полезными советами!
Первый пост о Cookbook смотри здесь.
#cookbook
🔥12👍5
Jmix 2.5: Генерация клиента OpenAPI по тегам – что это значит?
При генерации клиентского кода из схемы OpenAPI обычно создается код для всего API, включая все эндпоинты и модели. Однако в Jmix 2.5 теперь можно генерировать клиентский код только для определенных тегов, заданных в OpenAPI.
Как это работает?
1. OpenAPI использует "теги" для группировки API-эндпоинтов. Например, в API для e-commerce можно иметь:
🔹
🔹
🔹
2. С этим новым функционалом вы можете выбрать только нужные теги при генерации клиентского кода. Если вам нужны только заказы, выбираете тег
3. Studio автоматически отфильтрует неиспользуемые схемы. Исключаются модели (структуры данных), которые не задействованы в выбранных эндпоинтах, уменьшая объем сгенерированного кода.
Зачем это нужно?
✅ Меньше кода – Нет необходимости разбираться с лишними моделями и эндпоинтами.
✅ Проще поддерживать – Компактный клиентский код удобнее в работе.
Эта возможность помогает интегрироваться с большими API, не перегружая проект лишним кодом.
Смотрите подробнее в гайде Integrating Applications Using OpenAPI
#фича #jmix25
При генерации клиентского кода из схемы OpenAPI обычно создается код для всего API, включая все эндпоинты и модели. Однако в Jmix 2.5 теперь можно генерировать клиентский код только для определенных тегов, заданных в OpenAPI.
Как это работает?
1. OpenAPI использует "теги" для группировки API-эндпоинтов. Например, в API для e-commerce можно иметь:
🔹
Orders (для работы с заказами)🔹
Customers (для работы с клиентами)🔹
Products (для работы с товарами)2. С этим новым функционалом вы можете выбрать только нужные теги при генерации клиентского кода. Если вам нужны только заказы, выбираете тег
Orders, а остальные игнорируете.3. Studio автоматически отфильтрует неиспользуемые схемы. Исключаются модели (структуры данных), которые не задействованы в выбранных эндпоинтах, уменьшая объем сгенерированного кода.
Зачем это нужно?
✅ Меньше кода – Нет необходимости разбираться с лишними моделями и эндпоинтами.
✅ Проще поддерживать – Компактный клиентский код удобнее в работе.
Эта возможность помогает интегрироваться с большими API, не перегружая проект лишним кодом.
Смотрите подробнее в гайде Integrating Applications Using OpenAPI
#фича #jmix25
👍6🔥2🤩1
Дмитрий Кремнев, как и обещали в толстовке с новым дизайном, уже на крупнейшей Java-конференции в России
Огромное количество стендов интересных компаний и продуктов, море общения с профессионалами своего дела, а ведь доклады ещё не начались
Напоминаем, что Диме можно написать в тг или найти его на площадке.
❤️ если нравится наш новый мерч
👍🏻 если сегодня тоже на конфе
#мероприятия
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍8🔥5🤩2