cuba.platform_CUBA Platform 6.3的新增功能

cuba.platform

我们很自豪地宣布新版本的CUBA平台和Studio全面上市!
也许这是有史以来功能最丰富的平台版本之一–在各个级别上都有重要的变化:体系结构,可扩展性,API可用性和性能。

本文介绍了该平台的主要增强功能。 发行说明中提供了完整的更改列表:
Platform 6.3发行说明
Studio 6.3发行说明

应用组件

如您所知,平台始终具有功能分解的机制:一方面,平台本身被拆分为核心和附加组件,另一方面,具有创建扩展项目的能力。 扩展机制受到限制,因为它只能在垂直方向上工作–您可以为一个基础项目创建许多扩展,但不能创建类似于CUBA Reporting或BPM的加载项与其他加载项组合在最终应用程序中使用,并在其他项目中重复使用。

现在,通过引入应用程序组件的概念解决了该问题。 使用应用程序组件,您可以将大型应用程序分解为一组功能模块,并将它们开发为单独的项目。 此外,这些模块可以重复使用–您可以将它们包含在不同的应用程序中,就像使用CUBA高级附加组件一样。

例如,在出租车管理应用程序中,组件的结构可以如下:

应用组件

在这里,CUBA,报告和全文搜索是平台提供的组件。 信用卡付款和定价是可重用的组件,可在不同的应用程序中使用; 驱动程序工资包含仅提供给某些客户的可选功能。 这种可选的依赖性意味着您不仅可以在开发中,而且可以在部署阶段将应用程序组件包含在应用程序中。

实际上,一个应用程序组件(或应用程序组件)只是一个公开一些有关其自身信息的应用程序。 有关模块,配置属性和组件工件的信息包含在一个特殊文件中:app-component.xml; 特殊的JAR清单条目用于自动发现类路径中的组件。 应用程序组件也可以看作是全栈库:它们提供所有级别的功能,包括实体,数据库DDL脚本,中间件服务,UI屏幕甚至CSS主题。

如果要使其成为组件,Studio会为当前项目自动生成app-component.xml。 只需使用“项目属性”选项卡上的链接。 为了在应用程序中使用组件,请编辑项目属性,然后将该组件添加到“自定义组件”列表中。

您可以在文档中看到创建和使用应用程序组件的示例。

支持多个数据存储

到目前为止,平台机制只能与为应用程序选择的单个数据库一起使用。 您可以直接通过JDBC或其他连接使用其他数据源,但是它太复杂了,无法在标准UI组件中显示和编辑此类“外部”数据。

CUBA 6.3中实现的数据存储概念旨在解决使用相同的标准平台机制(例如,可感知数据的可视组件)在单个应用程序中处理来自不同来源的数据的问题。 数据存储实际上是具有几种用于加载和保存实体的方法的接口。 该平台当前包含此接口的一种实现,允许通过ORM层使用关系数据库。 您可以在项目中创建自己的数据存储实现,例如,与NoSQL数据库,内存网格或与其他应用程序集成。

当您在应用程序中使用多个数据存储时,其数据模型将包含映射到来自不同位置的数据的实体。 如果数据存储是RDBMS,则实体将被注释为JPA持久类。 否则,实体将是非持久性的,自定义数据存储实现负责将实体映射到数据。 一个应用程序将始终具有一个连接到RDMS的“主”数据存储区,以存储诸如用户,角色,过滤器等平台实体。应用程序实体可以分散在任意数量的不同存储区中。

例如,下图表示应用程序的数据存储结构,该应用程序在数据库级别与ERP系统集成在一起,使用MongoDB作为文档存储,并使用REST API连接到远程信息系统。 CUBA的本机零件以绿色显示,自定义零件以黄色显示。

资料储存库

混合数据模型和定制数据存储为创建微服务(或更具体地说, 自包含系统 )开辟了道路。 假设您有一个Sales应用程序,其中包含用于管理客户和产品的功能。 您可以将应用程序分为三个独立的项目:Sales,Customers和Products,每个项目都有自己的数据库和UI。 在“销售”应用程序中,您将创建两个其他数据存储库以与其他应用程序集成。 在最简单的情况下,数据存储区可以是内置的RdbmsStore,因此Sales应用程序将仅连接到其他数据库。 为了实现更宽松的耦合,您可以使用REST API创建自定义数据存储,并将远程数据映射到Sales数据模型的非持久实体。 因此,您将拥有三个相对较小的独立应用程序:客户和产品可以独立工作,销售包含基于标准CUBA机制但使用远程系统数据的业务逻辑和UI。

现在,来自不同数据存储的实体不能具有直接关系。 这意味着,如果您要创建来自不同商店的实体的引用,则必须为“外国”实体的ID创建一个持久属性,为该实体本身创建一个非持久属性,并处理其加载和保存以编程方式。 在将来的平台版本中,我们将提供在应用程序级别上链接实体的简单声明方式。

使用Studio,您可以在“项目属性”页面的“高级”选项卡上快速配置其他数据存储(RDBMS或自定义)。

有关数据存储配置的详细信息,请参见文档 。

基础实体类

我们重构了实体的基类 ,以使它们更加轻巧。 现在,最小实体只能具有一个必需的系统属性-id,并且可以将其映射到几乎任何数据库类型,包括IDENTITY。 此外,还支持复合键。

这意味着现在您可以为几乎所有现有数据库创建CUBA实体,而无需修改其架构。 因此,例如,您的新CUBA应用程序可以与旧版数据库以及旧版系统同时使用。 它还允许您通过将第三方系统的数据库连接为其他数据存储来与它们集成。

单点登录

CUBA应用程序的单点登录(SSO)允许用户通过在浏览器会话中输入一次登录名和密码来登录到多个正在运行的应用程序。 在使用多个系统时,此功能对于无缝的用户体验至关重要。 当不使用LDAP集成时,它还可以帮助管理员在一处管理用户密码。
由于任何CUBA应用程序都可以是身份提供者(IDP),它是SSO基础结构的核心元素,因此CUBA SSO只需很少的设置即可。 所有配置都可以在部署阶段完成,因此在开发应用程序时不必担心。

so

该图显示了具有两个应用程序的SSO系统。 应用程序1同时是身份提供者和服务提供者(即只是提供某些功能的应用程序)。 它包含一个特殊的登录表单,显示给SSO系统的所有用户。 App 2是一个服务提供商,它将用户重定向到App 1 IDP进行登录。 用户密码仅由IDP检查,但用户角色和权限是完全分开的。

请参阅文档中有关单点登录的更多信息。

匿名用法

现在,您无需登录即可创建具有UI屏幕的应用程序。 该平台包含一个预定义的“匿名”用户,因此代表该用户执行登录之前运行的所有应用程序代码。 默认情况下,匿名用户具有所有权限,因此在允许匿名访问之前,请不要忘记创建仅具有必需权限的角色。

工作原理:应用程序中有两个顶级窗口:登录窗口和主窗口。 前者适用于匿名用户,后者适用于经过身份验证的用户。 默认情况下,登录窗口仅包含登录表单,但是您可以向其中添加任何可视组件和数据源,甚至可以添加主窗口元素(例如用于打开其他屏幕的WorkArea)。 为了创建您自己的匿名访问登录窗口,请转到Studio中的“屏幕”部分,然后单击“创建登录窗口”。

新的REST API

平台中已包含很长时间的通用REST API的第一个版本并不是完全RESTful的-它实际上是一个Web API,可通过HTTP提供CRUD和查询执行。 在平台版本6.3中,我们引入了一个全新的REST API v2 ,该API符合REST的体系结构样式:URI和HTTP动词的使用,OAuth2身份验证。 与改进的JSON序列化一起,新的REST API大大简化了Web和移动客户端应用程序的创建。

除了使用实体进行CRUD操作之外,REST API v2还允许您执行预定义的JPQL查询并调用服务方法。 方法必须由开发人员明确允许,并且可以接受和返回简单类型,实体和POJO以及这些类型的集合。 这种灵活的服务处理方式使您不必创建仅用于将Java类型转换为JSON的Spring MVC控制器-这种转换通常可以自动完成。 因此,您只需在中间件上创建常规服务,然后在rest-services.xml中注册公开的方法。 之后,您可以从客户端传递参数并以JSON接收结果来调用这些服务方法。

新的REST API还提供了用于获取当前用户详细信息和权限,有关应用程序数据模型的信息以及有关REST API本身的机器可读文档的端点。

屏幕代理

在新的平台版本中,有一种机制可让您将UI屏幕调整为适用于不同的设备:台式机,平板电脑,电话。 您只需为每个受支持的设备创建多个版本的屏幕布局,并为其指定相同的ID,但使用不同的屏幕代理值。 然后在运行时,平台将根据用户从中访问应用程序的当前设备选择适当的屏幕版本。

这种简单的方法并不是真正的响应方式,因为例如,当用户更改设备方向时,屏幕将不会转换。 如果您不介意通过媒体查询编写CSS,请使用CssLayout容器获取完全响应的屏幕。

查询缓存

毫无疑问,使用数据库时,缓存是最有效的性能优化。 现在,除了实体缓存之外,您还具有带有非常简单的API的查询缓存 。 这意味着您可以为ORM查询的LoadContext查询或数据源设置数据源的可缓存属性,下次您使用相同参数执行查询时,该查询的结果将被缓存并重用。 当然,当您更新或删除查询中使用的类型的实体时,查询会自动从缓存中退出。

不要忘记为查询缓存中涉及的实体设置实体缓存-这两个缓存应该协同工作。

摘要

在结束本文时,我想指出,大多数改进是针对来自CUBA社区的真实用户请求而做出的。 非常欢迎您在我们的支持论坛上分享有关如何改善平台的想法。

翻译自: https://www.javacodegeeks.com/2016/10/whats-new-cuba-platform-6-3.html

cuba.platform

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java annotation应用_Java Annotation高级应用

前言:在此行文《java annotation高级应用》,具体实例化解释annotation和annotation processing tool(APT)的使用。望能对各位的有所帮助。一、摘要:《java annotation高级应用》具体实例化解释annotation和annotation processing tool(APT)的…

如何通过命令终端访问本地/局域网/远程的MySQL数据库_访问数据库_连接数据库_登录数据库

文章目录Windows系统下访问本地MySQL数据库访问远程主机的MySQL数据库本地安装了MySQL数据库本地没有安装MySQLLinux系统下退出数据库登录Windows系统下 访问本地MySQL数据库 使用命令终端访问本地MySQL数据库,打开终端直接输入以下命令语句: mysql …

科大讯飞 jason word_2019科大讯飞全球1024开发者节开幕啦

2019年10月24日,属于开发者的共同节日2019科大讯飞全球1024开发者节于合肥滨湖国际会展中心盛大启幕。以“A.I.前进,拼世界”为主题的本届大会,将集结120位行业大咖主题演讲、20场行业分论坛详解全域A.I.,科大讯飞的1024计划3.0、…

多线程线程池的实现java_如何在Java中实现线程池

多线程线程池的实现java线程是独立程序的执行路径。 在java中,每个线程都扩展java.lang.Thread类或实现java.lang.Runnable。 多线程是指在一个任务中同时执行两个或多个线程。在多线程中,每个任务可以有多个线程,并且这些线程可以异步或同步…

java timestamp是什么类型_JAVA比较2个Timestamp类型的时间大小-由此引发的思考

今天忽然要对2个Timestamp变量的类型进行比较。没怎么用过,百度发现居然很多都是转换类型的。后面发现Timestamp自己都有方法进行比较。但是百度一堆都是那些要转换类型的。我就想简单的知道2个Timestamp的时间哪个早哪个晚嘛。经过自己的百度的验证,终于…

Windows 使用命令执行 sql 脚本文件

文章目录MySQL 数据库方法一:使用 mysql 命令方法二:使用 source 命令Oracle 数据库MySQL 数据库 方法一:使用 mysql 命令 未配置 MySQL 的环境变量,则需要进入 MySQL 的 bin 目录下才能执行 mysql 命令已配置 MySQL 的环境变量…

windows系统连接同局域网下的其他电脑mysql等服务

一、首先设置被连接的mysql服务的 root 用户及访问权限(必须确保连接用户拥有不限ip访问权限) 参考:https://blog.csdn.net/hkl_Forever/article/details/127543546 二、配置被连接电脑的防火墙、网络共享、设置出入端口规则等 1、打开防火墙…

java中使用jython_将Jython嵌入到您的Java代码库中

java中使用jythonJython是一个使用相当可靠的语法的快速Java脚本的好工具。 实际上,当使用jmx为您的Java应用程序实现一些维护或监视脚本时,它的运行效果非常好。 如果您与其他具有python背景的团队合作,则将python集成到您的java应用程序是…

js如何获取jwt信息_谈房地产公众号如何涨粉?一篇文章让你轻松获取信息

原标题:谈房地产公众号如何涨粉?一篇文章让你轻松获取信息对于房地产企业来说,如何学会运营自己企业的房地产微信公众号是涨粉引流的关键一步,老话说:一步走好,步步稳。值得夸奖的是近几年中高端房地产企业…

java 统计数字个数_统计数字问题(Java)

Description一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中…

Windows 命令终端(CMD)的快捷键

这些快捷键只在Windows系统操作有效,连接远程Linux主机,再操作这些快捷键是无效的,因为连接远程的Linux主机后,你用的是Linux命令终端。 快捷键: F1:按F1逐字显示最后一次执行的命令 F2:按F2会…

java开发plc上位机软件开发_上位机开发之西门子PLC-S7通信实践

写在前面:就目前而言,在中国的工控市场上,西门子仍然占了很大的份额,因此对于上位机开发而言,经常会存在需要与西门子PLC进行通信的情况。然后对于西门子PLC来说,通信方式有很多,下面简单列举一…

boss直聘账号异常登不上_【苹果IOS游戏账号分享】据说是最欢乐的2D冒险游戏?Q萌有趣,好不好玩你说了算——惊奇剑士...

惊奇剑士游戏下载点击下方卡片下载游戏!不会使用请点击《操作指南》↓↓↓↓本游戏是由1群的资源库:“hentai是绅士不是变态” 赞助我们购买的,感谢大家的鼎力支持,二哈替大家感谢下hentai是绅士不是变态。可甜可盐的小哥哥之前还…

jquery 延迟加载代码_延迟加载是一种代码气味

jquery 延迟加载代码您见过那些具有许多属性的巨大物体吗? 这些域对象由于不希望从数据库检索太多信息而在其中使用延迟加载? 我敢打赌你有这种令人怀疑的快乐。 今天,我想与您分享我对它们的印象- 使用延迟加载应被视为一种代码味道&#x…

inotify-java下载_inotify-java-2.1.jar

【实例简介】inotify能够对文件系统进行监控,书上举的例子都是c使用inotify的例子,难道没有Java版吗,肯定有,只不过要自己编译,在网上找到别人的博客有,但是人家不愿意分享,我就只能自己编译了&…

SQL语句执行顺序

文章目录SQL 简介SQL 语句的执行顺序重点SQL 简介 SQL 是 Structured Query Language 的缩写,称为结构化查询语言,SQL 是一种操作关系型数据库的规则,SQL 语句以分号结尾,不区分大小写,建议关键词使用大写。 SQL 语句…

getexternalfilesdir 相册_音乐相册(电子相册制作)V5.2 安卓最新版

音乐相册(电子相册制作)是一个功能强大的电子相册创建工具。最新版本的音乐专辑应用程序可以帮助用户快速创建精美的多媒体专辑视频,并匹配优美的音乐伴奏,使照片更精彩。音乐专辑应用程序支持几乎所有流行的图片格式,并支持导入和导出&#…

jdk 9和jdk8_JDK 9是某些功能的终结

jdk 9和jdk8几天前宣布JDK 9是Feature Complete! 进行切割的许多“功能”是附加功能,但有些是移除功能。 这篇文章介绍了一些从OpenJDK和/或Oracle JDK with Java 9中删除的项目。 JEP 220 (“模块化运行时图像”)的一部分是删除…

二级java题型及分值_2016年全国计算机二级java语言程序设计考试大纲

2016年全国计算机二级java语言程序设计考试大纲2016年3月计算机考试即将在3月26日-29日进行,为了帮助大家顺利通过2016年计算机二级考试,下面百分网小编为大家带来2016年全国计算机二级java语言程序设计考试大纲,供大家参考学习,预…

linux系统下安装jdk教程

一、首先下载linux版本jdk jdk官网:http://www.oracle.com/technetwork/java/javase/downloads/index.html 根据自己的需求,下载不同版本的jdk 2.将下载好的jdk压缩包,通过ftp上传到linux系统的当前用户下,我当前登录的用户为r…