cuba.platform_CUBA Platform 6.3的新增功能
cuba.platform
我們很自豪地宣布新版本的CUBA平臺和Studio全面上市!
也許這是有史以來功能最豐富的平臺版本之一–在各個級別上都有重要的變化:體系結(jié)構(gòu),可擴(kuò)展性,API可用性和性能。
本文介紹了該平臺的主要增強(qiáng)功能。 發(fā)行說明中提供了完整的更改列表:
Platform 6.3發(fā)行說明
Studio 6.3發(fā)行說明
應(yīng)用組件
如您所知,平臺始終具有功能分解的機(jī)制:一方面,平臺本身被拆分為核心和附加組件,另一方面,具有創(chuàng)建擴(kuò)展項目的能力。 擴(kuò)展機(jī)制受到限制,因為它只能在垂直方向上工作–您可以為一個基礎(chǔ)項目創(chuàng)建許多擴(kuò)展,但不能創(chuàng)建類似于CUBA Reporting或BPM的加載項與其他加載項組合在最終應(yīng)用程序中使用,并在其他項目中重復(fù)使用。
現(xiàn)在,通過引入應(yīng)用程序組件的概念解決了該問題。 使用應(yīng)用程序組件,您可以將大型應(yīng)用程序分解為一組功能模塊,并將它們開發(fā)為單獨的項目。 此外,這些模塊可以重復(fù)使用–您可以將它們包含在不同的應(yīng)用程序中,就像使用CUBA高級附加組件一樣。
例如,在出租車管理應(yīng)用程序中,組件的結(jié)構(gòu)可以如下:
在這里,CUBA,報告和全文搜索是平臺提供的組件。 信用卡付款和定價是可重用的組件,可在不同的應(yīng)用程序中使用; 驅(qū)動程序工資包含僅提供給某些客戶的可選功能。 這種可選的依賴性意味著您不僅可以在開發(fā)中,而且可以在部署階段將應(yīng)用程序組件包含在應(yīng)用程序中。
實際上,一個應(yīng)用程序組件(或應(yīng)用程序組件)只是一個公開一些有關(guān)其自身信息的應(yīng)用程序。 有關(guān)模塊,配置屬性和組件工件的信息包含在一個特殊文件中:app-component.xml; 特殊的JAR清單條目用于自動發(fā)現(xiàn)類路徑中的組件。 應(yīng)用程序組件也可以看作是全棧庫:它們提供所有級別的功能,包括實體,數(shù)據(jù)庫DDL腳本,中間件服務(wù),UI屏幕甚至CSS主題。
如果要使其成為組件,Studio會為當(dāng)前項目自動生成app-component.xml。 只需使用“項目屬性”選項卡上的鏈接。 為了在應(yīng)用程序中使用組件,請編輯項目屬性,然后將該組件添加到“自定義組件”列表中。
您可以在文檔中看到創(chuàng)建和使用應(yīng)用程序組件的示例。
支持多個數(shù)據(jù)存儲
到目前為止,平臺機(jī)制只能與為應(yīng)用程序選擇的單個數(shù)據(jù)庫一起使用。 您可以直接通過JDBC或其他連接使用其他數(shù)據(jù)源,但是它太復(fù)雜了,無法在標(biāo)準(zhǔn)UI組件中顯示和編輯此類“外部”數(shù)據(jù)。
CUBA 6.3中實現(xiàn)的數(shù)據(jù)存儲概念旨在解決使用相同的標(biāo)準(zhǔn)平臺機(jī)制(例如,可感知數(shù)據(jù)的可視組件)在單個應(yīng)用程序中處理來自不同來源的數(shù)據(jù)的問題。 數(shù)據(jù)存儲實際上是具有幾種用于加載和保存實體的方法的接口。 該平臺當(dāng)前包含此接口的一種實現(xiàn),允許通過ORM層使用關(guān)系數(shù)據(jù)庫。 您可以在項目中創(chuàng)建自己的數(shù)據(jù)存儲實現(xiàn),例如,與NoSQL數(shù)據(jù)庫,內(nèi)存網(wǎng)格或與其他應(yīng)用程序集成。
當(dāng)您在應(yīng)用程序中使用多個數(shù)據(jù)存儲時,其數(shù)據(jù)模型將包含映射到來自不同位置的數(shù)據(jù)的實體。 如果數(shù)據(jù)存儲是RDBMS,則實體將被注釋為JPA持久類。 否則,實體將是非持久性的,自定義數(shù)據(jù)存儲實現(xiàn)負(fù)責(zé)將實體映射到數(shù)據(jù)。 一個應(yīng)用程序?qū)⑹冀K具有一個連接到RDMS的“主”數(shù)據(jù)存儲區(qū),以存儲諸如用戶,角色,過濾器等平臺實體。應(yīng)用程序?qū)嶓w可以分散在任意數(shù)量的不同存儲區(qū)中。
例如,下圖表示應(yīng)用程序的數(shù)據(jù)存儲結(jié)構(gòu),該應(yīng)用程序在數(shù)據(jù)庫級別與ERP系統(tǒng)集成在一起,使用MongoDB作為文檔存儲,并使用REST API連接到遠(yuǎn)程信息系統(tǒng)。 CUBA的本機(jī)零件以綠色顯示,自定義零件以黃色顯示。
混合數(shù)據(jù)模型和定制數(shù)據(jù)存儲為創(chuàng)建微服務(wù)(或更具體地說, 自包含系統(tǒng) )開辟了道路。 假設(shè)您有一個Sales應(yīng)用程序,其中包含用于管理客戶和產(chǎn)品的功能。 您可以將應(yīng)用程序分為三個獨立的項目:Sales,Customers和Products,每個項目都有自己的數(shù)據(jù)庫和UI。 在“銷售”應(yīng)用程序中,您將創(chuàng)建兩個其他數(shù)據(jù)存儲庫以與其他應(yīng)用程序集成。 在最簡單的情況下,數(shù)據(jù)存儲區(qū)可以是內(nèi)置的RdbmsStore,因此Sales應(yīng)用程序?qū)H連接到其他數(shù)據(jù)庫。 為了實現(xiàn)更寬松的耦合,您可以使用REST API創(chuàng)建自定義數(shù)據(jù)存儲,并將遠(yuǎn)程數(shù)據(jù)映射到Sales數(shù)據(jù)模型的非持久實體。 因此,您將擁有三個相對較小的獨立應(yīng)用程序:客戶和產(chǎn)品可以獨立工作,銷售包含基于標(biāo)準(zhǔn)CUBA機(jī)制但使用遠(yuǎn)程系統(tǒng)數(shù)據(jù)的業(yè)務(wù)邏輯和UI。
現(xiàn)在,來自不同數(shù)據(jù)存儲的實體不能具有直接關(guān)系。 這意味著,如果您要創(chuàng)建來自不同商店的實體的引用,則必須為“外國”實體的ID創(chuàng)建一個持久屬性,為該實體本身創(chuàng)建一個非持久屬性,并處理其加載和保存以編程方式。 在將來的平臺版本中,我們將提供在應(yīng)用程序級別上鏈接實體的簡單聲明方式。
使用Studio,您可以在“項目屬性”頁面的“高級”選項卡上快速配置其他數(shù)據(jù)存儲(RDBMS或自定義)。
有關(guān)數(shù)據(jù)存儲配置的詳細(xì)信息,請參見文檔 。
基礎(chǔ)實體類
我們重構(gòu)了實體的基類 ,以使它們更加輕巧。 現(xiàn)在,最小實體只能具有一個必需的系統(tǒng)屬性-id,并且可以將其映射到幾乎任何數(shù)據(jù)庫類型,包括IDENTITY。 此外,還支持復(fù)合鍵。
這意味著現(xiàn)在您可以為幾乎所有現(xiàn)有數(shù)據(jù)庫創(chuàng)建CUBA實體,而無需修改其架構(gòu)。 因此,例如,您的新CUBA應(yīng)用程序可以與舊版數(shù)據(jù)庫以及舊版系統(tǒng)同時使用。 它還允許您通過將第三方系統(tǒng)的數(shù)據(jù)庫連接為其他數(shù)據(jù)存儲來與它們集成。
單點登錄
CUBA應(yīng)用程序的單點登錄(SSO)允許用戶通過在瀏覽器會話中輸入一次登錄名和密碼來登錄到多個正在運行的應(yīng)用程序。 在使用多個系統(tǒng)時,此功能對于無縫的用戶體驗至關(guān)重要。 當(dāng)不使用LDAP集成時,它還可以幫助管理員在一處管理用戶密碼。
由于任何CUBA應(yīng)用程序都可以是身份提供者(IDP),它是SSO基礎(chǔ)結(jié)構(gòu)的核心元素,因此CUBA SSO只需很少的設(shè)置即可。 所有配置都可以在部署階段完成,因此在開發(fā)應(yīng)用程序時不必?fù)?dān)心。
該圖顯示了具有兩個應(yīng)用程序的SSO系統(tǒng)。 應(yīng)用程序1同時是身份提供者和服務(wù)提供者(即只是提供某些功能的應(yīng)用程序)。 它包含一個特殊的登錄表單,顯示給SSO系統(tǒng)的所有用戶。 App 2是一個服務(wù)提供商,它將用戶重定向到App 1 IDP進(jìn)行登錄。 用戶密碼僅由IDP檢查,但用戶角色和權(quán)限是完全分開的。
請參閱文檔中有關(guān)單點登錄的更多信息。
匿名用法
現(xiàn)在,您無需登錄即可創(chuàng)建具有UI屏幕的應(yīng)用程序。 該平臺包含一個預(yù)定義的“匿名”用戶,因此代表該用戶執(zhí)行登錄之前運行的所有應(yīng)用程序代碼。 默認(rèn)情況下,匿名用戶具有所有權(quán)限,因此在允許匿名訪問之前,請不要忘記創(chuàng)建僅具有必需權(quán)限的角色。
工作原理:應(yīng)用程序中有兩個頂級窗口:登錄窗口和主窗口。 前者適用于匿名用戶,后者適用于經(jīng)過身份驗證的用戶。 默認(rèn)情況下,登錄窗口僅包含登錄表單,但是您可以向其中添加任何可視組件和數(shù)據(jù)源,甚至可以添加主窗口元素(例如用于打開其他屏幕的WorkArea)。 為了創(chuàng)建您自己的匿名訪問登錄窗口,請轉(zhuǎn)到Studio中的“屏幕”部分,然后單擊“創(chuàng)建登錄窗口”。
新的REST API
平臺中已包含很長時間的通用REST API的第一個版本并不是完全RESTful的-它實際上是一個Web API,可通過HTTP提供CRUD和查詢執(zhí)行。 在平臺版本6.3中,我們引入了一個全新的REST API v2 ,該API符合REST的體系結(jié)構(gòu)樣式:URI和HTTP動詞的使用,OAuth2身份驗證。 與改進(jìn)的JSON序列化一起,新的REST API大大簡化了Web和移動客戶端應(yīng)用程序的創(chuàng)建。
除了使用實體進(jìn)行CRUD操作之外,REST API v2還允許您執(zhí)行預(yù)定義的JPQL查詢并調(diào)用服務(wù)方法。 方法必須由開發(fā)人員明確允許,并且可以接受和返回簡單類型,實體和POJO以及這些類型的集合。 這種靈活的服務(wù)處理方式使您不必創(chuàng)建僅用于將Java類型轉(zhuǎn)換為JSON的Spring MVC控制器-這種轉(zhuǎn)換通常可以自動完成。 因此,您只需在中間件上創(chuàng)建常規(guī)服務(wù),然后在rest-services.xml中注冊公開的方法。 之后,您可以從客戶端傳遞參數(shù)并以JSON接收結(jié)果來調(diào)用這些服務(wù)方法。
新的REST API還提供了用于獲取當(dāng)前用戶詳細(xì)信息和權(quán)限,有關(guān)應(yīng)用程序數(shù)據(jù)模型的信息以及有關(guān)REST API本身的機(jī)器可讀文檔的端點。
屏幕代理
在新的平臺版本中,有一種機(jī)制可讓您將UI屏幕調(diào)整為適用于不同的設(shè)備:臺式機(jī),平板電腦,電話。 您只需為每個受支持的設(shè)備創(chuàng)建多個版本的屏幕布局,并為其指定相同的ID,但使用不同的屏幕代理值。 然后在運行時,平臺將根據(jù)用戶從中訪問應(yīng)用程序的當(dāng)前設(shè)備選擇適當(dāng)?shù)钠聊话姹尽?
這種簡單的方法并不是真正的響應(yīng)方式,因為例如,當(dāng)用戶更改設(shè)備方向時,屏幕將不會轉(zhuǎn)換。 如果您不介意通過媒體查詢編寫CSS,請使用CssLayout容器獲取完全響應(yīng)的屏幕。
查詢緩存
毫無疑問,使用數(shù)據(jù)庫時,緩存是最有效的性能優(yōu)化。 現(xiàn)在,除了實體緩存之外,您還具有帶有非常簡單的API的查詢緩存 。 這意味著您可以為ORM查詢的LoadContext查詢或數(shù)據(jù)源設(shè)置數(shù)據(jù)源的可緩存屬性,下次您使用相同參數(shù)執(zhí)行查詢時,該查詢的結(jié)果將被緩存并重用。 當(dāng)然,當(dāng)您更新或刪除查詢中使用的類型的實體時,查詢會自動從緩存中退出。
不要忘記為查詢緩存中涉及的實體設(shè)置實體緩存-這兩個緩存應(yīng)該協(xié)同工作。
摘要
在結(jié)束本文時,我想指出,大多數(shù)改進(jìn)是針對來自CUBA社區(qū)的真實用戶請求而做出的。 非常歡迎您在我們的支持論壇上分享有關(guān)如何改善平臺的想法。
翻譯自: https://www.javacodegeeks.com/2016/10/whats-new-cuba-platform-6-3.html
cuba.platform
總結(jié)
以上是生活随笔為你收集整理的cuba.platform_CUBA Platform 6.3的新增功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 惠字怎么组词 惠字组词有哪些
- 下一篇: 昊组词 昊组词有哪些