🚀 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
Разработчики Jmix – это бэкенд-разработчики, которые выбирают платформу из-за одного большого преимущества. Не нужно использовать JS для создания веб-приложений!
В то же время, многие разработчики на Jmix полагают, что тогда им вообще не потребуется погружение во фронтенд 🙄 Если говорить про создание внутренних приложений, то возможно фронт и не пригодится. Но при разработке приложений для пользователей избежать работы с фронтендом не получится, особенно потребуется знание CSS.
Да, CSS может быть сложным и трудоемким, но у нас хорошие новости: в Jmix 2.x работать с CSS намного проще по сравнению с Jmix 1.x!
Дмитрий Кремнев, ведущий разработчик, вместе с Антоном Решановым, коммьюнити-менеджером, расскажут, как с помощью CSS можно быстро и легко создавать стилизованные экраны с нуля.
#мероприятия
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥3👍1
Компания «Квадриум», поставщик бизнес-решений для крупного бизнеса, разработала систему "Quadrium ActiveGRC" на базе Jmix.
Система ActiveGRC:
🔸 Автоматизирует риск-менеджмент.
🔸 Работает по модели трех линий защиты.
🔸 Помогает компаниям предсказывать и снижать риски.
Мы гордимся сотрудничеством с одной из ведущих компаний на рынке
А еще хотим сказать, что на Jmix сообщество создает много решений класса GRC. Если у вас есть идеи сделать подобный проект, то приходите к нам! Мы расскажем и покажем, что сделали другие 😊
#кейсы_клиентов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9
Media is too big
VIEW IN TELEGRAM
🔸 Редактирование объектов на карте в Jmix 2.5 🗺️✏️
Адд-он Maps уже давно присутствует в арсенале разработчиков Jmix. Основанный на библиотеке OpenLayers , он позволяет легко добавить отображения карт на любые экраны Jmix — например, локации 🚗 ваших автомобилей, 🏢 адреса клиентов, 🏧 расположение банкоматов, 🗺️ границы земельных участков, 🥾 туристические маршруты и что угодно.
Чаще всего эта информация берётся из гео-данных, связанных с сущностями Jmix. И до недавнего времени единственное, что можно было сделать в интерактивном режиме — это переместить точку 📍 на карте.
А вот создавать или изменять линейные и площадные объекты — такие как 🛣️ дороги, ⚡ линии электропередач, 🌾 поля, 📦 границы зон доставки и прочее — можно было только по координатам, что для обычных пользователей крайне неудобно.
И вот, в версии Jmix 2.5 появилась возможность редактировать объекты прямо на карте! 🛠️
Просто добавьте атрибут
А чтобы иметь возможность перетаскивать объект целиком, включите атрибут
Эти режимы активируются специальными кнопками в верхнем левом углу карты.
📚 Подробности смотрите в документации.
#фича #jmix25
Адд-он Maps уже давно присутствует в арсенале разработчиков Jmix. Основанный на библиотеке OpenLayers , он позволяет легко добавить отображения карт на любые экраны Jmix — например, локации 🚗 ваших автомобилей, 🏢 адреса клиентов, 🏧 расположение банкоматов, 🗺️ границы земельных участков, 🥾 туристические маршруты и что угодно.
Чаще всего эта информация берётся из гео-данных, связанных с сущностями Jmix. И до недавнего времени единственное, что можно было сделать в интерактивном режиме — это переместить точку 📍 на карте.
А вот создавать или изменять линейные и площадные объекты — такие как 🛣️ дороги, ⚡ линии электропередач, 🌾 поля, 📦 границы зон доставки и прочее — можно было только по координатам, что для обычных пользователей крайне неудобно.
И вот, в версии Jmix 2.5 появилась возможность редактировать объекты прямо на карте! 🛠️
Просто добавьте атрибут
featureModifyEnabled="true"к своим векторным или дата-слоям — и готово — можно двигать его узловые точки.А чтобы иметь возможность перетаскивать объект целиком, включите атрибут
featureDragEnabled="true". Также можно удалить объект с карты.Эти режимы активируются специальными кнопками в верхнем левом углу карты.
📚 Подробности смотрите в документации.
#фича #jmix25
🔥12👍1
Вчера на мастер-классе по UI Дмитрий Кремнев, ведущий разработчик, вместе с Антоном Решановым, коммьюнити-менеджером, рассказали, как с помощью CSS можно быстро и легко создавать стилизованные экраны с нуля.
Не смогли присоединиться онлайн?
Ловите запись встречи:
😄 ВК
😉 YOUTUBE
#мероприятия
Не смогли присоединиться онлайн?
Ловите запись встречи:
#мероприятия
Please open Telegram to view this post
VIEW IN TELEGRAM
VK Видео
Мастер-класс по UI 2.0: Быстрое создание пользовательского приложения на Jmix
На этом мастер-классе Дмитрий Кремнев показал на практике, как с помощью CSS можно быстро и легко создать стилизованные экраны с нуля CSS Flexbox - https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/CSS_layout/Flexbox CSS Grids - https:…
👍5🎉5🔥3
Media is too big
VIEW IN TELEGRAM
🔸Пустое состояние DataGrid
🎉Небольшое, но полезное улучшение!
Так бывает, что датагрид ничем не заселен, абсолютно пуст. Тогда надо явно сообщить пользователю, чтобы он не думал, что это данные долго грузятся или какой-то сбой.
Лучше четко и ясно сказать: «У вам еще нет заказов» или «Нет запущенных процессов» или еще что-нибудь. Таковы правила хорошего UX.
Теперь появилось даже два варианта, как это сделать:
1️⃣ Атрибут
2️⃣ Более полдвиутый вариант: вы можете добавить к
Но только один.
Например, так:
🔗 Подробнее смотрите в документации.
#фича #jmix25
🎉Небольшое, но полезное улучшение!
Так бывает, что датагрид ничем не заселен, абсолютно пуст. Тогда надо явно сообщить пользователю, чтобы он не думал, что это данные долго грузятся или какой-то сбой.
Лучше четко и ясно сказать: «У вам еще нет заказов» или «Нет запущенных процессов» или еще что-нибудь. Таковы правила хорошего UX.
Теперь появилось даже два варианта, как это сделать:
1️⃣ Атрибут
emptyStateText—просто добавляете его к своему dataGrid, и этот текст покажется на экране, когда список пуст:emptyStateText="No items in this list"2️⃣ Более полдвиутый вариант: вы можете добавить к
dataGrid дополнительный компонент, emptyStateComponent, в который можно вставить любой визуальный компонент по вашему вкусу – текстовое поле, кнопку, заголовок и так далее. Но только один.
Например, так:
<emptyStateComponent>
<h1 text="There is nothing here"/>
</emptyStateComponent>#фича #jmix25
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1