Jmix 2.0 发布 - 企业级 Web 快速开发框架
▲Jmix2.0 发布
Jmix 2.0是产品迭代中的一个非常重要的里程碑。这个版本引入了许多重要功能,并对Jmix的版图做了重大调整。在这篇文章中,我们主要了解有哪些更新以及这些更新对使用Jmix的应用程序有什么影响。
有关完整的详细信息和升级说明,请参阅文档中的最近更新页面。
技术栈更新
Jmix 2.0中影响最大的变化是技术栈的更新。现在运行时依赖基础框架的最新版本:
-
Jmix core中Spring框架的升级:Spring Boot 3.1、Spring Framework 6.0、Spring Security 6.1
-
Flow UI子系统中的Vaadin 24.0
-
数据访问中的JPA实现采用了EclipseLink 4.0
-
BPM引擎使用了Flowable 7.0
基础框架的新版本提供了非常充足的支持期限,为Jmix框架和应用程序的稳步发展迎来了一个“恒纪元”。但另一方面,现在构建和运行应用程序至少需要JDK 17,如果使用WAR部署,则需要将Tomcat更新到10。
此外,由于经典UI中使用的Vaadin 8与新的Jakarta Servlet API和Spring 6不兼容,因此在Jmix 2.0中移除了经典UI。因此,要从Jmix 1.5经典UI升级到Jmix 2.0,需要替换UI层。有关Jmix版本迁移的更多信息,请参阅我们之前的博客文章:Jmix 延长免费支持Classic UI
新的Studio 2.0支持使用Flow UI的Jmix 1.5项目进行自动迁移。
支持 Flow UI 的扩展组件
我们已经为BPM、工作日历、Email和报表扩展组件实现了Flow UI版本,现在可以在Jmix 2.0中使用。
BPM扩展组件现在具有运行时全功能的BPMN建模器以及管理UI:
▲BPM 运行时建模器
工作日历扩展组件的新UI:
▲工作日历新UI
Email 历史记录UI:
▲电子邮件历史记录UI
报表设计器在低分辨率的屏幕中更简洁易用:
▲低分辨率报表设计器
为了在大多数情况下提供简洁的UI,报表设计器中一个带区默认只有单一数据集。但是,如果勾选 多数据集 复选框,设计器将切换到更复杂的视图:
▲多数据集报表设计器
通用过滤器组件
genericFilter
组件的功能已经完善,支持在设计时和运行时创建配置和自定义条件。运行时的配置和自定义条件可以交由最终用户管理:
▲通用过滤器
代码编辑器组件
基于Ace编辑器的新 codeEditor
组件支持用户查看和编辑带有语法高亮显示的代码。代码编辑器还有一些高级功能,如不同的颜色主题:
▲代码编辑器
与许多其他Jmix UI组件一样,可以很容易地与数据模型进行绑定,以编辑存储在实体属性中的代码。
防止浏览器标签页关闭
Web应用中有一个常见的问题,当用户意外关闭浏览器标签页时,已经输入的数据会丢失。现在,当展示实体详细信息视图时,如果用户尝试关闭浏览器标签页,浏览器会显示有关离开页面的标准确认弹窗:
▲阻止弹窗关闭
可以使用 setPreventBrowserTabClosing()
方法在任何视图中启用或禁用此行为。
快速云部署
很多时候,开发者需要为用户、管理层或同事演示开发中的应用程序。如果可以直接在本机展示,或者有CI/CD工具将代码部署到演示或测试环境,那么这不是问题。但是,如果需要为异地相关人员展示开发中的应用,那么最好的选择是将其部署到云端。
Studio现在支持通过几个简单的步骤来完成云部署,这些步骤不需要任何有关部署或云的特定认知:
-
在AWS上注册一个帐户
-
在本机安装Docker
-
完成Studio中快速云部署向导的几个步骤。
在几分钟内,应用程序将在AWS EC2服务器上启动并运行,全球用户都可以访问。
背后的原理是,Studio首先为应用程序生成 docker-compose.yaml
,通过AWS API创建EC2实例,在上面安装Docker,然后在服务器上构建应用程序镜像,并使用app和PostgreSQL数据库的容器运行 docker-compose
。数据库和文件存储的数据会映射至服务器的文件系统,确保在修改代码重新部署时能保留所有数据。
该功能在Studio中隐藏了很长时间,因为我们认为还有一些需要完善的地方,在2.0中,终于和用户见面了。
Studio UI/UX改进
Jmix工具窗口现在显示一个包含项目中定义的所有Spring bean的节点:
▲Jmix工具窗口Bean节点
还可以使用下面这个选项对bean和其他元素按包名分组:
▲按包名分组
Beans部分仅显示带有 @Component
或 @Service
注解的bean,不显示在Java配置中使用 @Bean
注解创建的bean。
Inject对话框现在显示项目classpath中定义的所有bean,包括Java配置中使用 @Bean
注解创建的bean。Other Beans部分有智能分组:
▲注入智能分组
在Jmix论坛上有一个帖子,用户抱怨Studio生成的代码会收到IDEA的警告,类似“某些东西可以有 final
修饰符”。我们认为这是一个合理的要求,Studio应该遵循IDEA环境的代码检查。因此,所有生成的代码现在都包含推荐的 final
修饰符。如果你不需要,可以修改Jmix插件的设置禁用此选项。
对Studio生成代码的另一个改进是,使用 OffsetDateTime
类型生成实体审计相关的时间字段,包括创建、修改以及软删除的时间。这样一来,数据库将保存带有时区的时间戳。
Studio中使用BPM
如果你的项目中包含 BPM 扩展组件,则Jmix工具窗口现在能展示BPM节点。该节点包含BPMN流程(Processes)、流程草稿(Process Drafts)以及DMN表格:
▲Studio中的BPM设计器
流程可以在流程和流程草稿文件夹之间互相拷贝,通过建模器窗口顶部的按钮操作即可。这样可以组织一个简单的工作流程:在草稿文件夹中定义流程,流程定义完成后可以复制到流程文件夹。位于流程文件夹中的所有流程定义都将在下次应用程序启动时自动部署。如果部署出现问题,还可以将流程复制回草稿文件夹,然后从流程文件夹删除,以便应用程序能顺利启动。
通用REST中的身份验证
在1.4版本中,我们引入了Jmix授权服务作为预览功能。在2.0中,该功能升级成为通用REST中的主要身份验证方式。这一变化有两方面的原因:一方面,旧的Jmix OAuth2模块无法在Jmix 2.0中使用,因为依赖过时的Spring Security OAuth与Spring Boot 3不兼容;另一方面,我们需要遵循最佳实践,弃用过时的OAuth密码授权流程。
如果在Jmix 2.0中使用通用REST扩展组件,则必须选择授权类型,这决定了REST客户端将如何获得访问token。Jmix授权服务支持两种类型:客户端凭证和授权码。与之前的密码授权相比,这两种方式的优势在于,客户端应用程序不可以收集或保存用户密码,这在很多合规性要求中是必要条件。
与旧的密码授权最相似且最容易实现的是客户端凭证授权。这种方式应当用于服务器与服务器之间的通信,例如与第三方系统集成。此时,Jmix授权服务需要配置客户端的角色,例如 rest-minimal
、order-management
等。要获取访问token,客户端只需在basic authentication header中传递其 client-id
和 client-secret
。使用此token的后续API调用将以用户名为 client-id
的特殊用户进行,其角色为该客户端所配置的角色列表。换句话说,客户端使用提前配置好的静态权限集,而非真正的用户。
通过授权码进行授权稍微复杂一些,但支持客户端代表真正的用户进行操作。对于这种授权类型,当客户端请求身份验证时,Jmix授权服务会显示一个登录页面,供用户输入用户名和密码。认证成功后向客户端返回一个中间授权码。客户端使用中间授权码获取访问token,之后可以使用token进行API调用。此时,客户端作为输入用户名的用户运行,但是不知道用户的密码。
结论
随着新技术栈和生产就绪的Flow UI的引入,Jmix平台完成了现代化改造,后续将稳步发展。我们的团队将继续努力实现新的功能,并不断提高产品的整体质量。
在定于2023年10月发布的下一个功能版本中,我们计划了几个重要的更新。包括为更多的扩展组件实现Flow UI,在Flow UI中添加SuggestionField和SettingsFacet,以及提升对data repository的支持。我们未来版本的详细路线图发布在GitHub。
欢迎在我们的论坛上提供反馈,并感谢所有贡献想法、建议和提出bug的你们!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
开源即时通讯应用 Tailchat v1.8.6 已发布,插件化分布式 noIM 应用
介绍 Tailchat是一款插件化易拓展的开源 IM 应用。可拓展架构赋予Tailchat无限可能性。 前端微内核架构 + 后端微服务架构 使得Tailchat能够驾驭任何定制化 / 私有化的场景 面向企业与私域用户打造,高度自由的群组管理与定制化的面板展示可以让私域主能够更好的展示自己的作品,管理用户,打造自己的品牌与圈子。 官方网站:https://tailchat.msgbyte.com/ v1.8.5 更新内容 增加了桌面端接收到消息后会闪烁提示 桌面端增加了新版本更新提示功能 桌面版缩小了图标体积,从 1600x1600 -> 512x512 修复了关于面板中国际化翻译的问题 tailchat-client-sdk增加了TailchatWsClient用于长连接场景下机器人的交互,相比于TailchatHTTPClient更加灵活 原TailchatClient更名为TailchatHTTPClient 在关于面板中增加了tushan的icon 追加了部分遗漏的离线图标 优化页面加载时间,并允许手动点击按钮刷新资源 优化了com.msgbyte.genshin的角色文本...
- 下一篇
Jmix 1.5.3 发布 - 企业级 Web 快速开发框架
Jmix Web 快速开发框架 1.5.3 发布,该补丁版本中主要包含了 Bug 修复,推荐升级: 💥 主要新功能: - 支持 Spring Boot 2.7.13 - Jmix UI 自动化测试支持JUnit5的 @Nested 注解。 - Quartz 组件中的Repeat Count与Quartz官方的行为一致。 🛠️ 主要 Bug 修复: - DataGrid中查看生成列抛异常的问题。 - 构建时不再检查Vaadin更新,提高编译速度。 - 经典UI中主从界面新建实体时,按钮的可见性问题。 - BPM中编辑实体类型流程变量出错的问题。 - FloatDataType不支持负值的问题。 - 报表模块中的一些bug。 - Flow UI中的一些bug(如果使用FlowUI,请直接使用Jmix2.0)。 详细修复的问题列表,请参考 Jmix GitHub: https://github.com/jmix-framework/jmix/issues?page=1&q=is%3Aclosed+milestone%3A1.5.3 🔑 Jmix 是一个覆盖应用程序全生命周期的 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6