Jmix — это платформа с открытым исходным кодом для повышения эффективности разработки корпоративного ПО. Java-разработчики со всего мира используют ее для создания приложений, ориентированных на работу с данными, корпоративным контентом и бизнес-процессами. Jmix особенно эффективен, если у проекта есть строгие ограничения по бюджету и срокам. По сути, Jmix позволяет Java-разработчику стать fullstack-программистом и в результате своей работы получить полноценное веб-приложение на основе Spring Boot. Платформа привлекает тем, что не требует затрат на лицензирование конечных пользователей, а  для разработки и backend, и frontend используются один язык: Java или Kotlin. В основе платформы лежат широко распространенные технологии и IDE, дружественная разработчику. В этой статье расскажем, с чего начиналась поддержка моделирования бизнес-процессов в Jmix, как мы встроили в платформу фреймворк bpmn-js, и какие плюсы от этого получили пользователи. 

Первые шаги в направлении BPMN 

В случае приложений для управления транзакциями, документами или другими корпоративным данными часто требуется отделить бизнес-логику от кода. Это можно сделать с помощью визуального конструктора, в котором аналитики и разработчики моделируют  бизнес-процессы в соответствии с нотацией BPMN. К этой идее мы пришли в 2017 году, после большого количества запросов со стороны сообщества разработчиков Jmix. Поначалу для создания бизнес-процессов мы использовали собственный инструмент на основе движка Activiti. Он был частью CUBA Platform, прошлого поколения платформы Jmix.  

Визуальный конструктор BPMN в CUBA Platform, предшественника Jmix
Визуальный конструктор BPMN в CUBA Platform, предшественника Jmix

Этот конструктор был частью аддона Business Process Management, который включал следующие функции: 

  • Встроенный в runtime визуальный дизайнер бизнес-процессов, соответствующий нотациям BPMN; 

  • Интегрированная модель данных Activiti, обёрнутая в сущности CUBA, чтобы разработчики могли легко использовать их в UI и бизнес-логике; 

  • Формы процессов — удобный способ отображения назначений и действий по процессам; 

  • Пользовательский интерфейс для управления моделями бизнес-процессов, запуском экземпляров процессов и назначениями; 

  • Возможность работы с подпроцессами, то есть включения одних моделей бизнес-процессов в другие, более крупные; 

  • Локализация сообщений, которые использовались при отображении в UI имен задач, выходов из задач и т.д. 

Конструктор бизнес-процессов сохранял данные в формате JSON. При развертывании процесса в CUBA Platform формат автоматически преобразовывался в BPMN XML для использования в «движке» Activiti. Так началось развитие интегрированной среды для моделирования бизнес-процессов в нотации BPMN, обогащения их контекста при помощи объектов модели данных и  визуальных форм процессов, а также для исполнения процессов. Пользователи Jmix начали применять конструктор в своих проектах. Однако уже к концу 2018 года мы поняли, что UI данного конструктора устарел. 

Пересмотр подхода к BPMN в Jmix 

В 2019 году мы начали разработку следующего поколения платформы CUBA — Jmix.  

Зачем? 

Во-первых, мы хотели сократить использование кастомных технологий и приблизить платформу к мейнстримному подходу в Java-разработке. 

Во-вторых, мы планировали объединить максимальное количество инструментов для повышения продуктивности в единой среде разработки, чтобы все было под рукой и не требовалось переключаться между окнами. 

Во главу угла мы поставили принцип – «не изобретать велосипед». Встала задача выбрать новый популярный конструктор BPMN для интеграции в платформу с минимальной кастомизацией. После внутреннего R&D мы поняли, что оптимальный вариант — bpmn-js. Именно его мы выбрали из-за следующих особенностей: 

  • Современный интерфейс; 

  • Широкие возможности для усовершенствования, например, для добавления новых элементов и стилей; 

  • Большое количество реальных примеров использования на GitHub; 

  • Бесплатная поддержка сообщества с активным форумом; 

  • Быстрое развитие. 

Что касается движка, то мы перешли с Activiti на Flowable BPM.  

Мы интегрировали конструктор bpmn-js в среду исполнения Jmix. Стало выглядеть гораздо более впечатляюще! 

 Визуальный конструктор бизнес-процессов на базе bpmn-js в Jmix
Визуальный конструктор бизнес-процессов на базе bpmn-js в Jmix

Bpmn-js, доступный Java-разработчикам 

Как мы уже говорили, одна из главных особенностей Jmix состоит в том, что разработчики пишут на Java как backend, так и frontend. Для этого на серверной стороне в Jmix используется технология Vaadin, позволяющая управлять макетом frontend с помощью Java API. С Jmix обычно работают профессиональные Java-разработчики, поэтому мы решили обернуть конструктор bpmn-js в компонент пользовательского интерфейса Vaadin и связать специфичные Java методы с  функционалом нового компонента. В результате пользователи Jmix получили готовый компонент на Java, который можно бесшовно интегрировать в приложение с учетом бизнеc-задач. 

В качестве примера рассмотрим вариант использования Java-компонента для мониторинга текущего состояния бизнес-процесса. На скриншоте можно увидеть, что Jmix «из коробки» предоставляет подсистему BPM в среде исполнения и позволяет отслеживать состояние процесса на экране редактора экземпляров процессов. 

Редактор экземпляров процессов с диаграммой мониторинга состояния
Редактор экземпляров процессов с диаграммой мониторинга состояния

В Jmix разработчики могут легко переиспользовать компонент bpmnViewer и всего за несколько простых шагов добавить его на нужный экран. Для этого в первую очередь нужно добавить компонент bpmnViewer в дескриптор макета экрана Jmix в качестве стандартного компонента UI.

Дескриптор макета экрана Jmix с компонентом bpmnViewer
Дескриптор макета экрана Jmix с компонентом bpmnViewer

Затем нужно встроить bpmnViewer в пользовательский контроллер экрана и настроить его поведение в соответствии с бизнес-логикой приложения. 

Контроллер экрана Jmix, демонстрирующий инициализацию bpmnViewer
Контроллер экрана Jmix, демонстрирующий инициализацию bpmnViewer

Как показано на скриншоте выше, у Java-разработчиков есть все инструменты для встраивания и конфигурации отображения BPMN в их приложении:  

  • Добавление компонента bpmnViewer; 

  • Установка BPMN XML в компонент просмотра; 

  • Вызов функции addMarker для установки конкретного стиля на элемент. 

В результате этих манипуляций визуальный компонент мониторинга бесшовно встраивается в пользовательский экран. Разработчики Jmix могут переиспользовать его на во всём проекте с минимумом написания кода. 

Визуализация мониторинга процесса в формате диаграммы BPMN
Визуализация мониторинга процесса в формате диаграммы BPMN

Это один из примеров того, как интеграция bpmn-js с технологией Vaadin привнесла новые идеи в процесс разработки приложений.  

Однако мы не только добавили в Jmix готовый конструктор bpmn-js, но также расширили его своими уникальными функциями. Среди них: 

  • Инструмент конфигурации Service task позволяет указать нужный Spring Bean из рабочего проекта и установить значения параметров в соответствии с контекстом бизнес-процесса. Снижается количество ошибок и опечаток . 

  • Разработчики могут управлять Execution Listeners в удобном списочном представлении и выполнять конфигурирование в диалоговом окне редактора. 

Инструмент конфигурации Service Task для связывания с бизнес-логикой приложения в формате Spring Bean
Инструмент конфигурации Service Task для связывания с бизнес-логикой приложения в формате Spring Bean
Окно конфигурирования Execution Listeners  и параметров вызова
Окно конфигурирования Execution Listeners  и параметров вызова

Интеграция конструктора bpmn-js и встраиваемого BPM-движка позволила разработчикам и аналитикам создавать бизнес-процессы в визуальном режиме и связывать их с моделью данных, ролями пользователей и бизнес-логикой. Это был уже более удачный вариант по сравнению с кастомным конструктором, но при работе все равно приходилось переключаться между режимами разработки и исполнения. Мы же хотели, чтобы все действия можно было выполнять при помощи одного инструмента. Звучит хорошо? На деле получилось еще лучше! 

Переход к интегрированной среде разработки BPM 

Наше видение стало реальностью в 2021 году, когда мы перенесли конструктор бизнес-процессов на базе bpmn-js в среду разработки IntelliJ IDEA. 

Плагин для IntelliJ IDEA Jmix Studio с встроенным BPMN конструктором
Плагин для IntelliJ IDEA Jmix Studio с встроенным BPMN конструктором

Мы сохранили привычный жизненный цикл разработки приложений: после проектирования бизнес-процесса в Jmix Studio разработчик запускает его с помощью встроенного BPM-движка в локальном окружении. Сложнее всего было сохранить привычные пользователям механики при переходе от конструктора BPMN внутри среды исполнения к IntelliJ IDEA и при этом соответствовать рекомендациям по дизайну инструментов IDE.  

Встроить в IntelliJ IDEA сам конструктор BPMN было несложно. Труднее оказалось реализовать совместимые с IDE инструменты конфигурирования элементов бизнес-процессов и их параметров. 

После R&D мы решили добавить специальную подсветку редактируемых свойств элементов процесса в панели инструментов IDE, сохраняя логическую группировку свойств в среде исполнения. Сходство можно увидеть при сравнении одного и того же окна элемента типа User Task в конструкторе внутри среды исполнения Jmix и в конструкторе в Jmix Studio. 

Положительное влияние на производительность разработчиков 

Подведем итог и суммируем, какие результаты принесла интеграция BPMN в Jmix: 

  • Используя bpmn-js, мы бесшовно интегрировали работу с BPMN в IntelliJ IDEA. Разработчики получили удобный инструмент для моделирования бизнес-процессов в сочетании с преимуществами единого подхода к проектированию UX и профессиональными инструментами работы с кодом приложения. 

  • Подготовленные аналитиком диаграммы можно загружать непосредственно в IntelliJ IDEA, а затем дополнять их прикладной моделью данных, бизнес-логикой, пользовательскими экранами, интеграциями и обработкой исключений, не переключаясь между различными инструментами.  

  • Процесс можно развернуть и запустить на рабочей станции разработчика, чтобы протестировать бизнес-логику и убедиться в корректности работы. Разработчики получают доступ ко всем мощным инструментам отладки IntelliJ IDEA, что упрощает работу и делает ее более эффективной. 

  • После локальной отладки можно сделать commit и push изменений в общий репозиторий, что позволит аналитику увидеть обновленную версию диаграммы BPMN и проверить работу процесса в тестовой среде. 

  • Если аналитику потребуется изменить модель BPMN, то диаграмму можно будет скорректировать прямо в runtime приложения и сразу протестировать. Обновленную версию диаграммы можно скачать и переслать разработчику для внесения изменений в design time. 

Таким образом, Jmix позволяет охватить весь жизненный цикл создания бизнес-процессов в рамках общепринятых инструментов, и более того, интегрировать инструменты работы с BPMN в конвейер CI/CD. 

Комментарии (0)