CUBA.platform

Продукт
Разработчики: Haulmont (Хоулмонт)
Дата последнего релиза: 2016
Отрасли: Интернет-сервисы,  Информационные технологии
Технологии: BPM,  BRMS,  PaaS - Platform As A Service - Бизнес-платформа как сервис,  Средства разработки приложений

Содержание

Платформа CUBA (CUBA Platform) - это высокоуровневый Java-framework для разработки корпоративных приложений. Разработка платформы началась в 2008 году компанией «Хоулмонт». Она задумывалась как платформа для быстрого создания легко масштабируемых корпоративных приложений с web-интерфейсом. За основу был взят популярный стек Java технологий: OpenJPA (позже EclipseLink), Spring, Vaadin. Платформа объединяет open-source технологии и включает в себя набор готовых компонентов, позволяющий быстро решать типовые задачи при разработке отказоустойчивых бизнес-приложений, создавая тем самым эффективную среду разработки.

Изначально платформа использовалась как основной инструмент разработки большинства продуктов и решений компании Haulmont. С 2015 года CUBA Platform распространяется в виде отдельного продукта для ИТ-разработчиков.

Назначение

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

2016

Платформа CUBA вошла в единый реестр российского программного обеспечения

Флагманская разработка компании «Хоулмонт» - оpen-source платформа CUBA, предназначенная для разработки корпоративных приложений, включена в реестр российских программ для электронных вычислительных машин и баз данных. Решение о включении платформы CUBA в реестр было принято экспертным советом по российскому ПО при Минкомсвязи России 5 сентября 2016 года. Платформа CUBA также включена в каталог Ассоциации Разработчиков Программных Продуктов «Отечественный софт».

CUBA Platform переведена на opensource

Российская компания-разработчик Haulmont объявила в июне 2016 года о переводе платформы CUBA в open source. Теперь платформа распространяется по лицензии Apache 2.0 с исходным кодом доступным на GitHub; монетизировать её компания планирует за счет продажи инструментов повышающих эффективность разработки и дополнительных модулей.

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

По сути, платформа CUBA представляет собой высокоуровневый фреймворк, объединяющий в единую архитектуру набор популярных open-source технологий, что позволяет разработчикам абстрагироваться от отдельных технологий, использующихся для создания бизнес-систем (технологий разработки пользовательского интерфейса, ORM и т.д.) и сконцентрироваться на создании бизнес-логики приложения.

Приложения на базе CUBA имеют стандартную трехуровневую архитектуру: уровень БД, средний слой и клиентский уровень. Платформа обладает спектром функциональности, такой как: подсистема контроля уровня доступа пользователей, аудит данных, задачи по расписанию, мультиязыковой интерфейс, консоль разработчика, универсальный REST API, динамические атрибуты и другие характерные для корпоративных приложений модули.

С точки зрения разработчика, весь код пишется на Java SE (бизнес-логика приложения), XML (пользовательский интерфейс) и JPQL (работа с данными). Пользовательский интерфейс описывается декларативно в XML, а контроллеры экранов реализуются также на Java SE. Однако, возможно создание динамического пользовательского интерфейса непосредственно из кода контроллера. Пользовательский интерфейс включает в себя более 70 визуальных компонентов, в том числе универсальный фильтр данных; при этом существует возможность интегрировать сторонние или свои собственные компоненты, разработанные на JavaScript или GWT.

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

Разработка приложения может вестись в популярных Java IDE (IntelliJ IDEA, Eclipse). Параллельно с IDE возможно использование CUBA Studio. Это специализированная визуальная среда разработки, которая позволяет наиболее эффективно использовать функционал фреймворка.

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

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

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

Главное преимущество лицензирования платформы по Apache 2.0 - отсутствие ограничений на приложения, созданные с помощью платформы, которые можно свободно использовать и распространять без каких-либо платежей.

Таким образом разработку также можно вести полностью бесплатно, либо приобрести годовую подписку по цене 18 000 на разработчика, чтобы получить доступ к CUBA Studio и премиум-дополнениям. В дополнение, компания предлагает варианты техподдержки для команд, работающих над критическими для бизнеса проектами.

Отличительные особенности

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

Быстрая визуальная разработка приложений

CUBA Studio ­- инструмент разработчика, позволяющий быстро конфигурировать проект, описывать модель данных и визуально проектировать экраны пользовательского интерфейса. Ввиду наличия возможности "hot deploy" сделанные изменения могут применяться без перезапуска приложения.

CUBA Studio поддерживает двустороннюю интеграцию с наиболее популярными IDE: JetBrains IntelliJ IDEA и Eclipse.

Масштабирование

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

В максимальном варианте развертывания подключение пользователей к серверам Web Client производится через Load Balancer. Серверы WebClient работают с кластером серверов Middleware.
В кластере серверов Middleware организуется взаимодействие для обмена информацией о пользовательских сессиях, блокировках и пр. При этом обеспечивается полная отказоустойчивость блока Middleware - при отключении одного из серверов выполнение запросов от клиентских блоков продолжается на доступном сервере прозрачно для пользователей.

Поддержка различных СУБД

Платформа предоставляет независимость от специфики СУБД. `Из коробки` поддерживается возможность работы с HSQL, PostgreSQL, Microsoft SQL Server, Oracle database. Возможность работы с другими СУБД настраивается отдельно.

Конвертация модели данных между БД и JAVA кодом осуществляется при помощи ORM совместно с соответствующим драйвером JDBC.

Подсистема безопасности

Платформа CUBA предоставляется следующие средства для контроля безопасности приложения:

  • Авторизация, включая интеграцию с LDAP и возможность использовать Single Sign-On.
  • Ролевая модель пользователей. Роль объединяет набор разрешений, которые определяют право пользователя на какой-либо объект или функциональность системы: экран, операцию над сущностью и так далее.
  • Группы доступа, которые позволяют организовывать пользователей в иерархическую структуру для установки ограничений и для присвоения произвольных атрибутов сессии.

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

Платформа CUBA предоставляется универсальный механизм создания пользовательских фильтров для отбора произвольных данных в UI.

Гибкие возможности кастомизации

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

Данный механизм реализует два ключевых момента:

  • Программный код кастомного проекта полностью отделяется от кода продукта.
  • Любая часть кода продукта доступна для изменения в клиентском проекте.

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

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

Возможно также создание нескольких уровней расширений.

Интеграция со сторонними приложениями

Универсальный REST API платформы позволяет выполнять загрузку и сохранение любых сущностей модели данных приложения посредством отправки простых HTTP запросов. Это открывает возможность легкой интеграции со сторонними приложениями самого широкого спектра − от JavaScript кода, выполняющегося в браузере, до произвольных систем, работающих на Java, .NET, PHP или любой другой платформе.

Основные возможности API:

  • загрузка экземпляров сущностей из базы данных по идентификатору или по JPQL запросу с параметрами;
  • сохранение новых и измененных экземпляров, удаление экземпляров;
  • получение описания модели данных в формате HTML;
  • представление данных в форматах JSON и XML на выбор;
  • аутентификация пользователя;
  • вызов сервисов среднего слоя.

Все функции работают с данными в кодировке UTF-8.

Подключаемые модули

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

Управление бизнес- процессами

Подсистема исполнения бизнес-процессов платформы CUBA основана на фреймворке Alfresco Activiti, что позволяет использовать в приложения бизнес-процессы, описанный в нотации BPMN 2.0.

Генератор отчетов

Платформа CUBA предоставляет механизм создания отчетов с выводом в форматы офисных документов, PDF, а также произвольные текстовые форматы (xml, html или csv). В основе генератора отчетов лежит фреймворк YARG.

Для простоты формирования отчетов предусмотрен wizard.

Более сложная настройка отчетов предусмотрена при помощи специального редактора.


Полнотекстовый поиск

Полнотекстовый поиск (full text search, FTS) платформы CUBA предоставляет возможность неструктурированного поиска по значениям атрибутов сущностей и по содержимому загруженных файлов.
Особенностью реализации полнотекстового поиска CUBA является его ориентация на использование в бизнес-приложениях со сложными моделями данных. В частности, в результатах поиска отображаются не только сущности, напрямую содержащие в некотором атрибуте искомую строку, но и связанные сущности, при отображении которых используется этот атрибут.

Интерактивные диаграммы и интеграция с Google Maps

Подсистема отображения диаграмм платформы CUBA поддерживает большое количество типов диаграмм: круговые, линейные, пузырьковые, лепестковые, диаграммы с накоплением и прочие. Имеется возможность экспорта диаграмм. Для большинства типов диаграмм поддерживается прокрутка и зуммирование.

Широкая функциональность по работе с картами:

  • Реакция на события.
  • Установка маркеров. Маркер может быть фиксированным или с перетаскиваемым пользователем. Маркер может обрабатывать щелчки мыши и передавать соответствующее событие в код экрана.
  • Отображение и рисование ломаных линий и полигонов (многоугольников).
  • Отображение тепловой карты (heat map).

Используемые технологии

Spring Framework

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

EclipseLink

ORM EclipseLink - это расширяемый фреймворк для взаимодействия с различными источниками данных, включая базы данных, веб-сервисы, объектный маппинг в XML (Object XML mapping, OXM), корпоративные информационные системы.

Vaadin

Фреймворк Vaadin используется в веб-клиенте для отображения универсального пользовательского интерфейса. С одной стороны, Vaadin предоставляет богатый набор компонентов, возможности расширения и кастомизации визуального представления с помощью CSS, с другой - его серверная модель исполнения увеличивает безопасность приложения и позволяет унифицировать код UI между веб- и десктоп-клиентами.

Activiti framework
Интегрированный фреймворк Alfresco Activiti обеспечивает исполнение бизнес процессов в формате BPMN 2.0.

Lucene Фреймворк Apache Lucene, являющийся де-факто стандартом реализации механизма полнотекстового поиска, используется в дополнительном модуле FTS (full-text search).

Gradle Для сборки проектов применяется популярная система Gradle, позволяющая с одной стороны инкапсулировать в плагинах особенности построения CUBA-приложений, а с другой - дает при необходимости неограниченные возможности кастомизации написанных на Groovy скриптов сборки.

YARG

YARG используется в качестве инструмента для формирования отчетов.

Веб-серверы

Приложения, созданные на основе CUBA, могут быть развернуты на любом сервере Java EE Web Profile: ­ Tomcat, Glassfish и т.п.

Лицензирование

Бесплатная лицензия

Платформа CUBA может быть использована бесплатно с ограничением на 5 одновременных подключений к приложению. Бесплатный лицензионный файл загружается вместе с платформой.
Бесплатная лицензия также предоставляется российским учебным заведениям для использования в собственных нуждах.

Коммерческая лицензия

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

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





Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров

За всю историю
2015 год
2016 год
2017 год
Текущий год

Распределение базовых систем по количеству проектов, включая партнерские решения

За всю историю
2015 год
2016 год
2017 год
Текущий год

Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров

За всю историю
2015 год
2016 год
2017 год
Текущий год

  Microsoft (84, 106)
  Oracle (46, 16)
  Техносерв (2, 16)
  Онланта (2, 14)
  IBM (39, 10)
  Другие (181, 57)

  Microsoft (2, 13)
  SkyparkCDN (1, 5)
  Oracle (2, 4)
  ActiveCloud by Softline (АктивХост РУ) (2, 2)
  IBM (1, 2)
  Другие (5, 6)

  Microsoft (2, 10)
  Oracle (2, 3)
  Онланта (1, 2)
  HPC HUB (1, 2)
  SkyparkCDN (1, 2)
  Другие (7, 7)

  Microsoft (2, 8)
  Техносерв (1, 6)
  Онланта (1, 4)
  Oracle (2, 2)
  HPC HUB (1, 2)
  Другие (3, 4)

  Microsoft (2, 9)
  Техносерв (1, 9)
  Онланта (1, 4)
  Oracle (3, 3)
  Haulmont (Хоулмонт) (2, 2)
  Другие (1, 1)

Распределение базовых систем по количеству проектов, включая партнерские решения

За всю историю
2015 год
2016 год
2017 год
Текущий год

  Microsoft Azure - 71 (51, 20)
  Техносерв Cloud - 16 (16, 0)
  OnCloud.ru - 14 (14, 0)
  IBM Cloud - 8 (6, 2)
  Microsoft Azure Blockchain-as-a-Service - 8 (1, 7)
  Другие 50

  Microsoft Azure - 13 (12, 1)
  Sky Live - 5 (5, 0)
  Oracle Database 12c - 3 (3, 0)
  IBM Cloud - 2 (2, 0)
  Orange Mobile Device Management - 2 (2, 0)
  Другие 6

  Техносерв Cloud - 9 (9, 0)
  Microsoft Azure - 7 (7, 0)
  OnCloud.ru - 4 (4, 0)
  CUBA.platform - 2 (1, 1)
  Ethereum Blockchain as a Service (EBaaS) - 2 (2, 0)
  Другие 3