发行说明
版本 13
界面设计器的布局重新排布了,主要为了以下目的:
高效的使用 IDE 窗口的空间。
便于在 XML 描述源码和布局预览之间切换。
允许熟练的开发者在查看和编辑 XML 代码时使用设计器的功能。
对界面设计器做了如下变更和改进:
界面设计器的面板修改为独立的 IDE 工具窗口。Component Hierarchy 展示在 IDE 的右上角,与之前一样。Component Palette 展示在 IDE 的右下角。Component Inspector 展示在 IDE 的左下角并包含属性和处理器标签页。
当在编辑器打开界面描述时,这些工具窗口会自动打开。当在编辑器切换界面描述文件时,工具窗口的内容会随之改变。有时当您打开其他的 IDE 工具窗口(比如 Gradle、Persistence 等),设计器的面板会被隐藏,可以通过点击位于左右的 IDE 工具窗口按钮重新打开。
保留在左下角展示 Component Inspector 是为了满足熟悉之前布局的开发者们。如果需要将该面板移至右侧,点击面板标题的 Move to Right Bottom 即可。
布局预览面板现在与界面描述的源码编辑面板共享编辑器的空间。去掉了原来的 Text 和 Designer 标签组。现在在界面描述的右上部添加了四个按钮用于切换界面预览模式:
Editor only - 在编辑器只显示源码。
Editor and Preview - 编辑器空间分割,包含源码和预览。
Preview only - 只显示预览(与之前版本的界面设计器布局类似)。
Preview in Window - 源码在编辑器展示,但是预览通过单独的窗口展示,可以将预览窗口移至其他显示设备。
当编辑 XML 代码时会激活设计器面板,面板会与编辑器同步交互。熟练开发者们通过编辑 XML 源码切换和修改界面描述,他们现在也能获得界面设计器的编辑功能帮助:
当编辑器的光标从一个 XML 标签移至另一个标签时,会在 Component Hierarchy 和 Component Inspector 面板自动选中对应的组件。
在层级面板点击元素会将源码编辑器的光标移至对应的 XML 标签。
可以从工具箱拖拽新组件至层级树,当编辑器只显示源码时,也可以在左下角的探查面板修改组件的排序和编辑组件属性。源码会直接同步所有改动。
界面编辑器现在能在 Component Hierarchy 树中展示表格(或数据网格)的列。作为这个改动的一部分,删除了之前的几个用来编辑列和操作的弹窗。现在可以在 Component Inspector 面板直接查看和编辑列、操作属性以及事件处理器。添加新的列或者操作也变得更加容易了。当选中一个表格、表格的一列或者操作, Component Inspector 会显示 + Add 按钮。点击该按钮可以添加列或者操作。
界面设计器还添加了组件创建向导对话框。添加数据容器、表格、网格、表格的列、表格操作以及表单的字段组件变得更加容易了。
当为界面添加上面提及的任何一个组件时,会弹出一个对话框用来指定最重要的组件属性。比如,当为界面添加数据网格时,可以选择已有的数据容器或者创建新的数据容器,能设置组件 id 并且为网格选择一组标准操作和按钮。
界面设计器的 Component Hierarchy 面板添加了可以铜鼓输入文字查找组件的功能:
Component Hierarchy 面板的右键菜单也添加了额外的转换功能。现在可以快速的将
TextField
组件转换为TextArea
或者其他组件:Component Hierarchy 面板右键菜单的 Inject to Controller 操作现在支持可以同时注入多个选中的组件。
其他功能和改进:
添加了对 Kotlin 编程语言的支持。在项目创建向导中,如果选择的平台版本为
7.2.0
或更新版本,则可以选择 Kotlin 为项目的编程语言。CUBA 项目的所有元素:实体、界面、服务都可以用 Kotlin 生成。Studio 的可视化设计器、智能自动补全、自动检查以及热部署也都支持 Kotlin。对于使用平台
7.2.0
或更新版本的项目,对 Hot Deploy 机制做了重写(支持所有语言),主要是为了支持 Kotlin。如果在 Java、Groovy 项目中遇到了热部署的问题,可以切换至之前的机制,通过关闭这个设置:CUBA → Settings → Project Settings → Hot deploy compiled classes。扩展了 CUBA 项目创建向导。在几个步骤之间重新安排了各个字段,并且添加了新的字段:模块前缀、支持的语言、地区、主数据存储属性。
CUBA Application 运行配置添加了两个额外的配置:Command line arguments - 命令行参数 和 Environment Variables - 环境变量。这些设置会在 Tomcat 运行调试模式 CUBA 应用程序的时候生效。比如,通过设置命令行参数,可以配置非默认时区:
-Duser.timezone=Europe/London
或者增加内存:-Xmx1500m
。为登录界面设计了新模板,新的布局和设计可以在基于 CUBA
7.2.0
或最新的版本的项目中使用。新的登录界面样式可以查看 GitHub 了解。如需在项目中添加新的登录窗口,可以在 New → Screen 向导中选择 Login screen with branding image 模板。在 Project Properties 对话框中添加了修改项目工件版本的功能:
在服务和 Spring bean 源码的编辑器顶部操作面板中添加了 Inject 操作。之前只能在通用菜单(Alt+Insert)使用。
在 Data Store Properties 窗口添加了方便配置数据库连接的对话框。为 Connection params 字段添加了一个 “铅笔” 按钮,点击这个按钮,会弹出一个窗口用于配置连接参数。Studio 会考虑数据库特定的分隔符将参数转换为连接字符串:
Locales 对话框现在能根据可用的语言给出提示并根据选择的语言自动填充地区代码:
扩展了 Attribute is not included into the view - 属性未包含在视图中 的代码检查。现在还会检查关联了持久化属性的非持久化属性,这种关联是通过
@MetaProperty#related
注解参数指定的。改进了 Studio 处理 Gradle 项目同步失败的行为。现在 CUBA 主菜单会一直显示,并包含附加的菜单项:
Re-Import Gradle Project 菜单项,可以用来处理一次性的网络访问故障。
Restore Project to the Latest State 菜单项,能将 Gradle 构建脚本恢复到上次成功导入的状态,这可以放置无意的或者错误的脚本修改。
独立版 Studio IDE 升级到 IntelliJ Community Edition 2019.2。 之前下载的独立版 Studio IDE 不会自动升级,需要从 CUBA Platform 网站下载新的版本。
很多其他的小改进和问题修复:
版本 12
使用原生 IntelliJ UI 组件重新实现了界面设计器。新的设计器响应更快,打开也更快。 设计器有了很多改进,下面会提到一些。
为设计器添加了一个新的 Handlers 标签页,放置在 Palette 和 Properies 标签页旁边。 展示已有的方法以及所有可以使用的事件监听器和选中组件的代理方法。 如要生成处理方法,只需双击相应的条目即可。
在界面设计器的顶部操作面板添加了 Preview 操作。 能打开一个正在编辑的界面的预览窗口。该预览窗口的画布能跟踪 XML 编辑的改动,按照其布局变化自动更新预览界面。
在界面设计器的层级树的右键菜单中,添加了 Inject to controller 和 Go to XML 操作。
在层级树和组件工具箱的右键菜单中添加了 CUBA Documentation 操作。这些操作能打开 CUBA 开发者手册中相应的组件章节。
Form 组件的 Properties 标签页添加了 Add Column 按钮。
在 Validator 和 Formatter 界面设计器对话框中,添加了 class 字段类名的自动完成功能。
添加了各种应用程序事件监听器的脚手架代码功能。可以通过两种方式使用:
打开已有的 Spring Bean,在源码编辑器顶部的操作面板中点击 Subscribe to event
右键点击 CUBA 项目树的 Middleware,选择 New → Event Listener。
添加了项目级别的界面生成选项支持。这些设置会被用在 New → Screen… 界面向导中。 如要修改这些设置,可以打开主菜单的 CUBA → Settings → Screen Generation Settings 进行修改。 目前支持下列界面设置:
表单组件的字段宽度(默认 450px),在实体编辑界面使用
编辑器的操作按钮在界面底部,在 “全屏” 模式(非对话框模式)打开的实体编辑器中使用
强制以模态窗打开编辑界面,以对话框模式打开的实体编辑器使用
在界面创建向导中可以设置该界面的菜单项名称。
可以为没有 id 的组件添加处理器脚手架代码。Studio 会在需要的时候要求开发者输入组件 id。
为界面控制器的操作面板添加了 Main Menu 操作。该操作可以将当前界面添加至主菜单或者配置导航至主菜单。
优化了 CUBA 项目树中 Deployment 部分的构建 WAR 和 UberJAR 的 UI。如果启用了相应的构建配置,现在只需通过双击 Build WAR 或 Build UberJAR 条目直接构建 WAR 或 UberJar。并且在项目树的 WAR/UberJAR Settings 元素旁边显示相应工件的配置文件(
single-war-web.xml
,logback.xml
,jetty-env.xml
等),方便访问。添加了能创建新的数据库创建、更新脚本的操作。在 CUBA 项目树的 Data Stores → Main Data Store 右键菜单中:
初始化脚本: New → Database init script
更新脚本: New → Database update script
在从界面控制器调用的 Install Delegate 对话框中,现在可以为表格的列生成 formatter、自定义列生成器或者 value provider。
为界面 XML 描述中的 icon 属性添加了自动提示,并在侧边糙提供图标预览。
为
LookupField
组件的 XML 属性 optionsEnum 添加自动提示。UI 组件的 Quick Documentation 弹窗现在提供了至 CUBA 文档的链接:
实体设计器中的本地化语言对话框现在能为 Bean 验证自动生成消息键值,比如 “playground_Rank.queueSize.validation.Digits” 或 “playground_Tariff.taxType.validation.NotNull”。
为 Microsoft SQL Server (2012+) 数据库类型添加了 Integrated Security 选项的支持。注意,只对基于 CUBA 7.1.0+ 的项目有效。
大型项目的性能进一步提升(数据模型设计,view.xml 静态分析,CUBA 项目树)
最低支持的 IntelliJ IDEA 版本提升到了 2019.1。意味着如果您使用更早版本的 IDEA(或者 CUBA Studio),将无法升级 CUBA 插件至新版本。
很多其他的小改进和问题修复:
版本 11
添加了 “CUBA Add-ons” 界面,可以通过该界面管理项目中的扩展插件。 可以在 CUBA 项目树双击 Project → Add-ons 或者从主菜单的 CUBA → Marketplace… 打开该界面。 关于该界面的详细描述请参阅此章节。
添加了 欢迎界面。简化了访问通用项目设置和操作的流程,并带有文档和社区网页的链接。
添加了管理第三方依赖库的 UI。在 Project Properties Editor 可以使用。
实体设计器已经使用 IntelliJ UI 组件进行了重构。新设计器有如下好处:
更好的响应体验,打开速度更快
对实体和其属性的改动会立即反馈到源代码
集成了 IntelliJ 智能重构技术,比如 安全删除 实体属性
实施了实体属性的 安全删除 重构技术。 如要开始重构,从实体设计器删除属性或在源码中右键点击该属性选择 Refactor → Safe Delete…。该重构动作会在视图、界面和其他的配置文件里面搜索此属性的使用情况。并能自动删除安全的地方,对需要手动修复的地方给出警告。
数据存储配置已经从 Project Properties 界面移出。现在数据存储配置可以在 CUBA 项目树的 Data Stores 部分查看和编辑。主数据存储的设置可以从主菜单 CUBA → Main Data Store Settings… 打开。请参考 管理数据存储 章节了解细节。
能使用 HSQLDB InMemory 作为附加数据存储。
支持使用 MariaDB 作为主或附加数据存储。
支持使用 Amazon Redshift 作为附加数据存储。
在实体源码编辑器的操作面板添加了 Add attribute。
支持
EntityChangedEvent
监听的操作也添加到了实体源码编辑器的操作面板。可以用来创建新的监听器或者导航至已经存在的监听器方法。添加了 创建 CUBA EntityChangedEvent 监听器 脚手架代码的对话框。现在可以在一个类里面创建多个监听方法并选择两个额外的事件。
在实体设计器中支持更多的 BeanValidation 2.0 注解:
@NotEmpty
、@Positive
、@PastOrPresent
以及其它。当为实体添加属性时,实体设计器能自动识别属性名称是否能作为实体名称显示(
name
、caption
、title
等),如果此时还未有实体名称的话,会自动生成 @NamePattern 注解 。视图设计器现在可以为已经存在视图更名,并对使用该视图的地方进行名称替换。
IDEA 的 Inject ‘xxx’ 快速修复提示现在可以根据变量名注入 bean - 扩展了其实现,可用于界面控制器和 Spring bean 的上下文中。使用该快速提示的方法示例:
要使用该功能,在 Spring bean 或者 CUBA 界面控制器中输入需要注入的 bean 的变量名。然后按下 Alt+Enter,在提示框选择 Inject ‘beanName’。bean 的类名根据变量名自动关联,所以变量名必须跟 bean 接口的名称一致。比如:
dataManager
、fileStorageService
、messageBundle
和clusterManagerAPI
,这些变量名会被识别并成功注入对应的 CUBA bean。添加了 Java 代码检查器,检查使用
getMessage
和formatMessage
方法指定的本地化字符串是否存在。MessageBundle
、Messages
和AbstractWindow
(旧界面)类的getMessage
和formatMessage
会使用该检查。如果指定键值的消息在指定的消息包中不存在,消息键值会高亮为红色。如果按下 Alt+Enter 并选择 Create message in the message bundle 进行快速修复,Studio 会打开 Localization Message 对话框,用来为所有配置的项目 locale 输入本地化消息。
Studio 中独立的 IDE 版本已经升级至 IntelliJ Community platform 2019.1。之前下载的独立版本不会自动升级,您需要从 CUBA Platform 网站重新下载。
包含该版本的 IntelliJ IDEA 的 CUBA 插件已经上传至主插件(稳定)频道。所以不需要单独设置额外的插件仓库了。如果您使用的是之前版本的 CUBA Studio 插件,现在可以从 Custom Plugin Repositories - 自定义插件仓库 列表中移除 https://plugins.jetbrains.com/plugins/haulmont/list 了。 自定义仓库列表在这里:File → Settings → Plugins → “gear” icon → Manage Plugin Repositories
其它很多小的改进和缺陷修复:
版本 10
实体、界面控制器和界面描述的代码编辑器顶部现在提供了一个工具栏,通过这个工具栏可以快速访问 CUBA 提供的操作、在相关文件之间快速跳转:
通过面板的按钮可以很快的切换到相关的 DDL 脚本、视图和界面。另外,还可以创建新视图、新界面以及JPA生命周期回调方法。
这些操作在 IDEA 的 “intentions” 菜单也同样提供了,这个菜单可以通过快捷键 Alt+Enter (Option+Enter) 调出:
实现了为
EntityChangedEvent
监听器创建脚手架代码的功能。在 CUBA 项目树选择一个实体类、包、或者最外层的 Middleware 节点,然后点击右键菜单中的 New > EntityChangedEvent Listener。Studio 会在core
模块创建 Spring bean,带有两个监听器方法:分别在事务提交前和后收到通知。实现了为 JMX bean 创建脚手架代码的功能。在 CUBA 项目树选择 Middleware 节点或者 Beans 节点下的一个包,然后点击右键菜单的 New > JMX Bean。
实现了为配置接口生成脚手架代码的功能。在 CUBA 项目树选择 Project > Config Interfaces 节点,然后点击右键菜单的 New > Configuration Interface。
Inject 对话框现在包含了 Project bean 的选择区域,这里可以注入任何项目中可用的 Spring bean。
使用 Groovy 编写的界面控制器也能使用 Inject 对话框了。
提升了依赖注入的体验:现在如果将光标放在方法体内并调出 Inject 弹窗,注入的字段定义会自动生成在类的顶部,而字段名会自动复制到光标处。
将组件注入控制器 的行为现在也能在组件的 XML 内做了。试试将光标放在XML中一个组件的元素上,然后按下快捷键 Alt+Enter (Option+Enter)。
实现了添加实体索引和唯一约束的可视化编辑器。可以在实体编辑界面的底部找到新的 Indexes 标签页。
实现了检查重复实体名称和表名的功能。如果为多个类定义了相同的实体名或者表名,则会在实体类显示提示。
实现了在实体的字段添加正确 JPA 注解的功能。简化了手动编写实体属性的工作:您在可以添加实体字段并生成 getters/setters 之后在该字段按下 Alt+Enter (Option+Enter),即可看到相关选项。
在界面控制器代码中,如果注入了界面 XML 中不存在的组件,则会显示提示信息:
在实体类代码里,如果实体类没有
@NamePattern
注解的话,也会显示警告信息:可以在类名处通过按下 Alt+Enter (Option+Enter) 快捷键修复问题或者屏蔽这个警告。
视图设计器现在使用了主从布局,视图列表在左边,选中的视图编辑在右边。
对基于 CUBA 7.1 以上版本的项目,添加了如下功能:
能使用带侧边菜单和响应式侧边菜单的主界面模板。
支持向声明式打开的界面和 fragments 传递属性参数。
支持 REST API 扩展组件。
所有解决的问题:
版本 9
破坏性更改:Studio 现在使用 HSQL 2.4.1。当打开一个使用 HSQL 数据库的项目时,Studio 会提示升级项目文件
build.gradle
中的 HSQL 版本。如果同意,项目可以正确的用 Studio v.9+ 继续工作。但是,要注意以下问题:带有新 HSQL 驱动的应用程序如果在带有旧 HSQL 驱动的之前版本 Studio 打开的话,有可能启动不了。
基于 CUBA 7.1 之前的使用 HSQL 的项目,计划任务会失效,因为之前版本的数据库表有一列叫
PERIOD
,现在在 HSQL 2.4.1 中已经是保留字了。在 CUBA 7.1 里面重命名了该列。Tip如果您使用的是 CUBA 7.0 或者更低的版本,而且在开发阶段需要使用 HSQL 和计划任务,可以按照下面的步骤在 Studio 使用 HSQL 2.2.9:
退出 Studio。
复制
cuba-studio
目录:Windows 系统:从
C:\Program Files\Haulmont\CUBA Studio 2018.3\plugins\
复制到%userprofile%.CubaStudio2018.3\config\plugins\
MacOS 系统:从
/Applications/CUBA Studio.app/Contents/plugins/
复制到~/Library/Application Support/CubaStudio2018.3/
在拷贝的
cuba-studio/lib
目录中,使用hsqldb-2.2.9.jar
替换hsqldb-2.4.1.jar
。可以在 这里 下载。启动 Studio 并打开项目。
在
build.gradle
中使用def hsql = ‘org.hsqldb:hsqldb:2.2.9’
替换def hsql = ‘org.hsqldb:hsqldb:2.4.1’
。
至此,Studio 和项目都会使用 HSQL 2.2.9,基于 CUBA 7.0 和更低版本的应用程序便能在 HSQL 使用计划任务了。
热部署机制现在能同时部署更改的类依赖的所有类,这样不会在打开修改了的界面时弹出
ClassCastException
。当选择 MySQL 或者 Oracle 数据库时,Studio 会展示一个对话框,这里可以点击链接到供应商网站下载 JDBC 驱动,然后可以上传驱动至项目和 Studio。上传驱动结束后,需要重启 Studio。
可以使用 CUBA > Database Proprietary Drivers 配置页移除上传的驱动。
在 Create CUBA Screen 向导中可以在浏览界面和主从界面模板的 Table type 字段选择
DataGrid
和TreeDataGrid
。在 Create CUBA Screen 向导 添加了 Extend an existing screen 和 Entity fragment 模板。
在可视化编辑器中 Undo/Redo 操作能正常工作。
在界面设计器中,数据加载器的查询语句添加了自动完成功能。
界面设计器在画布右上角添加了一个按钮,用来切换至界面控制器。
在基于新 API 的界面 XML 描述中使用
invoke
和datasource
属性时,会给出警告。如果在 Project Properties 窗口添加了 Groovy 支持,则可以在 Create CUBA Screen 向导中的 Advanced > Controller language 字段选择 Groovy。
Groovy 写的 Services 能在 CUBA 项目树中显示。
项目打开时会弹出有框架新版本的提示。
微调了代码编辑器中侧边栏的图标。
不管有没有重构,都可以在实体设计界面自由更改实体属性的类型。
添加了枚举类型设计界面。
视图设计器使用原生 IntelliJ UI 重写。
数据模型生成器包含使用新 API 的界面模板。
所有解决了的问题:
版本 8
现在第一次打开项目是通过导入向导来做了。参阅打开现有项目了解细节。
项目模型现在保存在
.idea
文件夹的一个文件内,所以不会每次在打开项目时进行 Gradle 同步。通过 Run/Debug Configuration 编辑器现在可以选择运行应用程序服务的 JDK 版本。在 Configuration 标签页有 JVM 字段。默认使用
JAVA_HOME
环境变量的值。可以通过标准的 Refactor > Rename 操作来对视图进行重命名。在 CUBA 项目树中可以在视图元素上调用这个操作,也可以在
views.xml
文件的视图 XML 定义中的name
属性调用这个操作或者在界面 XML 描述中任何引用该视图的地方调用。可以在界面设计器中数据容器的 view 字段调用视图编辑器。
实现了在界面描述的
<fragment>
XML 元素中对screen
属性的自动完成功能以及使用参考功能。为菜单标题实现了本地化名称编辑器。在 CUBA 项目树中点击 Generic UI > Web Menu,切换到 Structure 标签页,选择一个菜单项然后在 Caption 字段点击 edit 即可。
如果枚举值没有本地化名称,编辑器则会出现警告。如果发现该警告,可以使用 Create message in the message bundle 快速修复来创建默认名称。
实现了在配置接口中声明应用程序属性时,能自动完成其名称。当定义
app.properties
或web-app.properties
内的属性时,按下 Ctrl+Space 即可。所有解决了的问题:
版本 7
如果你的项目基于 CUBA 6.10 ,并使用了 BPM 、图表 、全文搜索或报表等高级扩展组件,则需要在
~/.gradle/gradle.properties
文件中设置 premium 仓库的访问凭据,如 开发人员手册所述。 Studio不会将凭据传递给Gradle。所有解决了的问题: