Как мы зарабатываем на бесплатном продукте и независимости клиента даже от нас
Опыт компании Haulmont по разработке и развитию open-source-продукта на международном рынке.
В реальном мире цифровой суверенитет — основа технологической и финансовой безопасности не только для государства, но и для любой компании. 11 лет назад, в 2008 году, фактически в момент основания компании Haulmont, решили, что компания только выиграет, если не будет привязывать заказчика к себе.
Казалось бы, это такой анти-вендорский подход и выстрел в собственную ногу, но на самом деле это игра вдолгую, которая себя оправдала. Мы выбирали во всём бесплатные продукты и компоненты на открытых технологиях, а в 2016 году один из наших ключевых продуктов для разработчиков CUBA Platform стал полностью бесплатным. Тем не менее выручка компании только растёт. Ниже история причин и успеха.
Драйвером развития компании стала CUBA Platform — платформа, нацеленная на эффективную разработку корпоративных приложений на Java и других языках, совместимых с JVM. Этакий продукт на рынок dev2dev, технологии для технологий или даже разработчики для разработчиков.
Платформа распространяется по открытой лицензии Apache 2.0, весь процесс разработки ведётся открыто, исходные коды доступны на GitHub. Все используемые в платформе компоненты также отвечают необходимым требованиям. Технология используется тысячами разработчиков по всему миру.
Немного истории. Изначально платформу в компании начали делать для себя, чтобы не повторять одно и то же на множестве проектов. Точнее сказать, мы ставили перед собой три цели:
Несколько первых поколений продукта имели немного общего с тем, что мы имеем сейчас. Во многом потому, что он не делался на продажу. Первое использование CUBA Platform за пределами компании произошло только в 2011 году, причём это было сделано просто так, мол, пусть попробуют, люди-то хорошие, да и мы ничего не теряем. Результат был весьма позитивным, и решение наших партнеров улетело в промышленную эксплуатацию быстро и без особых проблем.
Ну раз одним подошло, подойдет и другим? Далее мы начали готовить платформу к «внешнему» использованию. Уффф, работы было сильно больше, чем мы ожидали… Одна документация чего стоила… Благо, руководство компании всячески поддерживало и инвестировало в продукт. И после череды локальных побед и поражений решение вышло на международный рынок. Состоялась первая в жизни продукта конференция, да какая! Сразу San-Francisco, сразу JavaOne, да еще и в юбилейные 20 лет этой экосистемы! И сразу позитивные отзывы! Не без критики конечно, в основном в сторону проприетарной лицензии, которая была изначально.
Экспоненциальный рост числа проектов и сообщества разработчиков на платформе мы получили только сделав её бесплатной и показав примеры реализованных на CUBA проектов. С одной стороны большой ошибкой было тянуть до 2016 года с переходом в Open Source, а с другой стороны это достаточно тяжелая ноша и, возможно, мы финансово бы не вывезли её раньше. На текущий момент инвестиции в платформу, которые не возвращаются (напрямую) превышают миллион долларов США в год. Считайте, это наш вклад в общее дело развития Java экосистемы 🙂
С чем мы имеем дело сегодня. Более 15 000 разработчиков в 150 странах мира из 1000+ компаний являются пользователями наших технологий. CUBA принята на вооружение в ряде университетов, в качестве предмета изучения студентов. В актуальной версии платформы представлены инструменты, позволяющие кратно снизить стоимость разработки веб приложений для корпоративного сегмента.
Теперь к деньгам. Есть дополнительные (необязательные) инструменты, позволяющие повысить эффективность разработки и понизить порог вхождения — они стоят небольших денег. Но это лишь малая часть бюджета. Основным источником доходов является наше сообщество. CUBA фактически продает наши услуги, без нашего активного участия. С какого-то момента мы перестали удивляться письмам от голубых фишек вроде IKEA, Robert Bosch, Johnson&Johnson, Deloitte с запросами о платформе и предложениями поучаствовать в проекте. Это и есть та самая доходная статья — заказная разработка. На данный момент мы ведем проекты различной сложности и различного размера практически в любой точке земного шара: Россия, США, Германия, Великобритания, Швейцария, Китай, Ирак, Парагвай, ОАЭ, страны СНГ… Сами проекты варьируются от банковских систем до электронного маркетинга, от образования до коллекторских служб. Но наша роль в них примерно идентична, специалисты Haulmont снижают проектные риски благодаря своей экспертизе и своему опыту. Далее варианты широкие: разработка под ключ, поддержка команды разработки заказчика, code review, troubleshooting, масштабирование и пр.
Чем мы гордимся? Особой гордостью является то, что вопреки всему скептицизму многих коллег по индустрии, имеющих архаичные взгляды на ведение дел, нам удалось построить бизнес исключительно на взаимных интересах: без классической “дойки” заказчиков, без серых схем, без подковерных интриг и сговоров, без кумовства и “подмазывания”.
Позиционирование. У нас до сих пор сложности с позиционированием. Мир разделился. На low code платформы, которые за большие деньги продают топ-менеджерам люди в галстуках, обещая что разработчики больше не нужны (что, конечно, не правда). И на относительно низкоуровневые бесплатные библиотеки, используемые профессиональными разработчиками. CUBA оказалась между сторонами, предоставив, фактически бесплатно, специализированный full stack фреймворк и инструменты разработки. Рынка таких решений не было и мы его пытаемся построить. Мы верим в идею и постепенно завоевываем сторонников.
Обратно к деньгам. Классическая B2B индустрия подразумевает классические продажи: холодные звонки, встречи, долгие переговоры и пр. Одним словом нужен отдел продаж. Во сколько он обойдется? И что останется после выплаты зарплат и бонусов? Если воспринимать, что CUBA — это и есть наш инструмент продаж, то тут нет затрат в никуда, а есть только инвестиции в дальнейшее развитие сообщества пользователей платформы — а значит в свое собственное будущее.
Как мы так угадали с бизнес моделью? Никак. Так получилось, и слава Богу. Но и под лежачий камень вода не течет. Мы пробовали, экспериментировали. Что-то было удачно, что-то не очень. Но ключевым решением безусловно было поделиться своими наработками с мировым сообществом, причем без прямой цели обогащения. Всех проектов в руках не удержишь.
Руководство пользователя CUBA Studio
Введение
Данное руководство содержит справочную информацию о среде разработки CUBA Studio и её возможностях, помогающих ускорить разработку приложений на платформе.
CUBA Studio основана на платформе IntelliJ Platform с открытым исходным кодом и дополняет её функциональность следующими возможностями, специфичными для платформы CUBA:
Автоматическая генерация скриптов сборки Gradle.
Генерация модели данных, схемы БД и CRUD UI.
Визуальный WYSIWYG-дизайнер компоновки экрана.
Удобные приёмы и функции интерфейса, которые упрощают и ускоряют процесс кодирования: действия (actions), подсказки (intentions), проверки (inspections), внутренние ссылки (references).
Простые средства для интернационализации приложений.
Создание модели данных и экранов UI поверх существующей (legacy) базы данных.
Удобная миграция на более новые версии платформы и дополнений (Add-ons).
IntelliJ Platform предоставляет мощный фундамент для среды разработки CUBA Studio. Она содержит множество функций, ускоряющих производительность CUBA-разработчика, таких как удобный пользовательский интерфейс, контекстнозависимое автодополнение, безопасные рефакторинги кода, фоновые проверки корректности, встроенные средства контроля версий и интеграция с Gradle. Если вы не использовали IntelliJ IDEA раньше, то мы рекомендуем вам посетить секцию Learn & Support веб-сайта IntelliJ IDEA, чтобы ознакомиться с её основными возможностями и особенностями.
Примечания к выпускам
Добавлена возможность использовать переменные среды для хранения чувствительных параметров подключения к БД (поддерживается для CUBA 7.2.7 и позже). Эта возможность помогает избежать хранения таких параметров в системе контроля версий. Подробное описание доступно в секции Переменные среды как параметры подключения.
В дерево проекта CUBA добавлена новая секция All Sources. Она отображает все исходные файлы, расположенные в модулях проекта, без фильтрации их по типу файла. Эта секция позволяет открывать файлы или классы, которые не сгруппированы ни в одну из специализированных секций проекта (сервисы, контроллеры экрана, сущности и т.д.).
Существующие диалоги Subscribe to Event и Install Delegate были объединены в один диалог для удобства.
Функция по смене версии платформы была выделена в отдельный диалог из диалога Project Properties. Теперь там показываются ссылки на примечания к релизу для соответствующих обновлению версий платформы.
Улучшен интерфейс установки триальной и полной версий коммерческих аддонов. Теперь некоторые нестандартные случаи обрабатываются автоматически (например если артефакты коммерческих аддонов были загружены в собственный репозиторий, указанный в проекте).
Studio теперь отображает описание для стандартных действий. Описание показывается в диалоге создания действия и в диалоге-мастере создания таблицы (как подсказка при наведении мыши).
Добавлена возможность редактировать файл
/.gradle/gradle.properties прямо в IDE. Используйте пункт главного меню CUBA → Advanced → Edit Gradle properties, чтобы открыть файл с глобальными настройками Gradle на редактирование.
Версия Studio, устанавливаемая как отдельная IDE, обновлена до платформы IntelliJ Community 2020.2. Если у вас уже была установлена отдельная Studio IDE, то она не будет обновлена; вам следует скачать новую версию с сайта CUBA Platform.
Прочие небольшие улучшения и исправления:
Добавлена возможность отслеживать изменения схемы БД для дополнительных хранилищ данных (версия платформы 7.2.0 или выше). Чтобы активировать генерацию скриптов миграции БД для хранилища данных, используйте новую группу переключателей в диалоге Data Store Properties:
Доступны следующие режимы управления схемой БД:
Если в вашем проекте есть дополнительные хранилища данных с включенным управлением схемой БД, то диалог Database Scripts будет отображать скрипты миграции БД для всех управляемых хранилищ данных:
Также, диалог New CUBA Entity теперь позволяет сразу указать хранилище данных, где сущность должна быть зарегистрирована:
Добавлен визуальный дизайнер для ролей, определяемых во время разработки (версия платформы 7.2.0 или выше). Он позволяет удобным образом конструировать определения ролей, указывая настройки роли, доступные экраны и пункты меню, CRUD разрешения на сущности, доступные атрибуты и специфические разрешения.
Определения ролей в коде теперь отображаются в дереве проекта CUBA в секции Security.
Чтобы создать новое определение роли, используйте действие контекстного меню → New → Role в секции Security:
Теперь доступно визуальное редактирование проектной конфигурации специфических разрешений. Этот функционал встроен в визуальный дизайнер ролей и расположен на его вкладке Specific:
Файлы журналов локального отладочного сервера Tomcat теперь отображаются в секции Logging дерева проекта CUBA:
Скопированный файл можно свободно модифицировать. Он будет использоваться локальным отладочным сервером Tomcat. Он также будет подставляться по умолчанию как файл конфигурации журналов в диалогах WAR Settings и UberJAR Settings.
Интеграционные тесты среднего слоя и Веб-слоя теперь отображаются в дереве проекта CUBA, сгруппированные в секции Business Logic → Tests:
Добавлена возможность создавать новые классы интеграционных тестов. Чтобы создать новый класс теста, используйте контекстное меню в дереве проекта CUBA → секция Tests → New → Integration Test (Middleware) или Integration Test (Web):
Добавлена возможность кастомизировать шаблоны экранов. Чтобы создать собственный шаблон экранов, нажмите кнопку Copy template в первом шаге мастера Create CUBA Screen. Файлы выбранного шаблона будут скопированы в проект и станут доступны для изменения. Собственные шаблоны экранов отображаются в секции Generic UI → Screens → Custom Templates дерева проекта CUBA:
Вы можете изменить файлы шаблонов для контроллера и дескриптора экрана или даже добавить новые параметры в мастер, расширив файл settings.xml. Пользовательские шаблоны экранов можно выбрать на вкладке Project Templates на первом шаге мастера New → Screen:
В диалог Subscribe to Event добавлена возможность генерировать слушатели события EntityPersistingEvent:
Мастер Create CUBA Screen был расширен, туда добавлены шаги для указания представлений (view) браузера и редактора сущности. Теперь разработчик может выбрать желаемый набор свойств прямо в мастере, не открывая модальные диалоги. Выбранные свойства также определяют, какие поля будут отображаться в таблице браузера или редактироваться в форме редактора:
Панель дизайнера экранов Component Palette теперь позволяет разработчику перетаскивать (drag-and-drop) компоненты из палитры в исходный код. Выбранный компонент будет добавлен как дочерний для конечного тега.
Переключение главного меню с режима Composite на Single с целью его кастомизации было упрощено. Дизайнер меню теперь предлагает разработчику скопировать пункты и разделы меню, унаследованные из платформы и аддонов, в конфигурацию проекта.
В дизайнер сущностей были добавлены дополнительные настройки генерации DDL. Разработчик теперь может выбирать один из трех режимов генерации скриптов базы данных для конкретной сущности: Create and drop, Create only, Disabled. Также теперь возможно указать не-отображенные (unmapped) столбцы или ограничения (которые отсутствуют в модели данных, но созданы в БД, и Studio не должна предлагать удалить их).
Функция Add new attributes to existing screens, ранее доступная как IntelliJ intention action, была улучшена, и теперь ее проще использовать. Теперь она доступна в исходном коде сущности как кнопка Add attributes to screens в верхней панели действий:
Похожее действие было добавлено в дизайнер сущностей как кнопка Add to Screens над таблицей атрибутов:
Добавлена инспекция, проверяющая использования вызовов System.out.println или System.err.println в коде. Она предоставляет разработчику быстрые фиксы (доступные по нажатию Alt+Enter / Option+Enter), чтобы преобразовать вызов на использование инжектированного или статического SLF4J логгера:
Для инспекции «Entity is created by calling constructor» добавлен быстрый фикс. По нажатию Alt+Enter (Option+Enter) вы можете преобразовать конструкцию на использование рекомендуемого фабричного метода DataManager#create(Entity.class) :
Для инспекции «GUI component is created by calling constructor» добавлен быстрый фикс. По нажатию Alt+Enter (Option+Enter) вы можете преобразовать конструкцию на использование рекомендуемого фабричного метода UiComponents#create(Component.class) :
В дизайнер экранов добавлена поддержка метаданных сторонних UI компонентов. Это позволяет вам сынтегрировать сторонний UI компонент, реализованный в аддоне или в вашем проекте, в интерфейс дизайнера экранов, добавляя особые аннотации к определению компонента. Подробная информация о UI метаданных доступна в Руководстве по разработке приложений.
После входа в профиль вам станет доступным автоматическое скачивание и установка триальных версий коммерческих аддонов в окне Marketplace.
Время работы команды Generate Database Scripts было существенно оптимизировано (снижено). То же проделано с проверкой соответствия схемы БД и модели данных, проводимой перед запуском конфигурации запуска CUBA Application.
Studio теперь использует драйвер MariaDB для подключения к базам данных MySQL и MariaDB. Больше не требуется скачивать закрытый драйвер MySQL, чтобы использовать MySQL вместе со Studio. Если вам необходимо использовать именно драйвер MySQL по какой-то причине, он может быть включен, если добавить параметр disableMariaDbDriver к строке подключения.
Версия Studio, устанавливаемая как отдельная IDE, обновлена до платформы IntelliJ Community 2019.3. Если у вас уже была установлена отдельная Studio IDE, то она не будет обновлена; вам следует скачать новую версию с сайта CUBA Platform.
Реализация браузера через JxBrowser была удалена. Теперь Studio использует JavaFX для показа внутренних веб-страниц. Это помогло существенно сократить размер сборки плагина.
Прочие небольшие улучшения и исправления:
Компоновка дизайнера экранов была переработана, при этом преследовались следующие цели:
Эффективное использование пространства окна IDE.
Удобное переключение между исходным кодом XML дескриптора и панелью предварительного просмотра верстки.
Позволить опытным разработчикам использовать возможности дизайнера при просмотре и редактировании XML кода.
В дизайнере экранов проделаны следующие изменения и улучшения:
Эти панели автоматически появляются, когда вы открываете дескриптор экрана в редакторе. Когда вы переключаетесь в редакторе на другой экран, содержимое панелей обновляется. Иногда, когда вы открываете другие панели IDE (такие как Gradle, Persistence и т.д.), панели дизайнера экранов скрываются, и потом их нужно будет переоткрыть, используя соответствующие кнопки на левой и правой кромках окна IDE.
Сохранилась возможность отображения панели Component Inspector в правом нижнем углу для тех пользователей, кто предпочитает старую компоновку. Чтобы переместить эту панель на правую сторону окна, используйте кнопку Move to Right Bottom, расположенную в заголовке панели.
Панель предпросмотра верстки теперь разделяет пространство редактора с исходным кодом дескриптора экрана. Вкладки Text и Designer ушли в прошлое. Справа, на верхней панели редактора дескриптора экрана теперь расположены четыре кнопки, переключающие режим отображения предпросмотра:
Панели дизайнера активны и взаимодействуют с редактором XML кода. Опытные разработчики, которые просматривают и редактируют верстку экранов путем прямого редактирования XML кода, теперь могут воспользоваться всеми возможностями быстрой генерации кода в дизайнере экранов:
Панели дизайнера Component Hierarchy и Component Inspector следят за курсором в XML коде и выбирают соответствующий компонент, когда курсор переходит от одного тега к другому.
Вы можете добавлять компоненты из палитры в панель иерархии, переупорядочивать компоненты и редактировать свойства компонентов в панели Component Inspector, когда в редакторе открыт исходный код. Все изменения немедленно применяются к исходному коду.
Дизайнер экранов теперь отображает столбцы и действия компонентов типа Table (и DataGrid ) в дереве Component Hierarchy. Кроме того были удалены несколько модальных диалогов, которые ранее использовались для редактирования столбцов и действий. Теперь вы можете просматривать и редактировать свойства столбцов и действий, а также их обработчики событий, прямо в панели Component Inspector. Добавлять новые столбцы и действия в таблицу тоже стало удобнее. Когда в дизайнере выбрана таблица, одна из её колонок или действий, то в панели Component Inspector отображается кнопка + Add. Нажав её, можно добавить один или несколько столбцов или действий в таблицу.
В дизайнер экранов добавлены диалоги-помощники создания компонентов. Добавлять контейнеры данных, таблицы и гриды, столбцы и действия таблиц, поля форм в экраны стало проще.
В панель дизайнера Component Hierarchy добавлена возможность поиска компонента по строке:
В контекстное меню панели Component Hierarchy добавлены дополнительные конвертации. Теперь можно быстро сконвертировать компонент TextField в TextArea и другие компоненты:
Действие контекстного меню Inject to Controller, доступное в панели Component Hierarchy, теперь позволяет инжектировать несколько выбранных компонентов за раз.
Другие добавленные возможности и улучшения:
Был переработан механизм мгновенного применения изменений к отладочному серверу (Hot Deploy) для проектов, использующих версию платформы 7.2.0 или выше (для всех языков программирования), чтобы поддержать язык Kotlin. Если вы столкнетесь с какими-либо проблемами в Java / Groovy проектах, вы можете переключиться на старый режим применения изменений, выключив следующую настройку: главное меню → CUBA → Settings → Project Settings → Hot deploy compiled classes.
Расширен мастер создания CUBA проектов. Были перегруппированы поля между шагами мастера, и добавлена возможность сразу задать следующие настройки проекта: префикс названия модулей, поддерживаемые языки программирования, локали, настройки главного хранилища данных.
Добавлен новый шаблон экрана входа в систему (login) с обновленными компоновкой и дизайном. Этот шаблон доступен для проектов, основанных на версии платформы 7.2.0 или выше. Примеры, как новый экран входа выглядит, можно посмотреть здесь: Тикет GitHub. Чтобы добавить новый экран входа в ваш проект, выберите шаблон Login screen with branding image в мастере создания экранов New → Screen.
В диалог Project Properties добавлена возможность менять версию проектных артефактов сборки:
Действие Inject добавлено в верхнюю панель действий для редактора исходного кода сервисов среднего слоя и Spring бинов. Ранее оно было доступно только через меню Generate (Alt+Insert).
Добавлен удобный диалог для задания параметров подключения в окне Data Store Properties. К полю Connection params добавлена кнопка «карандаш», нажатие этой кнопки открывает диалог, позволяющий ввести параметры подключения. Studio конвертирует параметры в строку подключения, используя разделительные символы конкретной СУБД:
Диалог Locales теперь подсказывает доступные языки и страны и автоматически заполняет код локали соответственно выбранному языку и стране:
Улучшено поведение Studio для проблемных ситуаций, когда синхронизация проекта Gradle по какой-то причине завершается ошибкой. Главное меню CUBA теперь остается видимым и содержит следующие дополнительные пункты:
Пункт Re-Import Gradle Project может помочь в случае однократной проблемы недоступности сети.
Пункт Restore Project to the Latest State откатывает содержимое скриптов сборки Gradle до состояния, соответствующего последнему успешному импорту, и это позволяет исправить ситуацию в случае нечаянных или ошибочных изменений в скриптах сборки.
Версия Studio, устанавливаемая как отдельная IDE, обновлена до платформы IntelliJ Community 2019.2. Если у вас уже была установлена отдельная Studio IDE, то она не будет обновлена; вам следует скачать новую версию с сайта CUBA Platform.
Прочие небольшие улучшения и исправления:
Дизайнер экранов был переработан с использованием UI компонентов платформы IntelliJ. Новый дизайнер открывается быстрее и имеет более отзывчивый интерфейс. Для дизайнера было проделано много улучшений, некоторые из них упомянуты ниже.
Действие Preview добавлено в верхнюю панель действий дескриптора экранов. Оно открывает окно с предварительным просмотром верстки редактируемого экрана. Рабочая область экрана предпросмотра взаимодействует с редактором XML и автоматически обновляет содержимое в соответствии с изменениями верстки.
Добавлены действия Inject to controller и Go to XML в контекстное меню дерева иерархии компонентов в дизайнере экранов.
Добавлены действия CUBA Documentation в контекстное меню дерева иерархии компонентов и контекстное меню палитры компонентов. Эти действия открывают соответствующую секцию компонента в руководстве разработчика CUBA.
Добавлено автодополнение имени класса для поля class в диалогах Validator и Formatter дизайнера экрана.
Добавлена генерация кода слушателей для различных системных событий CUBA-приложения. Вызвать генерацию можно двумя способами:
Открыть существующий Spring-бин и нажать Subscribe to event на верхней панели действий редактора исходного кода.
В секции Middleware дерева проекта CUBA выполнить правый клик мыши и выбрать пункт New → Event Listener.
Добавлены опции уровня проекта, влияющие на генерацию экранов. Эти настройки используются мастером New → Screen…. Чтобы изменить настройки, откройте главное меню → CUBA → Settings → Screen Generation Settings. Доступны следующие настройки:
Добавлена возможность указать заголовок пункта меню в мастере создания экрана.
Добавлена возможность генерировать код методов-обработчиков для компонентов, у которых еще не задан id. Studio попросит пользователя ввести id компонента, когда это потребуется.
Действие Main Menu добавлено в верхнюю панель действий для редактора контроллера экрана. Оно позволяет добавить текущий экран в главное меню или перейти к настройкам уже существующего пункта меню.
Добавлены новые действия для создания новых скриптов создания и обновления БД. Эти действия доступны в дереве проекта CUBA, внутри секции Data Stores → Main Data Store:
init → контекстное меню → New → Database init script
update → контекстное меню → New → Database update script
Диалог Install Delegate, который вызывается из контроллера экрана, теперь позволяет сгенерировать делегаты: formatter, column generator и value provider для колонок таблиц.
Добавлены подсказки для атрибута icon в XML дескрипторах экранов, также добавлен предпросмотр иконки в виде gutter icon.
Всплывающее окно Quick Documentation, когда оно вызвано для UI компонентов, теперь отображает ссылку для перехода к документации CUBA:
Диалог Localized Message в редакторе сущности теперь автоматически составляет ключи сообщений для ошибок валидации Bean Validation, например «playground_Rank.queueSize.validation.Digits» или «playground_Tariff.taxType.validation.NotNull».
Добавлена поддержка опции Integrated Security для типа СУБД Microsoft SQL Server (2012+). Заметьте, что она доступна только для проектов, основанных на CUBA 7.1.0 или более поздних.
Улучшена производительность работы Studio с большими проектами (редактор сущностей, статический анализ файлов views.xml, дерево проекта CUBA).
Минимальная поддерживаемая версия IntelliJ IDEA увеличена до 2019.1. Это значит, что если вы используете более старую версию IDEA (или CUBA Studio), вы не сможете обновить у себя плагин CUBA до новых версий; вам следует обновить вашу инсталляцию IDEA (или CUBA Studio).
Небольшие улучшения и исправления:
Добавлен экран «CUBA Add-ons», позволяющий управлять аддонами, подключенными к вашему проекту. Экран можно открыть двойным кликом по Project → Add-ons в дереве проекта CUBA, или через главное меню: CUBA → Marketplace. Детальное описание экрана находится в соответствующем разделе.
Добавлен экран приветствия. Он предоставляет быстрый доступ к общим настройкам проекта и типовым действиям, содержит ссылки на страницы документации и сообщества.
Реализован интерфейс для управления сторонними библиотеками, использующимися в проекте. Элементы управления находятся в редакторе свойств проекта.
Дизайнер сущностей переработан с использованием UI компонентов платформы IntelliJ. У нового дизайнера следующие преимущества:
Более отзывчивый интерфейс, быстрее скорость открытия
Изменения свойств сущности и ее атрибутов немедленно применяются к исходному коду
Интеграция с рефакторингами IntelliJ, такими как Safe Delete атрибутов сущности
Реализован рефакторинг Safe Delete атрибутов сущности. Чтобы запустить этот рефакторинг, удалите атрибут через дизайнер сущности или выберите пункт Refactor → Safe Delete… в контекстном меню, открывающемся при правом клике мыши по определению атрибута. Этот рефакторинг находит использования атрибута в представлениях, экранах и других конфигурационных файлах. Он автоматически удаляет те использования, которые удаляются безопасно, и предупреждает о тех использованиях в коде, которые потребуют ручного исправления.
Настройки хранилищ данных были вынесены из экрана Project Properties. Теперь эти настройки отображаются и редактируются в секции Data Stores дерева проекта CUBA. Настройки основного хранилища также можно открыть через главное меню: CUBA → Main Data Store Settings. Подробное описание находится в главе Управление хранилищами данных.
Добавлена поддержка HSQLDB InMemory как дополнительного хранилища данных.
Добавлена поддержка MariaDB как основного или дополнительного хранилища данных.
Добавлена поддержка Amazon Redshift как дополнительного хранилища данных.
Действие Add attribute добавлено на панель действий в редакторе кода сущностей.
Улучшен диалог генерации кода Create CUBA EntityChangedEvent Listener. Теперь он позволяет сгенерировать несколько методов-слушателей в одном классе, также можно выбрать две дополнительные фазы события.
В дизайнер представлений добавлена функция, позволяющая переименовать уже существующеее представление (view) и заменить его использования в коде.
Действие Quick fix-а Inject ‘xxx’, который позволяет инжектировать Spring-бин по названию переменной, было расширено, и теперь он срабатывает как в коде контроллеров экранов, так и в коде Spring-бинов. Ниже представлен пример, как воспользоваться этим quick fix:
Если нажать Alt+Enter и выбрать quick fix Create message in the message bundle, то Studio откроет диалог Localization Message, чтобы можно было задать локализованные сообщения для всех локалей, настроенных в проекте.
Версия Studio, устанавливаемая как отдельная IDE, обновлена до платформы IntelliJ Community 2019.1. Если у вас уже была установлена отдельная Studio IDE, то она не будет обновлена; вам следует скачать новую версию с сайта CUBA Platform.
Плагин CUBA для IntelliJ IDEA, содержащий данный релиз Studio, загружен в основной (Stable) канал плагинов. Поэтому настраивать дополнительный репозиторий плагинов больше не требуется. Если вы использовали предыдущие версии плагина CUBA Studio, то вы можете удалить репозиторий https://plugins.jetbrains.com/plugins/haulmont/list из списка Custom Plugin Repositories. Список сторонних репозиториев настраивается здесь: File → Settings → Plugins → значок «шестеренка» → Manage Plugin Repositories.
Небольшие улучшения и исправления:
В редакторы кода сущностей, контроллеров и дескрипторов экранов добавлена панель, предоставляющая быстрый доступ к относящимся к CUBA действиям и позволяющая переходить к связанным файлам. Например, так выглядит панель в редакторе класса сущности:
Используя кнопки панели, можно быстро перейти к DDL-скриптам данной сущности, представлениям и экранам. Кроме того, можно создавать новые представления, экраны и методы обратного вызова JPA.
Действия также продублированы в контекстном меню «intentions», которое вызывается нажатием Alt+Enter (Option+Enter):
Реализована генерация кода JMX-бинов. Для ее запуска выберите в дереве проекта CUBA узел Middleware, или один из пакетов в узле Beans, и щелкните в контекстном меню пункт New > JMX Bean.
Реализована генерация кода конфигурационных интерфейсов. Для ее запуска выберите в дереве проекта CUBA узел Project > Config Interfaces и щелкните в контекстном меню пункт New > Configuration Interface.
Диалог Inject теперь содержит раздел Project Beans, который позволяет инжектировать все Spring-бины, доступные в проекте.
Диалог Inject теперь работает и в контроллерах экранов, написанных на Groovy.
Усовершенствовано поведение системы при инжектировании: если поместить курсор внутри метода и вызвать диалог Inject, то результирующее поле будет сгенерировано вверху определения класса, и имя поля будет автоматически скопировано в позицию курсора.
На XML-элементах компонентов экранов доступна подсказка (intention) Inject component into controller. Она вызывается нажатием Alt+Enter (Option+Enter) когда курсор находится на XML-элементе компонента.
Реализован визуальный дизайнер индексов и ограничений уникальности для сущностей. См. вкладку Indexes внизу редактора сущности.
Реализованы проверки (inspections) дубликатов имен сущностей и таблиц базы данных. Они отображаются как предупреждения в классе сущности, если в проекте присутствует сущность с таким же именем или таким же именем таблицы.
Реализованы подсказки (intentions) для добавления корректных JPA-аннотаций полям сущностей. Они упрощают ручное кодирование атрибутов сущностей: достаточно добавить поле в класс, сгенерировать getters/setters и затем нажать Alt+Enter (Option+Enter) на поле для генерации аннотаций.
В коде контроллера экрана выдается предупреждение, если инжектирован компонент, не объявленный в XML-дескрипторе:
В коде класса сущности выдается предупреждение, если у класса нет аннотации @NamePattern :
Проблему можно исправить, или подавить предупреждение, нажав Alt+Enter (Option+Enter) на имени класса.
Редактор представлений теперь имеет компоновку master-detail со списком представлений слева и выбранным представлением справа.
Для проектов, основанных на CUBA 7.1 и выше, реализованы следующие возможности:
Шаблоны главного экрана с side menu и responsive side menu.
Поддержка передачи свойств в экраны и фрагменты, открываемые декларативно.
Поддержка аддона REST API.
Все завершенные задачи:
BREAKING CHANGE: Studio теперь включает HSQL версии 2.4.1. При первом открытии проекта, использующего базу данных HSQL, Studio предлагает обновить версию HSQL в файле build.gradle проекта. После обновления, проект будет корректно работать в Studio версии 9+. Однако, имейте в виду следующие возможные проблемы:
Приложение не сможет стартовать, если проект с новым драйвером HSQL будет открыт в предыдущей версии Studio, содержащей старый сервер HSQL;
Если вы используете CUBA 7.0 или ниже, и вам нужно работать с HSQL и Scheduled Tasks во время разработки, вы можете заставить Studio использовать HSQL 2.2.9 следующим образом:
Скопируйте каталог cuba-studio :
на Windows из C:\Program Files\Haulmont\CUBA Studio 2018.3\plugins\ в %userprofile%\.CubaStudio2018.3\config\plugins\
на macOS из /Applications/CUBA Studio.app/Contents/plugins/ в
Запустите Studio и откройте проект.
Теперь и Studio, и ваш проект будут использовать HSQL 2.2.9, так что приложение на CUBA 7.0 или ниже сможет работать с Scheduled Tasks на базе данных HSQL.
Механизм Hot deploy теперь деплоит все зависимые классы вместе с измененным, что исключает ClassCastException при открытии измененных экранов.
При выборе базы данных MySQL или Oracle, Studio отображает диалог, из которого можно перейти по ссылке на сайт поставщика для загрузки драйвера, а затем загрузить его из локальной файловой системы в нужный каталог проекта в саму Studio. После загрузки драйвера перезапустите Studio.
Драйверы могут быть удалены из Studio с помощью страницы настроек CUBA > Database Proprietary Drivers.
В мастер Create CUBA Screen добавлены шаблоны Extend an existing screen и Entity fragment.
Действия Undo/Redo теперь корректно работают в дизайнере экранов.
Реализовано автодополнение для запросов загрузчиков данных в дизайнере экранов.
В дизайнер экранов добавлена кнопка для быстрого переключения на контроллер, см. верхний правый угол холста.
Добавлены предупреждения об использовании атрибутов invoke и datasource в экранах основанных на новом API.
Если поддержка Groovy выбрана в окне Project Properties, Groovy может быть выбран в поле Advanced > Controller language мастера Create CUBA Screen.
Сервисы, написанные на Groovy, отображаются в дереве проекта CUBA.
Добавлено оповещение о доступности новых версий платформы при открытии проекта.
Улучшены gutter icons в редакторе исходного кода.
Тип атрибута сущности может быть произвольно изменен в дизайнере сущности с запуском рефакторинга или без него.
Реализован дизайнер Enumeration.
Дизайнер представлений переписан на нативный IntelliJ UI.
Генератор модели данных теперь содержит шаблоны экранов с новым API.
Все завершенные задачи:
Первое открытие проекта теперь выполняется с помощью мастера импорта проектов. См. Открытие существующего проекта для подробной информации.
Редактор представления можно вызвать из поля view контейнера данных в дизайнере экрана.
Реализовано автодополнение и поиск ссылок для атрибута screen XML-элемента в дескрипторах экранов.
Реализован редактор локализованных сообщений для заголовков меню. Щелкните Generic UI > Web Menu в дереве проекта CUBA, переключитесь на вкладку Structure, выберите пункт меню и нажмите edit в поле Caption.
Реализовано предупреждение для значений перечислений, не имеющих локализованных заголовков. Если вы увидели предупреждение, используйте quick fix Create message in the message bundle для создания заголовка по умолчанию.
Все завершенные задачи:
Если ваш проект базируется на CUBA 6.10 и использует премиум-дополнения BPM, Charts, Full-Text Search или Reports, необходимо установить имя и пароль доступа к репозиторию в файле
Все завершенные задачи:
1. Установка
Перед установкой CUBA Studio убедитесь, что на вашей рабочей машине установлено и настроено необходимое программное обеспечение, описанное в разделе Установка и настройка основного Руководства по разработке.
CUBA Studio можно установить в двух различных формах: как отдельную IDE для вашей операционной системы, или как плагин для имеющейся IntelliJ IDEA. Отдельная IDE представляет собой специальную сборку IntelliJ IDEA Community Edition, включающую в себя плагин CUBA. Если вы ранее не использовали IntelliJ IDEA, мы рекомендуем установить Studio как отдельную IDE.
IDE имеет версию, соответствующую используемой версии IntelliJ IDEA, например 2020.2. Плагин CUBA имеет свою собственную версию, начинающуюся с 15.
Установочные файлы IDE для Windows, macOS и Linux доступны по адресу https://www.cuba-platform.ru/tools/. Плагин доступен в репозитории плагинов IntelliJ (см. ниже).
Запустите программу установки и следуйте инструкциям в появившемся окне: выберите путь к каталогу установки, тип загрузчика, имя каталога, после чего дождитесь завершения установки.
Запустите установленное приложение и см. ниже для дальнейших инструкций.
Запустите приложение CUBA Studio и см. ниже для дальнейших инструкций.
Установите необходимые зависимости:
Перенесите архив в подходящий каталог, например,
Перейдите в подкаталог bin и запустите приложение:
При первом запуске CUBA Studio IDE вам необходимо ответить на несколько вопросов:
В первом диалоге Complete Installation, выберите Do not import settings и нажмите OK.
В следующем диалоге Customize CUBA Studio, щелкните Skip Remaining and Set Defaults чтобы применить параметры по умолчанию. Вы сможете изменить их в любое время позже.
Далее см. раздел Приступая к работе для информации о том как создать новый или открыть существующий проект.
Запустите IntelliJ IDEA 2020.2 или более новую версию.
Откройте диалог Plugins.
Переключитесь на вкладку Marketplace.
Введите «CUBA» в поле поиска. Вы увидите плагин CUBA в результатах поиска.
Нажмите Install и следуйте инструкциям IDE.
1.1. Работа за прокси-сервером
Чтобы сконфигурировать CUBA Studio для доступа к интернету через прокси-сервер, вам нужно проделать следующие шаги:
Настроить IntelliJ IDEA (или CUBA Studio)
Настроить Git (необязательно)
Открыть диалог Settings: главное меню → File → Settings.
Выбрать секцию настроек Appearance & Behavior → System Settings → HTTP Proxy.
Проставить необходимые значения настроек и нажать Check connection для проверки:
При необходимости обратитесь к этой странице за дополнительной информацией.
/.gradle/gradle.properties в домашнем каталоге пользователя.
Отредактируйте этот файл и добавьте необходимые параметры, как описано в документации Gradle:
Возможно вы захотите задать настройки прокси в том числе и для инструмента контроля версий Git, например чтобы скачивать проекты-примеры из GitHub репозиториев CUBA:
Выполните эту команду:
Или обратитесь к документации Git для детального описания.
1.2. Работа без интернет подключения
Разработка проектов в Studio возможно и без интернет подключения (в оффлайне). При этом все проектные зависимости должны быть уже загружены, т.е. проект уже был открыт и собирался в данной установке Studio. Часть функционала Studio будет недоступна в оффлайн-режиме, например будет невозможно сменить версию CUBA или просматривать список аддонов в CUBA Add-ons Marketplace.
Чтобы включить оффлайн режим, откройте панель инструментов Gradle, расположенную в правой части окна IDE и нажмите кнопку Toggle Offline Mode:
В оффлайн режиме Gradle использует зависимости из кэша, когда выполняет все задачи сборки проекта. Gradle не будет пытаться обращаться к сети для разрешения зависимостей. Если обязательные зависимости отсутствуют в кэше, сборка завершится ошибкой.
1.3. Нестандартные сборки Studio
Иногда вам может потребоваться использовать одну из нестандартных сборок Studio в вашей IDE. Это может быть необходимо для того, чтобы получить ранний доступ к самым новым возможностям Studio или чтобы поучаствовать в бета-тестировании. Чтобы использовать нестандартную сборку Studio, вам нужно установить плагин определенной версии в среду разработки IntelliJ IDEA.
Нестандартные сборки Studio имеют такие же требования к наличию подписки, как и стабильные релизы.
Бета-версии Studio выпускаются за несколько недель до выхода следующего большого обновления Studio. Эти релизы проходят тестирование, но все-таки могут содержать некоторые неисправленные проблемы. Бета-релизы предназначены для следующих целей:
Предоставить заинтересованным пользователям ранний доступ к новым возможностям Studio.
Помочь команде CUBA опробовать новые версии Studio на широком диапазоне рабочих сред, установив бета-версию и предоставив команде обратный отзыв.
Чтобы попробовать возможности бета-версии, проделайте следующее:
Откройте: главное меню → File → Settings → Plugins.
Нажмите + (Add), чтобы добавить строку и введите следующий Repository URL: https://plugins.jetbrains.com/plugins/beta/list
Нажмите Update.
Перезагрузите IDE, если вам будет предложено это сделать.
Если/когда вам потребуется вернуться на стабильную версию плагина, проделайте следующее:
Откройте: главное меню → File → Settings → Plugins.
Выполните Uninstall для плагина CUBA.
Удалите «beta» репозиторий из списка.
Установите плагин CUBA снова, он скачается из стабильного канала обновлений.
Ночные сборки Studio публикуются каждую ночь в рамках процесса непрерывной интеграции. Эти сборки содержат последние изменения, выполненные командой CUBA Studio. Вы можете переключиться на ночные сборки, если хотите быть в числе первых людей, получающих самые новые возможности, улучшения и поддержку ещё не вышедших версий платформы CUBA.
Ночные сборки содержат изменения, которые еще не прошли проверку качества. Поэтому они могут содержать серьезные дефекты в функциональности.
Чтобы попробовать использовать ночную сборку, проделайте следующее:
Откройте: главное меню → File → Settings → Plugins.
Нажмите + (Add), чтобы добавить строку и введите следующий Repository URL: https://plugins.jetbrains.com/plugins/haulmont_nightly/list
Нажмите Update.
Перезагрузите IDE, если вам будет предложено это сделать.
Так как новые ночные сборки публикуются ежедневно, вы начнете получать ежедневные уведомления «plugin can be updated» от IDE.
Если/когда вам потребуется вернуться на стабильную версию плагина, проделайте следующее:
Откройте: главное меню → File → Settings → Plugins.
Выполните Uninstall для плагина CUBA.
Удалите «nightly» репозиторий из списка.
Установите плагин CUBA снова, он скачается из стабильного канала обновлений.
Любой из релизов плагина Studio, включая предыдущие версии, также может быть вручную скачан с сайта репозитория плагинов и установлен в IntelliJ IDEA. Проделайте следующие шаги:
Откройте страницу CUBA Plugin в репозитории плагинов JetBrains.
Выберите канал, из которого вам нужно скачать релиз (Stable, Beta или Nightly).
Найдите требуемую версию в списке Version History.
Нажмите Download, чтобы скачать сборку.
Откройте главное меню → File → Settings → Plugins.
Выберите загрузившийся zip файл в дереве файлов и нажмите OK.
Перезагрузите IDE, если вам будет предложено это сделать.
2. Обновление
Вы можете просто загрузить новую версию Studio IDE с веб-сайта и установить ее поверх имеющейся версии. Все настройки будут сохранены.
Вместо загрузки и инсталляции IDE целиком, можно настроить автоматическое обновление плагина CUBA из репозитория плагинов:
Откройте диалог Plugins.
Переключитесь на вкладку Updates.
Если есть доступные обновления, вы увидите их в списке. Нажмите Update для плагина CUBA, и IDE загрузит новую версию.
После завершения процесса загрузки необходимо перезапустить IDE для применения новой версии плагина.
Выберите Help > Check for Update на Windows и Linux, или IntelliJ IDEA > Check for Updates на macOS.
Если есть доступные обновления, вы увидите их в списке. Выберите плагин CUBA и нажмите Update. IDE загрузит новую версию.
После завершения процесса загрузки необходимо перезапустить IDE для применения новой версии плагина.
3. Приступая к работе
В данном разделе описано, как создавать новые и открывать существующие проекты в Studio и с чего начать работу над приложением.
3.1. Создание нового проекта
С помощью CUBA Studio легко создавать приложения на платформе с нуля. Запустите мастер New Project и выполняйте шаги, описанные ниже:
В окне Welcome to CUBA Studio выберите Create New Project, или используйте главное меню → File → New → Project.
Выберите CUBA Project.
Введите Project namespace – название пространства имен, которое будет использоваться как префикс имен сущностей и таблиц базы данных. Пространство имен может состоять только из латинских букв и цифр и должно быть как можно короче. Тщательно продумайте название на данном этапе, так как в дальнейшем изменить его будет достаточно сложно.
Измените Root package, если необходимо. Это корневой (или основной) пакет Java-классов проекта. Может быть скорректирован позже, однако ранее сгенерированные классы перемещены не будут.
Измените Module prefix, если необходимо. Это значение служит префиксом названий модулей CUBA проекта. Префикс модулей возможно изменить позже.
Вы можете принять настройки доступа к репозиториям платформы по умолчанию или изменить их для конкретного проекта.
Выберите Platform version – используемую в проекте версию платформы CUBA. Если у вас нет особых требований, выбирайте последнюю релизную версию.
Выберите значение в выпадающем списке Languages support, чтобы сменить набор языков программирования, используемых в проекте, или оставьте рекомендуемое значение Java.
Используйте поле Available locales, чтобы открыть диалог редактирования Locales и поменять набор локалей, используемых в проекте. Вы сможете изменить их позже, если потребуется.
Нажмите Next.
На втором шаге мастера вы можете установить свойства главного хранилища данных, например выбрать локальную базу данных PostgreSQL для нового проекта. Эти свойства можно изменить позже.
Нажмите Next.
Измените имя нового проекта в поле Project name, если необходимо. Имя должно содержать только латинские буквы, цифры и знак подчеркивания.
Project location – это путь к каталогу нового проекта. Путь можно изменить, введя адрес каталога вручную или нажав на кнопку с многоточием рядом с полем.
Нажмите Finish. В указанном каталоге будет создан пустой проект, и в главном окне Studio начнётся сборка проекта по скриптам Gradle и индексирование файлов проекта.
После окончания процессов синхронизации и индексации вы увидите дерево проекта CUBA в боковой панели Project.
Откройте боковую панель Gradle, которая по умолчанию находится справа. Щелкните по значку «гаечный ключ» (Gradle Settings) и выберите Project SDK в поле Gradle JVM. Нажмите OK.
Теперь можно начинать работу с проектом.
3.2. Открытие существующего проекта
Если проект ранее уже был открыт в CUBA Studio на данном компьютере, достаточно сделать следующее:
Используйте список недавних проектов; или нажмите Open, выберите папку проекта в диалоговом окне файловой системы и нажмите на кнопку Open.
Дождитесь завершения синхронизации Gradle и индексации файлов проекта. Когда откроется дерево проекта CUBA в окне инструментов Project, можно начинать работу с проектом.
Если проект ранее не был открыт в CUBA Studio на данном компьютере (например, вы только что импортировали его из VCS), необходимо сделать следующее:
В окне Welcome нажмите Import Project. Если какой-либо проект уже открыт, то выберите File > New > Project from Existing Sources в главном меню.
В окне Import Project выберите переключатель Import project from external model и пункт CUBA в списке ниже, затем нажмите Next.
На следующей странице мастера импорта просто нажмите Finish.
Дождитесь завершения синхронизации Gradle и индексации файлов проекта. В окне инструментов Project должно появиться дерево проекта CUBA.
Выберите File > Project Structure в главном меню.
CUBA Studio поддерживает работу с проектами, использующими версии платформы 6.10+ и 7.0. Вы можете открыть проект, созданный в предыдущей версии Studio, и импортировать его в новую Studio.
Имейте в виду, что CUBA 6 поддерживает только Java 8, поэтому ваша переменная JAVA_HOME должна указывать на каталог установки JDK 8. Позже, после миграции на CUBA 7, вы сможете выбрать более новый JDK, если это необходимо.
Выполните следующие шаги для первого открытия проекта, использующего CUBA 6.10:
Если ваш проект использует премиум-дополнения (Reports, BPM, etc.) и у вас есть подписка, необходимо прописать имя и пароль доступа к репозиторию в файле
/.gradle/gradle.properties как описано в документации.
Удалите старые файлы IntelliJ с помощью задачи gradlew cleanIdea в командной строке.
Импортируйте проект как описано выше в секции Первое открытие проекта.
3.3. Обновление проекта
В этом разделе описан процесс обновления проекта до более новой версии платформы.
Мы рекомендуем настроить контроль версий для проекта и всегда делать commit планируемых изменений до изменения версии платформы. Это даст вам возможность видеть изменения и откатить их на предыдущую версию в случае, если обновление по каким-либо причинам завершится неудачей.
Откройте проект, следуя инструкции в предыдущем разделе.
Выберите CUBA > Project Properties в основном меню либо дважды нажмите на Project > Properties в дереве проекта CUBA.
В открывшемся окне CUBA Project Properties кликните ссылку Change…, расположенную рядом с полем Platform version.
Появится диалог Change Platform Version. Выберите желаемую версию платформы CUBA в списке выбора версии.
SNAPSHOT-версии доступны только, если вы используете репозиторий артефактов repo.cuba-platform.com.
Нестабильные (BETA и SNAPSHOT) версии платформы категорически не рекомендуется использовать в промышленной эксплуатации.
Вы можете нажать на ссылку Release Notes и перейти к странице документации, описывающей новые возможности, улучшения и несовместимые изменения в API новой версии платформы.
Если вы обновляетесь до нового feature release (например, с 6.10.X на 7.0.X или с 7.0.Y на 7.1.Y), в диалоге Change Platform Version появится секция Migration Required.
Нажав на ссылку More info…, вы можете открыть другой диалог, содержащий информацию об изменениях, которые Studio автоматически проделает в рамках миграции над структурой проекта, скриптами сборки и отдельными файлами проекта. Ознакомьтесь с этой информацией.
Нажмите OK, чтобы подтвердить изменение версии платформы, и нажмите OK в диалоге Project Properties.
Если вы обновляетесь до нового feature release, просмотрите раздел Breaking Changes в Release Notes и при необходимости внесите соответствующие изменения в ваш проект.
Если к вашему проекту подключены CUBA аддоны, вам может потребоваться обновить их до соответствующих версий, совместимых с новой версией платформы CUBA:
Откройте дерево проекта CUBA → Project → Add-ons.
Перейдите на вкладку Updates.
Выберите все аддоны, для которых предлагается обновление.
Нажмите Apply & Close.
Подождите, пока обновленные зависимости скачаются и проиндексируются.
Попробуйте собрать проект, выполнив команду CUBA > Build Tasks > Assemble. Просмотрите журнал вывода и поправьте код, если в логах есть сообщения об ошибках компиляции.
Выполните команду CUBA > Update Database, чтобы применить возможные изменения в системных таблицах платформы к базе данных вашего проекта.
3.4. Запуск приложения
Когда Studio импортирует проект CUBA-приложения, автоматически создается Run/Debug Configuration, предназначенная для запуска локального сервера Tomcat. Поэтому для того, чтобы запустить приложение и подключиться к нему отладчиком, достаточно кликнуть на кнопку «debug» рядом с выбранной конфигурацией CUBA Application в главной панели инструментов:
Вы также можете открыть запущенное приложение в браузере, используя элемент дерева CUBA Runs At…:
Для того, чтобы увидеть вывод сервера, переключитесь на вкладку catalina.out:
Остановить сервер можно, выбрав команду Run > Stop ‘CUBA Application’ главного меню, или щелкнув по кнопке в окне инструментов Debug:
При необходимости вы можете задавать настройки отладочного сервера Tomcat, который используется конфигурацией запуска (Run/Debug configuration) CUBA Application. Диалог с настройками можно открыть следующим образом:
Кликнуть элемент CUBA Application на панели инструментов и выбрать Edit Configurations… в выпадающем меню.
Или использовать главное меню → Run → Edit Configurations…
Появится диалог Run/Debug Configuration. Вас могут заинтересовать следующие настройки:
3.5. Использование неосновной JDK
Рассмотрим следующую конфигурацию рабочей среды:
Переменная среды JAVA_HOME на рабочей машине указывает на JDK 8, и по каким-то причинам вы не можете поменять её.
Вы решили использовать JDK 11 в проекте.
Вы будете использовать новые API, появившиеся в Java 11, поэтому ваш проект должен и компилироваться и запускаться под JDK 11.
Вам нужно проделать следующие шаги:
Добавить JDK 11 в глобальный список SDK в IDEA, если она еще не добавлена. Откройте диалог через главное меню → File → Project Structure. Выберите SDKs в левом меню. Нажмите кнопку + → выберите JDK → укажите каталог, куда установлена JDK 11. Нажмите OK, чтобы сохранить изменения.
Перейдите в корневой каталог проекта и создайте там файл gradle.properties со следующим содержимым:
Обновите конфигурацию Gradle проекта: панель инструментов Gradle → Reimport All Gradle Projects;
Измените JRE, используемую конфигурацией запуска CUBA Application. Главное меню → Run → Edit configurations… → CUBA Application → Измените значение поля JVM.
После выполнения этих действий проект будет компилироваться и запускаться под JDK 11, без необходимости менять глобальные системные настройки.
4. Пользовательский интерфейс Studio
В данном разделе описываются элементы пользовательского интерфейса IDE, специфичные для платформы CUBA. Для знакомства с остальными особенностями IntelliJ IDEA рекомендуем обратиться к её документации.
4.1. Дерево проекта CUBA
Дерево проекта CUBA отображает структуру проекта и его важные элементы. По умолчанию оно открывается в окне инструментов Project в левой части IDE. Чтобы переключиться на представление в виде дерева, выполните команду CUBA > Project Tree в главном меню или выберите вариант CUBA в выпадающем списке в верхней части окна инструментов Project.
Дерево проекта содержит следующие элементы:
Project
Используйте контекстное меню, открывающееся по щелчку правой кнопки мыши на элементах дерева, чтобы выполнять действия, которые относятся к этим элементам. К примеру, используя контекстное меню элемента Data Model, вы можете генерировать скрипты создания и обновления БД, создавать новые сущности и перечисления:
4.2. Главное меню CUBA
Главное меню CUBA обеспечивает быстрый доступ к CUBA-специфичной функциональности IDE. Некоторые пункты этого меню дублируют функциональность, доступную в дереве проекта и его контекстном меню.
Наиболее часто используемые элементы меню можно добавить на панель инструментов. Для этого необходимо кликнуть на панель правой кнопкой мыши и выбрать Customize Menus and Toolbars. В диалоговом окне Menus and Toolbars разверните элемент Main Toolbar и используйте команду Add Action для добавления команд из дерева Main Menu > CUBA.
4.3. Экран приветствия
Экран приветствия открывается в рабочей среде новых проектов после их создания. Его также можно открыть через главное меню: CUBA → Welcome.
Этот экран предоставляет быстрый доступ к основным настройкам проекта, типовым действиям, страницам документации и сообщества. Здесь также отображаются версия CUBA, используемая в вашем проекте, версия Studio и сведения о коммерческой подписке.
4.4. Меню настроек CUBA Settings
При выборе элемента CUBA > Settings в главном меню откроется окно настроек IDE с выбранной секцией CUBA.
В секции CUBA содержатся общие настройки, которые распространяются на все проекты, открываемые в данной установленной Studio.
Вложенная секция Project settings содержит настройки IDE для текущего открытого проекта. Все настройки, отличные от настроек по умолчанию, сохраняются в файле studio-intellij.xml в корневом каталоге проекта. Этот файл можно добавить в систему контроля версий, чтобы поделиться настройками с другими разработчиками данного проекта.
















































































