4.5.3. Пример создания и использования компонента

В данном разделе рассматривается пример создания и использования в проекте компонента приложения. Компонент будет предоставлять функциональность "Customer Management" и содержать сущность Customer и соответствующие экраны UI. Приложение будет использовать сущность Customer из компонента в качестве ссылки в собственной сущности Order.

app components sample
Создание компонента Customer Management
  1. Создайте новый проект в Studio и укажите следующие значения в окне New project:

    • Project namecustomers

    • Project namespacecust

    • Root packagecom.company.customers

  2. Откройте экран Project Properties и установите значение поля Module prefix в cust.

  3. Создайте сущность Customer с атрибутом name.

    Если компонент содержит персистентные классы, аннотированные @MappedSuperclass, убедитесь, что в этом же проекте есть их наследники, являющиеся сущностями (т.е. аннотированные @Entity). В противном случае байткод таких базовых классов не будет необходимым образом модифицирован, и они не будут правильно работать в приложениях, использующих компонент.

  4. Сгенерируйте скрипты БД и создайте стандартные экраны для сущности Customer: cust_Customer.browse и cust_Customer.edit.

  5. Перейдите в дизайнер меню и переименуйте пункт меню application-cust в customerManagement. Затем в файле messages.properties главного пакета сообщений укажите новый заголовок для пункта меню customerManagement.

  6. Сгенерируйте описатель компонента – файл app-component.xml, выбрав пункт CUBA > Advanced > App Component Descriptor в главном меню Studio.

  7. Проверьте функциональность Customer Management:

    • Выберите пункт меню CUBA > Create Database.

    • Запустите приложение: кликните на кнопку "debug" рядом с выбранной конфигурацией CUBA Application в главной панели инструментов.

    • Откройте http://localhost:8080/cust в веб-браузере.

  8. Установите компонент приложения в локальный Maven-репозиторий, выбрав пункт главного меню CUBA > Advanced > Install App Component.

Создание приложения Sales
  1. Создайте новый проект в Studio и укажите следующие значения в окне New project:

    • Project namesales

    • Project namespacesales

    • Root packagecom.company.sales

  2. Откройте экран настроек Project Properties и включите флажок Use local Maven repository.

  3. Добавьте компонент в проект как описано в разделе Установка аддона по координатам section of the Руководства пользователя Studio. Используйте Maven-координаты компонента Customer Management, например, com.company.customers:cust-global:0.1-SNAPSHOT.

  4. Создайте сущность Order с атрибутами date и amount. Добавьте атрибут customer в виде many-to-one ассоциации с сущностью Customer – она должна быть доступна в выпадающем списке Type.

  5. Сгенерируйте скрипты БД и создайте стандартные экраны для сущности Order. При создании экранов создайте представление order-with-customer-view, включающее атрибут customer, и используйте его в экранах.

  6. Проверьте функциональность приложения:

    • Выберите пункт меню CUBA > Create Database.

    • Запустите приложение: кликните на кнопку "debug" рядом с выбранной конфигурацией CUBA Application в главной панели инструментов.

    • Откройте http://localhost:8080/app в веб-браузере. Приложение должно содержать два пункта меню верхнего уровня: Customer Management и Application.

Модификация компонента Customer Management

Предположим, что необходимо изменить функциональность компонента (добавить атрибут в сущность Customer) и пересобрать приложение для внесения этих изменений.

  1. Откройте проект customers в Studio.

  2. Откройте сущность Customer на редактирование и добавьте атрибут address. Включите этот атрибут в экраны браузера и редактора.

  3. Сгенерируйте скрипты БД – будет создан новый скрипт обновления с изменением таблицы. Сохраните скрипты.

  4. Проверьте изменения в компоненте:

    • Выберите пункт меню CUBA > Update Database.

    • Запустите приложение: кликните на кнопку "debug" рядом с выбранной конфигурацией CUBA Application в главной панели инструментов.

    • Откройте http://localhost:8080/cust в веб-браузере.

  5. Переустановите компонент в локальный Maven-репозиторий, выбрав пункт меню CUBA > Advanced > Install App Component.

  6. Переключитесь в проект sales в Studio.

  7. Выберите пункт меню CUBA > Build Tasks > Clean.

  8. Выберите пункт меню CUBA > Update Database – будет выполнен скрипт обновления из компонента Customer Management.

  9. Запустите приложение: кликните на кнопку "debug" рядом с выбранной конфигурацией CUBA Application в главной панели инструментов.

  10. Откройте http://localhost:8080/app в веб-браузере – приложение теперь содержит сущность Customer и соответствующие экраны с атрибутом address.