4.5.3. 应用程序组件示例
在本节中,我们将展示创建应用程序组件并在项目中使用的完整示例。该组件将提供 "客户管理(Customer Management)"功能,并包括 客户(Customer)
实体和相应的 UI 界面。应用程序将使用组件中的 Customer
实体作为其 订单(Order)
实体中的引用。
- 创建客户管理组件
-
在 Studio 中创建一个新项目,并在 New project 界面上指定以下参数:
-
Project name -customers
-
Project namespace -cust
-
Root package -com.company.customers
-
编辑 Project properties,在 Advanced 标签页上将 Module prefix 设置为cust
。
-
创建至少有name
属性的Customer
实体。切换到 Instance name 标签页,并将name
添加到 Name Pattern 属性。
如果组件包含@MappedSuperclass
持久化类,请确保它们在同一个项目中有后代实体(即使用@Entity
注解)。否则,这些基类将无法被正确增强(enhanced),并无法在应用程序中使用它们。
-
生成 DB 脚本并为Customer
实体创建标准界面:cust$Customer.browse
和cust$Customer.edit
。之后,转到主菜单设计器并将application
菜单项重命名为customerManagement
。
-
单击 CUBA > Advanced 菜单中的 App Component Descriptor 链接。单击 OK 保存生成的描述。
-
测试 Customer Management 功能: CUBA > Create Database,CUBA > Start Application Server,然后在 Web 浏览器中打开http://localhost:8080/cust
。
-
通过执行 CUBA > Advanced > Install App Component 菜单命令将应用程序组件安装到本地 Maven 仓库中。- 创建 Sales 应用程序
-
在 Studio 中创建一个新项目,并在 New project 界面上指定以下参数:
-
Project name -sales
-
Project namespace -sales
-
Root package -com.company.sales
-
编辑 Project properties,并在 Repositories 部分中将本地 Maven 仓库添加到仓库列表。
-
在 App components 面板上单击 Custom components 旁边的加号按钮。在 Custom application component 对话框中,在 Registered project 下拉列表中选择customers
项目。该列表包含在 Studio 中注册的具有app-component.xml
描述的所有项目。单击对话框中的 OK。客户管理组件的 Maven 坐标将显示在自定义组件列表中。单击 OK 保存项目属性。
-
创建Order
实体并添加date
和amount
属性。然后添加customer
属性,与Customer
实体多对一关联 - Customer 在 Type 下拉列表中可用。
-
生成 DB 脚本并为Order
实体创建标准界面。在创建标准界面时,先创建一个包含customer
属性的order-with-customer
视图,并将该视图用于界面展示。
-
测试应用程序功能:CUBA > Create Database,CUBA > Start Application Server,然后在 Web 浏览器中打开http://localhost:8080/app
。该应用程序将包含两个顶级菜单项: Customer Management 和 Application 以及相应的功能。- 修改客户管理组件
假设现在必须更改组件功能(在Customer
中添加一个属性),然后重新装配应用程序以合并更改。
-
在 Studio 中打开customers
项目。
-
编辑Customer
实体并添加address
属性。保存实体时,选择浏览和编辑界面以包含新属性。
-
生成数据库脚本 - 将创建更新表的脚本。保存脚本。
-
测试组件中的更改:CUBA > Update Database,CUBA > Start Application Server,然后在 Web 浏览器中打开http://localhost:8080/cust
。
-
通过执行 CUBA > Advanced > Install App Component 菜单命令将应用程序组件重新安装到本地 Maven 仓库中。
-
关闭 Studio 中的sales
项目(如果已打开)并再次打开它。这是在 Studio 中下载新组件源代码所必须的。
-
执行 CUBA > Build Tasks > Clean,然后执行 CUBA > Build Tasks > Assemble 菜单命令。
-
执行 CUBA > Update Database - 将执行客户管理组件的更新脚本。
-
执行 CUBA > Start Application Server 并在 Web 浏览器中打开http://localhost:8080/app
- 该应用程序将包含Customer
实体和带有新属性address
的界面。