Платформа CUBA: Java RAD фреймворк с открытым кодом

в 7:46, , рубрики: ERP-системы, haulmont, java, open source, Блог компании Haulmont, Программирование

image Незаметно пролетели почти три года с момента публикации первой статьи о платформе на Хабре. За это время многое изменилось: мы вышли на международный рынок, перешли к open source лицензии, обновили стек технологий и внесли множество улучшений во фреймворк и средства разработки. Поэтому вместо длинного списка изменений мы решили опубликовать ещё одну обзорную статью о платформе CUBA, которая, я надеюсь, будет интересна разработчикам кровавого энтерпрайза корпоративных информационных систем — как ещё не знакомым с платформой, так и тем, кто уже что-то слышал о ней.

Итак, под катом вы узнаете:

  • Что представляет из себя платформа CUBA и какова её архитектура
  • Какие решения эффективнее всего разрабатывать на CUBA
  • Как платформа помогает сэкономить время разработки корпоративных систем
  • Какое окружение необходимо для развертывания CUBA-приложений
  • Как мигрировать устаревшую систему на CUBA
  • Под какой лицензией распространяется платформа
  • Как организована поддержка разработчиков

Какие задачи решает платформа?

В первую очередь, платформа CUBA нацелена на разработку корпоративных информационных систем. Типичные характеристики таких приложений: развитая модель данных, десятки и даже сотни относительно типовых экранов, поддержка большого количества сложных бизнес-процессов, множество отчетов, требования по разграничению прав доступа, и так далее.

Ключевые особенности платформы:

  • высокий уровень абстракции относительно технологий, лежащих в её основе – Vaadin, Spring, EclipseLink и т.д.
  • готовые, интегрированные компоненты, решающие многие типовые задачи корпоративных систем
  • визуальные средства разработки и развитая генерация шаблонного кода

В совокупности, это позволяет минимизировать временные затраты на “системные” задачи – настройку инфраструктуры проекта, интеграцию технологий и компонентов, разработку базовой функциональности – и сконцентрироваться на реализации бизнес-требований. В то же время, CUBA не ограничивает доступ к низкоуровневому коду, гарантируя возможность адаптировать его под нужды проекта.

Как это устроено?

Приложения на базе CUBA имеют стандартную трёхслойную архитектуру. Связующим элементом системы являются метаданные – информация о модели данных приложения. Благодаря метаданным визуальные компоненты знают о том, с какими данными они работают. Так, например, таблица знает, что отображает атрибуты сущности “водитель” и автоматически заполняет имена и формат колонок. Таким же образом метаданные помогают визуальным компонентам работать с базой данных через ORM, задавая графы объектов, которые нужно загрузить или обновить. Тот же принцип применяется к подсистеме безопасности, генерации отчётов и прочим частям платформы.

Платформу отличает богатый декларативный web интерфейс: создавать экраны можно в визуальном редакторе или в XML, выбирая из десятков визуальных компонентов от всевозможных кнопок до Google Maps и динамических графиков. Логика инициализации и обработки событий задаётся затем в Java (или Groovy)-контроллерах. Учитывая привязку компонентов к данным, можно очень быстро создать сложный UI, который при этом будет легко поддерживать благодаря чёткому отделению кода от разметки. Если выбора доступных компонентов недостаточно, в платформе реализован механизм интеграции внешних компонентов, написанных на Vaadin, GWT или JavaScript.

image
Экран одного из приложений на платформе

Важной частью пользовательского интерфейса CUBA является универсальный фильтр данных – компонент, позволяющий пользователям создавать свои условия поиска. Разработчику достаточно перетащить компонент на экран браузера (так мы называем типовые экраны отображения списка сущностей), и можно о нём забыть. Пользователи и администраторы системы сами определят, что и как искать. Основанная на ролевой модели подсистема контроля прав доступа позволяет в рантайме управлять доступностью CRUD операций над сущностями или отдельными атрибутами, видимостью экранных компонентов, а также произвольными токенами, которые можно создавать и использовать программно. Контроль доступа на уровне строк позволяет разграничить доступ к определённым записям данных. К примеру, пользователи из регионального департамента смогут видеть только документы, созданные в этом департаменте. В довершение, все изменения в данных логируются, так что вы всегда увидите, кто, что и когда изменил – очень удобно при “разборе полётов”.

image
Универсальный фильтр данных

В дополнение к вышесказанному, в CUBA есть и другие готовые фичи из коробки, включая:

  • управление пользователями и средства администрирования
  • создание отчётов
  • управление бизнес-процессами во встроенном визуальном дизайнере
  • многоязыковой интерфейс и поддержка разных часовых поясов
  • полнотекстовый поиск
  • универсальный REST API

На чём я могу развернуть своё приложение?

Что касается стадии внедрения и вариантов окружения, здесь у вас достаточно свободы выбора. Приложения, созданные на платформе CUBA, можно развернуть в различных конфигурациях, начиная от запуска всех компонентов приложения на одном сервере и до конфигураций, обеспечивающих высокую отказоустойчивость, с разделёнными web, средним и БД слоями. Платформа «из коробки» поддерживает PostgreSQL, Oracle Database, Microsoft SQL Server, MySQL и HSQL (последняя обычно используется для прототипирования), между которыми можно переключаться по мере роста проекта. Также важно заметить, что CUBA-приложения могут быть развёрнуты на любом сервере Java EE Web Profile, включая Jetty, Tomcat, Glassfish, Websphere и т.д. И конечно, вы можете деплоить ваше приложение в Docker и/или запускать его в любом популярном PaaS облаке вроде CloudFoundry, OpenShift или Jelastic. Кстати, для Jelastic реализована интеграция, позволяющая деплоить приложение в один клик прямо из Studio.

Что нужно, чтобы начать писать приложения на CUBA?

Всё, что нужно для разработки приложений на CUBA – это Java SE, XML и JPQL. Это делает код вашего приложения максимально однородным, а значит более лёгким в сопровождении. Это также позволяет команде разработки быть более гибкой – вам не требуется отдельная группа Web-разработчиков или гуру Java EE.

Бизнес-логику приложения вы можете писать в любой привычной IDE, как IntelliJ IDEA или Eclipse, которую дополняет CUBA Studio – специализированная IDE для автоматизации целого ряда задач, связанных с платформой, таких как:

  • настройка инфраструктуры проекта: скриптов сборки, проектных файлов и т.п.
  • визуальное конструирование UI и модели данных
  • автогенерация CRUD экранов, с возможностью выбора из типовых вариантов разметки
  • поддержание актуальности БД с помощью автоматической генерации и запуска скриптов обновления
  • создание стабов для обработчиков событий, сервисов и т.п.

image

Все изменения между Studio и IDE синхронизируются, так что вы сами можете выбирать, в чём работать. В дополнение, в Studio реализован hot deploy – все изменения, кроме модели данных, включая внешние изменения в Java IDE, автоматически компилируются и деплоятся на сервер без перезапуска (о нашей реализации hot deploy мы писали ранее). В итоге, Studio берёт на себя большую часть рутинной работы – хотя при желании можно работать и исключительно в Java IDE. Например, для IntelliJ IDEA существует отличный плагин.

Если вам необходимо мигрировать устаревшее приложение на современный стек, CUBA также может стать хорошим вариантом. В Studio встроены средства миграции, которые автоматически генерируют модель данных и CRUD экраны на основе существующей БД, причем не меняя схему последней. Конечно, в любом случае необходимо будет портировать бизнес логику и специфические экраны, но это существенно экономит общие трудозатраты.

Насколько активно сообщество разработчиков? Что если платформа перестанет поддерживаться?

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

На картинке ниже отображены запуски уникальных проектов на Studio за август. Studio собирает анонимную статистику только с разрешения пользователя, так что список далеко не полный. При этом за 8 месяцев с начала года количество запусков Studio увеличилось примерно в 10 раз и продолжает быстро расти — во многом благодаря недавнему переходу к open source модели. Мы постоянно участвуем в Java конференциях, что также способствует росту сообщества: в этом году мы уже были на JavaZone в Осло, QCon в Нью-Йорке, AADI в Лондоне, в ближайшее время едем на JavaOne в Сан-Франциско и JokerConf в Питер. Технически платформа развивается не менее активно. Надо отметить, что на ней построены все решения нашей компании, что является дополнительным драйвером для поддержки и развития. Кстати, недавно платформа была включена в реестр отечественного ПО – для некоторых компаний это может быть актуально.

image

Open source = бесплатно?

Почти. Как обозначено в заголовке, сам фреймворк является опенсорсным и распространяется под Apache 2.0 лицензией, его исходный код доступен на GitHub. Это означает, что использование платформы не накладывает никаких лицензионных ограничений на разработанные на ней приложения. CUBA Studio, в свою очередь, доступна в бесплатной и коммерческой версии. Бесплатная версия CUBA Studio полностью функциональна, но имеет ограничения по размеру модели данных приложения. Она идеально подходит для начала проекта и изучения возможностей платформы. Дальнейшую разработку можно продолжить абсолютно бесплатно непосредственно в Java IDE, либо купив подписку на коммерческую лицензию, которая также предоставляет доступ к Premium-дополнениям: генератору отчётов, диаграммам и картам, полнотекстовому поиску и BPM. Стоимость годовой подписки для одного разработчика – 18 000 руб., за пределами стран СНГ чуть дороже – $389.

Надеюсь, после прочтения этого обзора у вас сложилось представление о платформе CUBA. Если у вас возникло желание попробовать её “в деле”, можно просто скачать Studio без регистраций и смс, пройти Quick Start и уже через несколько минут запустить своё первое CUBA приложение. Следить за новостями платформы можно в Twitter, Facebook, русском и английском блогах – в последнем сейчас больше публикаций, но мы планируем это скоро исправить!

Автор: Haulmont

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js