- PVSM.RU - https://www.pvsm.ru -
Незаметно пролетели почти три года с момента публикации первой статьи о платформе на Хабре. За это время многое изменилось: мы вышли на международный рынок, перешли к open source лицензии [1], обновили стек технологий и внесли множество улучшений во фреймворк и средства разработки. Поэтому вместо длинного списка изменений мы решили опубликовать ещё одну обзорную статью о платформе CUBA, которая, я надеюсь, будет интересна разработчикам кровавого энтерпрайза корпоративных информационных систем — как ещё не знакомым с платформой, так и тем, кто уже что-то слышал о ней.
Итак, под катом вы узнаете:
В первую очередь, платформа CUBA нацелена на разработку корпоративных информационных систем. Типичные характеристики таких приложений: развитая модель данных, десятки и даже сотни относительно типовых экранов, поддержка большого количества сложных бизнес-процессов, множество отчетов, требования по разграничению прав доступа, и так далее.
Ключевые особенности платформы:
В совокупности, это позволяет минимизировать временные затраты на “системные” задачи – настройку инфраструктуры проекта, интеграцию технологий и компонентов, разработку базовой функциональности – и сконцентрироваться на реализации бизнес-требований. В то же время, CUBA не ограничивает доступ к низкоуровневому коду, гарантируя возможность адаптировать его под нужды проекта.
Приложения на базе CUBA имеют стандартную трёхслойную архитектуру. Связующим элементом системы являются метаданные – информация о модели данных приложения. Благодаря метаданным визуальные компоненты знают о том, с какими данными они работают. Так, например, таблица знает, что отображает атрибуты сущности “водитель” и автоматически заполняет имена и формат колонок. Таким же образом метаданные помогают визуальным компонентам работать с базой данных через ORM, задавая графы объектов, которые нужно загрузить или обновить. Тот же принцип применяется к подсистеме безопасности, генерации отчётов и прочим частям платформы.
Платформу отличает богатый декларативный web интерфейс: создавать экраны можно в визуальном редакторе или в XML, выбирая из десятков визуальных компонентов от всевозможных кнопок до Google Maps и динамических графиков. Логика инициализации и обработки событий задаётся затем в Java (или Groovy)-контроллерах. Учитывая привязку компонентов к данным, можно очень быстро создать сложный UI, который при этом будет легко поддерживать благодаря чёткому отделению кода от разметки. Если выбора доступных компонентов недостаточно, в платформе реализован механизм интеграции внешних компонентов, написанных на Vaadin, GWT или JavaScript.

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

Универсальный фильтр данных
В дополнение к вышесказанному, в CUBA есть и другие готовые фичи [2] из коробки, включая:
Что касается стадии внедрения и вариантов окружения, здесь у вас достаточно свободы выбора. Приложения, созданные на платформе 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 реализована интеграция [3], позволяющая деплоить приложение в один клик прямо из Studio.
Всё, что нужно для разработки приложений на CUBA – это Java SE, XML и JPQL. Это делает код вашего приложения максимально однородным, а значит более лёгким в сопровождении. Это также позволяет команде разработки быть более гибкой – вам не требуется отдельная группа Web-разработчиков или гуру Java EE.
Бизнес-логику приложения вы можете писать в любой привычной IDE, как IntelliJ IDEA или Eclipse, которую дополняет CUBA Studio – специализированная IDE для автоматизации целого ряда задач, связанных с платформой, таких как:

Все изменения между Studio и IDE синхронизируются, так что вы сами можете выбирать, в чём работать. В дополнение, в Studio реализован hot deploy – все изменения, кроме модели данных, включая внешние изменения в Java IDE, автоматически компилируются и деплоятся на сервер без перезапуска (о нашей реализации hot deploy мы писали [4] ранее). В итоге, Studio берёт на себя большую часть рутинной работы – хотя при желании можно работать и исключительно в Java IDE. Например, для IntelliJ IDEA существует отличный плагин [5].
Если вам необходимо мигрировать устаревшее приложение на современный стек, CUBA также может стать хорошим вариантом. В Studio встроены средства миграции, которые автоматически генерируют модель данных и CRUD экраны на основе существующей БД, причем не меняя схему последней. Конечно, в любом случае необходимо будет портировать бизнес логику и специфические экраны, но это существенно экономит общие трудозатраты.
Вопросы, связанные с разработкой, обсуждаются на бесплатных англо [6] — и русскоязычных [7] форумах, вероятнее всего вы получите ответ на свой вопрос в течение дня. И, конечно, доступны коммерческие варианты поддержки и консультаций.
На картинке ниже отображены запуски уникальных проектов на Studio за август. Studio собирает анонимную статистику только с разрешения пользователя, так что список далеко не полный. При этом за 8 месяцев с начала года количество запусков Studio увеличилось примерно в 10 раз и продолжает быстро расти — во многом благодаря недавнему переходу к open source модели. Мы постоянно участвуем в Java конференциях, что также способствует росту сообщества: в этом году мы уже были на JavaZone в Осло, QCon в Нью-Йорке, AADI в Лондоне, в ближайшее время едем на JavaOne в Сан-Франциско и JokerConf в Питер. Технически платформа развивается не менее активно [8]. Надо отметить, что на ней построены все решения нашей компании [9], что является дополнительным драйвером для поддержки и развития. Кстати, недавно платформа была включена в реестр отечественного ПО [10] – для некоторых компаний это может быть актуально.

Почти. Как обозначено в заголовке, сам фреймворк является опенсорсным и распространяется под Apache 2.0 лицензией, его исходный код доступен на GitHub. Это означает, что использование платформы не накладывает никаких лицензионных ограничений на разработанные на ней приложения. CUBA Studio, в свою очередь, доступна в бесплатной и коммерческой версии. Бесплатная версия CUBA Studio полностью функциональна, но имеет ограничения по размеру модели данных приложения. Она идеально подходит для начала проекта и изучения возможностей платформы. Дальнейшую разработку можно продолжить абсолютно бесплатно непосредственно в Java IDE, либо купив подписку на коммерческую лицензию, которая также предоставляет доступ к Premium-дополнениям: генератору отчётов, диаграммам и картам, полнотекстовому поиску и BPM. Стоимость годовой подписки для одного разработчика – 18 000 руб., за пределами стран СНГ чуть дороже – $389.
Надеюсь, после прочтения этого обзора у вас сложилось представление о платформе CUBA. Если у вас возникло желание попробовать её “в деле”, можно просто скачать Studio [11] без регистраций и смс, пройти Quick Start [12] и уже через несколько минут запустить своё первое CUBA приложение. Следить за новостями платформы можно в Twitter [13], Facebook [14], русском [15] и английском [16] блогах – в последнем сейчас больше публикаций, но мы планируем это скоро исправить!
Автор: Haulmont
Источник [17]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/190141
Ссылки в тексте:
[1] перешли к open source лицензии: https://www.cuba-platform.ru/blog/2016-05-05/510
[2] фичи: https://www.cuba-platform.ru/framework#features
[3] интеграция: https://www.cuba-platform.ru/cloud
[4] писали: https://habrahabr.ru/company/haulmont/blog/248981/
[5] плагин: https://www.cuba-platform.ru/development-tools#ideplugins
[6] англо: https://www.cuba-platform.com/support/
[7] русскоязычных: https://www.cuba-platform.ru/support/
[8] не менее активно: https://www.cuba-platform.com/blog/2016-09-05/587
[9] компании: http://www.haulmont.ru
[10] реестр отечественного ПО: https://reestr.minsvyaz.ru/reestr/87366/?sphrase_id=31329
[11] Studio: https://www.cuba-platform.com/download
[12] Quick Start: https://www.cuba-platform.ru/quickstart
[13] Twitter: https://twitter.com/cubaplatform
[14] Facebook: https://www.facebook.com/CUBAplatform/
[15] русском: https://www.cuba-platform.ru/blog
[16] английском: https://www.cuba-platform.com/blog
[17] Источник: https://habrahabr.ru/post/310148/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.