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
На платформе Jmix были реализованы решения, которые включают четыре инфраструктурных компонента для анализа качества данных, управления конфигурациями приложений, автоматизации бизнес-процессов и формирования отчетности.
Они помогают компаниям ускорить разработку, повысить надежность ИТ-системы и упростить интеграцию с существующей инфраструктурой.
В будущем разработанные модули интегрируют в VK Cloud и VK Data Platform, расширяя возможности цифровой трансформации бизнеса. Только вперед!
🔗 Читайте статью на CNews здесь.
#статья
Please open Telegram to view this post
VIEW IN TELEGRAM
CNews.ru
VK Tech и Opus Tech завершили разработку компонентов платформы частного облака для нефтегазовой отрасли - CNews
VK Tech совместно с Opus Tech разработали комплекс инфраструктурных компонентов, которые оптимизируют процессы...
👍9🔥5❤1
О чем этот канал 👆
Jmix👨💻 Платформа быстрой разработки B2B и B2G веб-приложений на Java.
Платформа состоит из трех компонентов для повышения продуктивности разработчика:
🔸 Jmix Framework — ядро платформы, построенное на open-source стеке технологий.
🔸 Jmix Studio — это инструмент, интегрированный в IntelliJ IDEA Community Edition.
🔸 Маркетплейс — набор дополнений для решения типовых системных и бизнес-задач.
➡️ Начать работу по ссылке.
⚡ Для быстрого старта:
AI Ассистент
Документация
Демо приложения
Бесплатный курс на Stepik
🗺 Навигация по каналу:
#мероприятия — анонсы событий, в которых участвуем или которые организуем сами.
#обновления — новости о новых версиях платформы и Jmix Studio, а также багфикс-релизах.
#кейсы_клиентов — истории клиентов, которые реализовали корпоративную систему на Jmix.
#гайд — о работе с функциональностью Jmix.
#статья — статьи наших разработчиков и партнеров.
#фича — про обновления платформы.
Подписывайтесь на канал и общайтесь в коммьюнити-чате🤝
😌 @jmixplatform
Jmix
Платформа состоит из трех компонентов для повышения продуктивности разработчика:
🔸 Jmix Framework — ядро платформы, построенное на open-source стеке технологий.
🔸 Jmix Studio — это инструмент, интегрированный в IntelliJ IDEA Community Edition.
🔸 Маркетплейс — набор дополнений для решения типовых системных и бизнес-задач.
➡️ Начать работу по ссылке.
AI Ассистент
Документация
Демо приложения
Бесплатный курс на Stepik
#мероприятия — анонсы событий, в которых участвуем или которые организуем сами.
#обновления — новости о новых версиях платформы и Jmix Studio, а также багфикс-релизах.
#кейсы_клиентов — истории клиентов, которые реализовали корпоративную систему на Jmix.
#гайд — о работе с функциональностью Jmix.
#статья — статьи наших разработчиков и партнеров.
#фича — про обновления платформы.
Подписывайтесь на канал и общайтесь в коммьюнити-чате
Please open Telegram to view this post
VIEW IN TELEGRAM
www.jmix.ru
Платформа для быстрой разработки веб-приложений | Jmix
denoscription
👍10❤1
‼️ Не забудьте зарегистрироваться на вебинар про сокращение затрат при разработке решений на Java!
9 апреля в 16:00 по мск Jmix и Axiom JDK предложат решение, как перестать изобретать "велосипеды" и не сжигать ресурсы при создании проекта.
А еще поговорим про:
🔹 Ситуацию с программным обеспечением на ИТ рынке 2025.
🔹 Вызовы при создании внутренних цифровых активов компании.
🔹 Пути разработки на Java. Подходы к построению архитектуры web-приложения.
🔗 Регистрация по ссылке
Ждем вас!
#мероприятия
9 апреля в 16:00 по мск Jmix и Axiom JDK предложат решение, как перестать изобретать "велосипеды" и не сжигать ресурсы при создании проекта.
А еще поговорим про:
🔹 Ситуацию с программным обеспечением на ИТ рынке 2025.
🔹 Вызовы при создании внутренних цифровых активов компании.
🔹 Пути разработки на Java. Подходы к построению архитектуры web-приложения.
🔗 Регистрация по ссылке
Ждем вас!
#мероприятия
👍12
🚀 OpenBPM Control – приложение на Jmix
Вы, наверное, слышали, что Haulmont выпускает новый продукт — платформу для автоматизации бизнес-процессов OpenBPM? Если ещё нет, то срочно бегите смотреть на сайте openbpm.ru 🔗
Но сегодня мы хотели сказать о другом: о том, что Jmix идеально приспособлен для разработки самых разнообразных административных панелей ⚙️
С помощью Jmix вы можете быстро создать модель данных и CRUD-экраны для манипулирования вашими сущностями и справочниками.
Затем добавляете бизнес-логику для административных функций, генерите клиента для OpenAPI и управляете любыми вашими серверами.
Вишенкой на торте 🍒 станут отчёты и графики на дашбордах 📊
За примерами далеко ходить не надо: именно так был разработан OpenBPM Control — приложение для администраторов систем BPM с движком Camunda.
Построенное на базе фреймворка Jmix, приложение предоставляет удобный интерфейс для мониторинга и управления бизнес-процессами. Оно позволяет администраторам запускать, останавливать и отслеживать выполнение процессов, а также проверять их корректность.
По своей функциональности OpenBPM Control сопоставим с Camunda Cockpit, но выделяется возможностью подключения нескольких движков и легко кастомизируется благодаря Jmix.
✅ Заметьте, что управление бизнес-процессами — отнюдь не самая простая предметная область! Однако, разработка OpenBPM Control заняла всего пару месяцев, а результат получился отличный!
Кстати, OpenBPM Control — это open source, всё, как мы любим 🧡
Вы можете скачать его из репозитория на GitHub и оценить в работе, если у вас есть сервера Camunda.
#Camunda #кейсы_клиентов
Вы, наверное, слышали, что Haulmont выпускает новый продукт — платформу для автоматизации бизнес-процессов OpenBPM? Если ещё нет, то срочно бегите смотреть на сайте openbpm.ru 🔗
Но сегодня мы хотели сказать о другом: о том, что Jmix идеально приспособлен для разработки самых разнообразных административных панелей ⚙️
С помощью Jmix вы можете быстро создать модель данных и CRUD-экраны для манипулирования вашими сущностями и справочниками.
Затем добавляете бизнес-логику для административных функций, генерите клиента для OpenAPI и управляете любыми вашими серверами.
Вишенкой на торте 🍒 станут отчёты и графики на дашбордах 📊
За примерами далеко ходить не надо: именно так был разработан OpenBPM Control — приложение для администраторов систем BPM с движком Camunda.
Построенное на базе фреймворка Jmix, приложение предоставляет удобный интерфейс для мониторинга и управления бизнес-процессами. Оно позволяет администраторам запускать, останавливать и отслеживать выполнение процессов, а также проверять их корректность.
По своей функциональности OpenBPM Control сопоставим с Camunda Cockpit, но выделяется возможностью подключения нескольких движков и легко кастомизируется благодаря Jmix.
✅ Заметьте, что управление бизнес-процессами — отнюдь не самая простая предметная область! Однако, разработка OpenBPM Control заняла всего пару месяцев, а результат получился отличный!
Кстати, OpenBPM Control — это open source, всё, как мы любим 🧡
Вы можете скачать его из репозитория на GitHub и оценить в работе, если у вас есть сервера Camunda.
#Camunda #кейсы_клиентов
openbpm.ru
OpenBPM - платформа для автоматизации бизнес процессов (BPM) с российским движком на базе Camunda 7
OpenBPM - это интегрированная платформа разработки процессных приложений на Java open-source стеке
🔥10👍5🤩4
Поваренная книга от Jmix, выпуск 3:
📌 Полезные UI-рецепты
Вот несколько интересных примеров, которые не связаны напрямую с данными приложения, но могут улучшить пользовательский интерфейс!
1️⃣ Копирование текста в буфер обмена
Легко копируйте текст в буфер обмена с помощью асинхронной JavaScript-функции. Поскольку копирование возможно только на стороне клиента, этот метод обеспечивает корректную работу.
2️⃣ Кастомная форма логина
Настройте внешний вид страницы входа с помощью CSS и добавьте фоновое изображение.
📌 Совет: Храните изображение в папке темы приложения, чтобы оно было доступно на клиенте.
3️⃣ Отображение статического PDF в IFrame
Выводите статические PDF-файлы с помощью компонента IFrame.
📂 Совет: Храните файлы в папке
4️⃣ Загрузка PDF через REST в IFrame
Выводите PDF-файлы, хранящиеся в виде
🔧 Совет: Используйте кастомный контроллер (
5️⃣ Мастер (Wizard) для пошагового ввода данных
Реализуйте мастер для ввода данных!
📌 Пример: Мастер для создания записи о сотруднике с этапами:
✅ Ввод основной информации
✅ Добавление адреса
✅ Проверка введенных данных
Мастер основан на
🛠 Эти небольшие, но мощные улучшения значительно повысят удобство работы с приложением! Следите за новыми полезными советами.
#cookbook #гайд
📌 Полезные UI-рецепты
Вот несколько интересных примеров, которые не связаны напрямую с данными приложения, но могут улучшить пользовательский интерфейс!
1️⃣ Копирование текста в буфер обмена
Легко копируйте текст в буфер обмена с помощью асинхронной JavaScript-функции. Поскольку копирование возможно только на стороне клиента, этот метод обеспечивает корректную работу.
2️⃣ Кастомная форма логина
Настройте внешний вид страницы входа с помощью CSS и добавьте фоновое изображение.
📌 Совет: Храните изображение в папке темы приложения, чтобы оно было доступно на клиенте.
3️⃣ Отображение статического PDF в IFrame
Выводите статические PDF-файлы с помощью компонента IFrame.
📂 Совет: Храните файлы в папке
META-INF/resources и настройте директиву безопасности frame-ancestors для корректного доступа.4️⃣ Загрузка PDF через REST в IFrame
Выводите PDF-файлы, хранящиеся в виде
FileRef, с помощью REST API.🔧 Совет: Используйте кастомный контроллер (
CustomFileDownloadController.java) и настройте фильтр безопасности (CustomRestSecurityConfiguration.java) для безопасного доступа к файлам.5️⃣ Мастер (Wizard) для пошагового ввода данных
Реализуйте мастер для ввода данных!
📌 Пример: Мастер для создания записи о сотруднике с этапами:
✅ Ввод основной информации
✅ Добавление адреса
✅ Проверка введенных данных
Мастер основан на
tabSheet, каждый шаг — это отдельная вкладка с валидацией. Пользователь может свободно переключаться между шагами.🛠 Эти небольшие, но мощные улучшения значительно повысят удобство работы с приложением! Следите за новыми полезными советами.
#cookbook #гайд
🔥16
Присоединяйтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
Mts-link.ru
Как перестать изобретать "велосипеды" и не сжигать ресурсы при создании проекта
Узнайте про современные и оптимальные подходы к построению архитектуры web-app с помощью Jmix и Axiom JDK
Дата проведения: 09.04.2025 год
Эфир получился активный, наполненный инсайтами от коллег по разработке и, конечно, программистскими шуточками
Благодарим нашего партнера Axiom JDK за интересную и полезную встречу! Надеемся, вам было также увлекательно обсуждать разные подходы к построению архитектуры web-приложений на Java, как и нам.
Не смогли присоединиться онлайн?
Ловите запись встречи:
#мероприятия
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Jmix 2.5: Расширенный экран списка задач BPM
В Jmix BPM кроме стандартного экрана задач, можно добавить расширенный экран, который стал более дружественным к пользователю.
Но главное его достоинство не в этом. Этот экран вам будет проще дорабатывать.
Потому что он создается при помощи визарда экранов — просто выбираете из списка шаблонов BPM Advanced task list view —и готово! Этот экран является частью вашего проекта, с ним можно работать обычным образом —изменять дизайн, добавлять поля и т.д.
Кстати, специально для тех, кто в своих проектах изрядно доработал стандартный список задач, мы оставили старый экран на прежнем месте и в том же виде, чтобы не было проблем с совместимостью.
А для новых проектов сразу берите новый экран!
Лайфхак: можно создать сколько угодно таких экранов в проекте!
— Зачем это нужно? Например, чтобы сделать разные экраны для разных категорий пользователей и типов задач.
Так вы создаёте не просто экран, а UX, который нужен вашим пользователям.
#jmix25 #фича
В Jmix BPM кроме стандартного экрана задач, можно добавить расширенный экран, который стал более дружественным к пользователю.
Но главное его достоинство не в этом. Этот экран вам будет проще дорабатывать.
Потому что он создается при помощи визарда экранов — просто выбираете из списка шаблонов BPM Advanced task list view —и готово! Этот экран является частью вашего проекта, с ним можно работать обычным образом —изменять дизайн, добавлять поля и т.д.
Кстати, специально для тех, кто в своих проектах изрядно доработал стандартный список задач, мы оставили старый экран на прежнем месте и в том же виде, чтобы не было проблем с совместимостью.
А для новых проектов сразу берите новый экран!
Лайфхак: можно создать сколько угодно таких экранов в проекте!
— Зачем это нужно? Например, чтобы сделать разные экраны для разных категорий пользователей и типов задач.
Так вы создаёте не просто экран, а UX, который нужен вашим пользователям.
#jmix25 #фича
🔥10👍4
⚙️ Мастер-класс по UI: Быстрое создание пользовательского приложения на Jmix
Дмитрий Кремнев успевает всё! И разработкой заниматься, и наш новый худи выгуливать, и мастер-класс приготовить по Jmix UI 🌪
23 апреля в 16:00 по мск Дима вместе с Антоном Решановым, Руководителем продаж, продолжит тему про пользовательский интерфейс и вместе с вами создаст пример экрана пользователя в социальной сети. Напомним, что в прошлом году мы разобрали теоретическую часть Jmix UI.
📌 Рекомендуем ознакомиться с прошлым вебинаром.
В этот раз вы научитесь реализовывать пользовательский CSS и создавать приложения со специфичным CSS. Дима поделится лучшими практиками и ответит на любые вопросы!
🔗 Регистрация на вебинар тут.
Всем жмых! 👨💻
#мероприятия
Дмитрий Кремнев успевает всё! И разработкой заниматься, и наш новый худи выгуливать, и мастер-класс приготовить по Jmix UI 🌪
23 апреля в 16:00 по мск Дима вместе с Антоном Решановым, Руководителем продаж, продолжит тему про пользовательский интерфейс и вместе с вами создаст пример экрана пользователя в социальной сети. Напомним, что в прошлом году мы разобрали теоретическую часть Jmix UI.
📌 Рекомендуем ознакомиться с прошлым вебинаром.
В этот раз вы научитесь реализовывать пользовательский CSS и создавать приложения со специфичным CSS. Дима поделится лучшими практиками и ответит на любые вопросы!
🔗 Регистрация на вебинар тут.
Всем жмых! 👨💻
#мероприятия
🤩12👍3🔥1
‼️ ЗАВТРА! Вебинар Данные в действии: Как Jmix BPM превращает бизнес-процессы в эффективные механизмы
Мы продолжаем открывать для вас инструменты Jmix BPM!
Каждый месяц Станислав Макаров, продуктовый аналитик Jmix, с увлечением готовит для вас новый вебинар. Стас даже придумал себе фирменный элемент одежды. Какой? Подсказка на картинке 😉
В этот раз Стас расскажет как Jmix BPM позволяет реализовать сложные сценарии обработки данных в виде сервисных задач бизнес-процесса.
На встрече вы узнаете:
▪️Что такое процессные переменные и как их правильно использовать.
▪️Когда и как применять Entity Data Task, и когда их использовать не стоит.
▪️Как реализовать Service Task по обработке данных.
▪️Каковы лучшие практики и риски при использовании бизнес-данных в процессе.
Встречаемся онлайн 16 апреля в 16:00 по мск 🙌
#мероприятия
Мы продолжаем открывать для вас инструменты Jmix BPM!
Каждый месяц Станислав Макаров, продуктовый аналитик Jmix, с увлечением готовит для вас новый вебинар. Стас даже придумал себе фирменный элемент одежды. Какой? Подсказка на картинке 😉
В этот раз Стас расскажет как Jmix BPM позволяет реализовать сложные сценарии обработки данных в виде сервисных задач бизнес-процесса.
На встрече вы узнаете:
▪️Что такое процессные переменные и как их правильно использовать.
▪️Когда и как применять Entity Data Task, и когда их использовать не стоит.
▪️Как реализовать Service Task по обработке данных.
▪️Каковы лучшие практики и риски при использовании бизнес-данных в процессе.
Встречаемся онлайн 16 апреля в 16:00 по мск 🙌
#мероприятия
🔥8❤2👍1
Присоединяйтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
Mts-link.ru
Данные в действии: Как Jmix BPM превращает бизнес-процессы в эффективные механизмы
На этом вебинаре вы узнаете, как с помощью Jmix BPM правильно настроить бизнес-данные и превратить их в эффективные механизмы.
❤1
22 апреля Облакотека, интеграционная облачная система, проводит IT-форум в Казахстане. Конечно, мы не могли пропустить это мероприятие!
Форум проходит на базе площадки Qazaq IT Community с 09.30 до 13.30 часов.
➡️ РЕГИСТРАЦИЯ НА ФОРУМ
📍г. Алматы, SmArt.Point, Коворкинг-центр, БЦ Almaty Towers Улица Байзакова, 280, Конференц-зал Smart Space
До встречи в Алматы!
#мероприятия
Please open Telegram to view this post
VIEW IN TELEGRAM
oblakoteka.ru
Облакотека – интеграционная облачная платформа, облачный провайдер, облачный хостинг, виртуальные машины
Облачная отказоустойчивая автоматизированная IaaS-платформа и сервисы для создания и управления виртуальной ИТ-инфраструктурой. Облачный провайдер Облакотека. Развитая партнерская программа."
🔥10❤1
Продолжаем рассказывать про Jmix 2.5📢
В 2024 году стандарт UUIDv7 был официально принят в RFC 9562, и теперь он используется в Jmix для генерации значений UUID, аннотированных
📌 Почему UUIDv7 – лучше, чем раньше?
До принятия UUIDv7 в Jmix использовались случайные UUID, но у них были серьезные недостатки:
❌ Плохая работа с индексами БД – UUIDv4 генерируется случайно, поэтому новые записи вставляются в разные места индекса, вызывая его фрагментацию и снижая производительность запросов.
❌ Нестабильный порядок вставки – Из-за хаотичной структуры UUIDv4 вставка новых записей может замедляться, особенно в больших таблицах.
📌 Почему UUIDv7 – лучший выбор для идентификаторов сущностей?
✅ Основан на времени – UUIDv7 включает временную метку, что делает его естественно упорядоченным. Это особенно полезно для ключей в базе данных, так как новые записи вставляются в правильном порядке.
✅ Оптимизация индексов – В отличие от случайных UUIDv4, которые могут вызывать фрагментацию индексов, UUIDv7 помогает сохранять производительность запросов и снижает нагрузку на базу данных.
✅ Автоматическое использование в Jmix –
Впрочем, если вы хотите, чтоб все осталось как было раньше, со случайными UUID, добавьте в application.properties параметр
Но лучше все-таки перейти на новый стандарт.
Используйте UUIDv7 для стабильной и эффективной работы базы данных! 🎉
По нашему опыту, только благодаря использованию UUIDv7 на некоторых операциях с базой данных можно получить прирост производительности в два раза! 🚀🚀
#фича #jmix25
В 2024 году стандарт UUIDv7 был официально принят в RFC 9562, и теперь он используется в Jmix для генерации значений UUID, аннотированных
@JmixGeneratedValue.📌 Почему UUIDv7 – лучше, чем раньше?
До принятия UUIDv7 в Jmix использовались случайные UUID, но у них были серьезные недостатки:
❌ Плохая работа с индексами БД – UUIDv4 генерируется случайно, поэтому новые записи вставляются в разные места индекса, вызывая его фрагментацию и снижая производительность запросов.
❌ Нестабильный порядок вставки – Из-за хаотичной структуры UUIDv4 вставка новых записей может замедляться, особенно в больших таблицах.
📌 Почему UUIDv7 – лучший выбор для идентификаторов сущностей?
✅ Основан на времени – UUIDv7 включает временную метку, что делает его естественно упорядоченным. Это особенно полезно для ключей в базе данных, так как новые записи вставляются в правильном порядке.
✅ Оптимизация индексов – В отличие от случайных UUIDv4, которые могут вызывать фрагментацию индексов, UUIDv7 помогает сохранять производительность запросов и снижает нагрузку на базу данных.
✅ Автоматическое использование в Jmix –
UuidProvider.createUuidV7() используется по умолчанию в EntityUuidGenerator, так что вам не нужно ничего менять вручную.Впрочем, если вы хотите, чтоб все осталось как было раньше, со случайными UUID, добавьте в application.properties параметр
jmix.core.legacy-entity-uuid=trueНо лучше все-таки перейти на новый стандарт.
Используйте UUIDv7 для стабильной и эффективной работы базы данных! 🎉
По нашему опыту, только благодаря использованию UUIDv7 на некоторых операциях с базой данных можно получить прирост производительности в два раза! 🚀🚀
#фича #jmix25
🔥9👍3❤1
На прошедшем вебинаре по Jmix BPM могло показаться, что все не работает, процесс падает и вообще непонятно что с этим делать.
Но таков и был замысел автора! Вживую показать, где разложены грабли, чтобы на проде у вас таких ситуаций не возникало.
Продемонстрировать один простой процесс легко. Но это будет далеко от реальной жизни. И мы не хотим, чтоб у вас осталось обманчивое ощущение простоты, которое затем превратится в разочарование, когда придется делать настоящий процесс.
Потому что BPM—штука реально сложная, и никуда от этого не деться. Но и пугаться или совсем от него отказываться из-за сложности не следует. Надо просто принять как факт, что эту тему придется погружаться глубоко, только знания BPMN недостаточно. Еще надо понимать, как именно процесс исполняется движком и какие могут быть проблемы.
Пожалуй, самая большая боль это Optimistic Locking Exception.
Возьмем типичный случай: вам поступают заказы и надо резервировать товар на складе. Пока вы запускаете единичный процесс, все работает как часы. Но когда процессов становится много, и они одновременно пытаются обновить одну и ту же запись в базе данных, то как раз и случается оптимистическая блокировка.
На вебинаре мы как раз смоделировали такую ситуацию и попробовали разные методы, как ее разрулить. И вот что в итоге:
Обычный процесс синхронными задачами может просто упасть, потому что напарывается на оптимистическую блокировку и откатывает транзакцию. А может и выполнится успешно, это как повезет.
Была гипотеза ловить это исключение, кидать BPMN Error и обрабатывать его в процессе. Но тут другая беда: чистый
Переход к асинхронным задачам немного улучшает ситуацию, но не решает ее кардинально. Такой процесс уже не падает, движок честно сам пытается несколько раз задачу все-таки выполнить, а если не получилось, отмечает ее как Failed job, которую можно потом перезапустить вручную.
Попробовали пессимистическую блокировку. (Вы же знаете, что в Jmix есть такой специальный адд-он, да?) — Тоже неидеальное решение. Все потому, что в недрах Spring наш
И что в итоге?
Самый действенный метод борьбы с оптимистическими блокировками это использование очередей в брокере сообщений. Берем RabbitMQ, например. В одну очередь кидаем запрос на резервирование. Потом специальным сервисом читаем сообщения из очереди, выполняем резервирование и отправляем ответ в другую очередь. Слушатель на этой очереди читает ответы и отправляет BPMN-сообщения в соответствующие экземпляры процессов.
Для эксперимента запустили 3000 экземпляров процесса в разных потоках и все они завершились успешно, ни одной оптимистической блокировки не случилось.
Делаем вывод:
Если из модели процесса понятно, что возможны оптимистические блокировки и что нагрузка будет достаточно высокой, лучше сразу закладываться на использование брокера сообщений. Если нагрузка невелика, то справится и штатных механизм fail-retry.
Если хочется попробовать руками, как это все работает, вот проект на GitHub:
bpm-webinar-data-centric-process
Не смогли присоединиться онлайн?
Ловите запись встречи:
😄 ВК
😉 YOUTUBE
Но таков и был замысел автора! Вживую показать, где разложены грабли, чтобы на проде у вас таких ситуаций не возникало.
Продемонстрировать один простой процесс легко. Но это будет далеко от реальной жизни. И мы не хотим, чтоб у вас осталось обманчивое ощущение простоты, которое затем превратится в разочарование, когда придется делать настоящий процесс.
Потому что BPM—штука реально сложная, и никуда от этого не деться. Но и пугаться или совсем от него отказываться из-за сложности не следует. Надо просто принять как факт, что эту тему придется погружаться глубоко, только знания BPMN недостаточно. Еще надо понимать, как именно процесс исполняется движком и какие могут быть проблемы.
Пожалуй, самая большая боль это Optimistic Locking Exception.
Возьмем типичный случай: вам поступают заказы и надо резервировать товар на складе. Пока вы запускаете единичный процесс, все работает как часы. Но когда процессов становится много, и они одновременно пытаются обновить одну и ту же запись в базе данных, то как раз и случается оптимистическая блокировка.
На вебинаре мы как раз смоделировали такую ситуацию и попробовали разные методы, как ее разрулить. И вот что в итоге:
Обычный процесс синхронными задачами может просто упасть, потому что напарывается на оптимистическую блокировку и откатывает транзакцию. А может и выполнится успешно, это как повезет.
Была гипотеза ловить это исключение, кидать BPMN Error и обрабатывать его в процессе. Но тут другая беда: чистый
OptimisticLokingException может быть обернут в разные спринговые исключения, например, TransactionSystemException. И таких вариантов несколько. То есть, обрабатывать эту цепочку исключений программно получается довольно громоздко.Переход к асинхронным задачам немного улучшает ситуацию, но не решает ее кардинально. Такой процесс уже не падает, движок честно сам пытается несколько раз задачу все-таки выполнить, а если не получилось, отмечает ее как Failed job, которую можно потом перезапустить вручную.
Попробовали пессимистическую блокировку. (Вы же знаете, что в Jmix есть такой специальный адд-он, да?) — Тоже неидеальное решение. Все потому, что в недрах Spring наш
OptimisticLockingException может обернуться совсем другим классом.И что в итоге?
Самый действенный метод борьбы с оптимистическими блокировками это использование очередей в брокере сообщений. Берем RabbitMQ, например. В одну очередь кидаем запрос на резервирование. Потом специальным сервисом читаем сообщения из очереди, выполняем резервирование и отправляем ответ в другую очередь. Слушатель на этой очереди читает ответы и отправляет BPMN-сообщения в соответствующие экземпляры процессов.
Для эксперимента запустили 3000 экземпляров процесса в разных потоках и все они завершились успешно, ни одной оптимистической блокировки не случилось.
Делаем вывод:
Если из модели процесса понятно, что возможны оптимистические блокировки и что нагрузка будет достаточно высокой, лучше сразу закладываться на использование брокера сообщений. Если нагрузка невелика, то справится и штатных механизм fail-retry.
Если хочется попробовать руками, как это все работает, вот проект на GitHub:
bpm-webinar-data-centric-process
Не смогли присоединиться онлайн?
Ловите запись встречи:
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - stasmakarov/bpm-webinar-data-centric-process
Contribute to stasmakarov/bpm-webinar-data-centric-process development by creating an account on GitHub.
🔥13👍4❤1
Красивый и функциональный интерфейс - это React? Но React'ом ли единым? 🤔 Есть ли другие инструменты для эффективного написания бизнес-приложений?
VK Tech в блоге сравнивает варианты реализации стандартного CRUD приложения Petclinic на Jmix и React + Spring Boot.
#статья
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Не только React: сравнительный анализ React и Jmix для написания UI бизнес-приложений
Раньше, когда трава была зеленей, а доллар стоил 30, в мире enterprise-разработки преимущественно использовались десктопные приложения. Если вспомнить, как выглядели пользовательские интерфейсы в...
👍6
👨💻 Дорогу молодым!
18 апреля в Самаре прошло самое интересное мероприятие, которое может быть в ИТ-мире - Хакатон! И главное, что в нем приняли участие ребята из Самарского регионального центра для одаренных детей.
Мероприятие прошло в педагогическом технопарке "Кванториум" им. В. Ф. Волкодавова на базе Самарского государственного социально-педагогического университета 🎓
Хакатон проводится уже третий раз, но в этом году Jmix выступил партнером!
Павел Александров, наш ведущий разработчик, принял участие в составе жюри и провел награждение победителей подарками от Jmix. Все участники молодцы! 💪 Было невероятно интересно и приятно выступать экспертами на мероприятии в поддержку молодежи.
Желаем ребятам ИТ-успехов, чистого кода, а мы всегда рядом, чтобы предоставить современные технологии и поддержать будущие ивенты!
#мероприятия
18 апреля в Самаре прошло самое интересное мероприятие, которое может быть в ИТ-мире - Хакатон! И главное, что в нем приняли участие ребята из Самарского регионального центра для одаренных детей.
Мероприятие прошло в педагогическом технопарке "Кванториум" им. В. Ф. Волкодавова на базе Самарского государственного социально-педагогического университета 🎓
Хакатон проводится уже третий раз, но в этом году Jmix выступил партнером!
Павел Александров, наш ведущий разработчик, принял участие в составе жюри и провел награждение победителей подарками от Jmix. Все участники молодцы! 💪 Было невероятно интересно и приятно выступать экспертами на мероприятии в поддержку молодежи.
Желаем ребятам ИТ-успехов, чистого кода, а мы всегда рядом, чтобы предоставить современные технологии и поддержать будущие ивенты!
#мероприятия
👍12🔥5❤4
#мероприятия
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥9