原文: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