本文為CUBA-Platform簡介 ,一個結合了可靠架構、企業級應用程式“必備”功能和應用程式快速開發工具的開源框架。 ...
原文:CUBA Platform: An Open-Source Java Framework for Rapid Application Development
翻譯:CUBA China
CUBA-Platform 官方網站 : https://www.cuba-platform.com
CUBA China 官方網站 : http://cuba-platform.cn
歡迎轉載,轉載請註明來源: https://www.cnblogs.com/cubacn/p/cubaplatform1.html。
前言
CUBA China是由多名具有豐富的行業軟體、工具軟體開發經驗的開發人員組成的團隊,我們出於對CUBA-Platform開發技術的共同愛好而成立, 我們的初衷是建立一個社區、與更多的行業軟體開發人員一起交流關於CUBA-Platform及企業級應用的開始技術、架構經驗等。
作為企業軟體開發行業的“老兵”,我們經歷過眾多的開發框架,包括國內的、國外的,我們每個人對於所使用過的框架都持有種種不滿意,但CUBA-Platform的整體表現讓我們印象深刻,她具有深厚的技術沉澱(GITHUB上自2009年起有代碼提交)、源自實踐的設計、豐富的文檔、開放的姿態、先進的技術棧、完備的企業軟體基礎功能、高度可定製的系統架構、開發工具加持等等,所有這些讓我們認為她是一個值得投入的框架。
獨樂樂不如眾樂樂,所以我們計劃構建並維護一個中國地區CUBA-Platform的社區,為國內的企業應用開發人員提供關於CUBA-Platform及企業級應用的技術交流、討論的平臺。。
這篇文章是我們介紹CUBA-Platform的第一篇文章,後續我們會持續推出一系列翻譯或原創文章。 如果您希望進一步瞭解CUBA-Platform並及時獲得最新的技術文章,請掃描文章右側或下方的二維碼關註我們的公眾號。
摘要
本文為CUBA-Platform簡介 ,一個結合了可靠架構、企業級應用程式“必備”功能和應用程式快速開發工具的開源框架。
為什麼需要開發框架?
從進入電腦時代起,企業應用軟體開發一直面臨一個挑戰:雖然企業應用開發的目的是解決實際業務問題,但事實上開發人員必須花費大量時間和精力在純技術層面,比如軟體架構和一些很通用的功能。
為瞭解決上述技術與業務之間的不對等精力消耗,涌現了很多開發框架,目的都是為了提高抽象級別,將開發人員從低級繁雜的工作中解放出來。隨著時間的推移,這些開發工具越來越智能,使得開發效率越來越高。Borland Delphi就是21世紀初最成功的例子之一,它能使開發產出大幅提升。
過去的十年以來, 企業級應用軟體的需求越來越多、系統越來越龐大、功能越來越複雜、技術更新迭代不斷,促生了對新一代高效框架和開發工具的需求。
在這篇文章里我們要介紹CUBA-Platform :一個結合了可靠架構、企業級應用程式必備功能和快速應用程式開發工具的開源框架,它有助於大幅提高研發團隊的開發效率、提高交付質量。
CUBA平臺與其他框架有何不同?
CUBA平臺與其他大多數Java框架最大的區別是:它的抽象級別更高,開發人員可以只專註於解決業務問題。它把稍高但是又有些偏“底層”的技術細節(如Vaadin,Spring和EclipseLink)也封裝起來,並自帶豐富的應用功能和開發工具,因此開發人員可以最大限度地專註於業務實現 。同時,CUBA並不限制對底層代碼的訪問,這樣可以保證框架可以適應具體項目的需求。
CUBA平臺能為開發企業應用程式帶來巨大價值:複雜的數據模型、數十或數百個頁面、各式各樣的業務流程、系統的健壯性安全性等等。
CUBA應用內部細節初探
架構
CUBA應用程式具有標準的三層體系架構。連接各層的紐帶是元數據 – 就是我們所知的數據模型。它使所有可視組件都具有數據感知能力。比如,表格可以知道自己所展示實體的屬性、標簽知道自己在顯示日期。類似地,元數據有助於可視組件通過ORM與數據層進行通信,ORM用來定義對象的關係圖,決定是否需要載入或者更新數據。安全子系統、報表生成器和平臺的其他組件也有同樣的機制。
前端界面(Vaadin)
CUBA-Platform使用Vaadin作為預設的前端界面框架,並提供聲明式的界面開發模型,用戶可以在可視化設計器或XML中定義頁面佈局。CUBA框架內置70多種Vaadin可視化組件供選擇,比如各類按鈕、表格組件、樹組件、表單欄位、 地圖組件、動態圖表、透視表等等,涵蓋企業應用界面需要的一切組件。界面定義完成後,在Java控制器中添加組件的初始化邏輯和事件處理邏輯。基於組件的數據感知功能,用戶可以非常快速地創建專業的企業應用頁面。業務邏輯代碼和頁面佈局代碼分離,系統更易於維護。如果各式各樣可視化組件還是不能滿足用戶需求,CUBA也可以靈活的集成外部JavaScript庫、GWT或Vaadin組件。
[WEB前端界面示例]
前端界面 (Polymer)
Google Polymer是CUBA-Platform的另一個可選的前端界面技術,通過Restful API與CUBA項目服務端進行通訊。Google Polymer客戶端界面一般用於功能操作較少,但界面要求更靈活、可提供移動優先的響應式WEB界面。
[Polymer界面示例]
過濾器
CUBA用戶界面的一個重要功能:過濾器 – 這個組件能夠讓用戶自定義搜索條件,並且開發起來很簡單:開發人員只需將它放到一個顯示實體列表的頁面就萬事大吉了。用戶或管理員可以根據各自的需求定義各自的搜索條件。
過濾器得益於CUBA元數據驅動的開發理念,過濾器能感知到自己綁定的實體,通過元數據,過濾器可準確地展示出表格可過濾的欄位、限制關鍵字的值類型、提供備選值列表等。
[添加過濾欄位]
[過濾器界面]
安全控制
訪問控制對於企業級應用來說至關重要,在CUBA項目中所有的用戶操作均由安全子系統控制。
CUBA支持實體級別、行級別、實體屬性級別(列級別)的數據讀寫控制;功能界面功能也可以基於角色開放或拒絕;也可以對界面上的組件進行基於角色的許可權控制。行級別的安全機制用來控制用戶只能對實體的某些數據記錄(行)的訪問 - 例如,某部門的用戶只能看到該部門用戶創建的文檔。
所有許可權設置都可以在運行時通過界面進行配置,所有更改都可以由系統管理員線上操作。當然,所有數據的更改歷史都有記錄,誰在何時更改了什麼 -出現問題時溯源以及彙報都很方便!
企業級應用必備功能
內置基礎的WEB安全設施
CUBA-Platform作為一個框架,整合了最佳安全實踐,可自動對WEB應用程式中的大部分常見漏洞提供防護。比如跨站腳本(XSS)攻擊、跨站請求偽造攻擊(CSRF)、SQL註入攻擊等。
用戶管理模塊
用戶管理模塊包含了用戶管理、角色管理、訪問組管理等界面,通過用戶管理模塊可在運行時對系統用戶、角色、訪問組進行增、刪、改的維護;可對用戶的許可權進行管理。
管理員工具
CUBA-Platform內置了多個管理員實用工具,這些有助於系統管理員瞭解系統的運行情況、快速查找定位系統問題、自動執行重覆性的管理任務等。
日誌查看功能
通過日誌查看功能,系統管理員不必登錄伺服器,直接登錄系統來查看各種日誌,比如伺服器日誌、實體日誌、session日誌等。
實體(Entity)探查
CUBA-Platform可在運行時分析實體定義、動態生成實體數據瀏覽界面、數據編輯界面,管理員可通過實體探查功能查看、維護系統數據。
性能統計
通過性能統計功能,管理員可 全面瞭解系統運行的數據,比如系統運行時間、記憶體占用數據、CPU占用數據、資料庫連接數據、客戶端請求數據等。這些數據可為管理員優化系統配置、硬體配置、排查問題提供依據。
定時任務
通過定時任務,管理員可配置任意需要周期性或定時執行的任務,比如定時清理磁碟空間、定時發送系統狀態通知等。
數據恢復
CUBA-Platform支持數據軟刪除,實體刪除執行了刪除操作後並不被物理刪除,只是給數據添加了刪除標記。如果發生了數據誤刪,管理可通過數據恢復功能恢復刪除的數據。
Session查看
通過用戶會話功能,管理員可查看所有線上的用戶,並可對用戶會話進行管理。比如發送消息給用戶、註銷用戶登錄等。
多語言和多時區支持
CUBA-Platform提供了標準化多語言開發規範,可以使業務系統很方便地支持多國語言,這點對於開發國際性的業務系統很有幫助。
通用REST API
通過CBUA-Platform,可很容易地實現REST API。方便外部系統與CUBA開發的業務系統進行集成,外部系統可以通過REST API調用基於CUBA的業務系統的中間件服務、訪問領域實體數據。交互的數據格式支持JSON和XML。
報表管理
報表模塊可以幫助開發人員快速生成各種類型的統計報表,並支持以多種格式輸出。
工作流模塊
CUBA Platform的BPM模塊基於Activiti,提供流程設計、執行和管理業務流程的工具,支持BPMN 2.0標準。
全文檢索
CUBA-Platform的全文搜索(FTS)功能對實體屬性和上傳的文件內容進行索引,提供非結構化搜索。
CUBA應用部署
在程式部署和軟體運行環境方面,可選項很多。CUBA應用程式有多種部署配置方案,可以在單個伺服器運行所有程式,或者採用單獨中間件(後臺服務程式)加Web集群的方式。
平臺開箱支持的資料庫有:PostgreSQL,Oracle,Microsoft SQL Server,MySQL和HSQL(通常用於原型設計),隨著項目的發展,用戶也可以輕鬆地切換資料庫。
WEB應用方面, CUBA應用程式可以部署到任何Java EE Web 伺服器(例如Jetty,Tomcat,Glassfish或Websphere)。當然,用戶也可以把應用編成Docker鏡像,也可以在流行的PaaS雲中部署,比如CloudFoundry,OpenShift或Jelastic。
如何開發CUBA應用?
使用CUBA 平臺開發應用程式,你只需要懂得Java SE,XML和JPQL – 你的應用程式代碼會更統一更易於維護。你的開發團隊也更加靈活 – 你並不需要專門的Web開發人員或Java EE專家團隊。
用戶可以自己選擇IDE開發業務邏輯,比如IntelliJ IDEA或Eclipse。CUBA也提供了CUBA應用的集成開環境:CUBA Studio – 一個輔助開發的可視化工具,CUBA有關的任務都可以通過它自動完成:
· 配置項目基礎信息可視化設計UI和數據模型
· 帶有多種佈局選項的增刪查改腳手架頁面
· 自動生成和運行資料庫腳本
· 為監聽處理器(handlers)和介面創建腳手架代碼
Studio與IDE之間的所有改動都是同步的,用戶可以完全自由地選擇在哪裡進行更改。為了進一步提高開發人員的效率,Studio會自動熱部署除數據模型之外的所有代碼。因此,Studio大大避免了例行工作和編寫樣板代碼的工作量,而且還不限制用戶對編碼工具的選擇。
如果用戶考慮將舊系統升級到流行的技術棧,CUBA也有解決方案。Studio自帶的遷移工具可以將舊資料庫轉換為符合CUBA平臺的資料庫,並根據數據模型自動生成頁面,用戶只需要添加自定義頁面和遷移業務邏輯代碼。
收費嗎?
如標題所述,核心框架(CUBA Framework)是開源的,是Apache 2.0許可, 源碼都在GitHub上。所以對用戶在CUBA上開發的軟體沒有許可限制。您可以免費使用IDEA或Eclipse基於CUBA Framework進行業務系統的開發。
如果您想加快開發過程或者團隊中有一些初級開發人員,那麼您可以使用CUBA Studio來幫助提升開發效率。
結束
CUBA-Platform是一個基礎設施可靠、通用功能完善的開發框架,一篇文章不足以概括她的方方面面。希望本文可以讓您對CUBA平臺有一個初步的瞭解並且決定親自試一試。接下來您可以:下載免費的Studio,根據快速入門指南,在幾分鐘內運行您的第一個CUBA應用程式!
您也可以訪問我們的論壇,通過討論提交您的問題、想法。
鏈接
CUBA-Platform 官方網站 : https://www.cuba-platform.com
CUBA China 官方網站 : http://cuba-platform.cn