本發(fā)明屬于計算機和軟件開發(fā)領(lǐng)域,尤其涉及一種雙引擎快速軟件開發(fā)系統(tǒng)。
背景技術(shù):
近年來,隨著IT技術(shù)的迅猛發(fā)展,一些先進的設(shè)計思想和開發(fā)理念正在逐步的改變著應(yīng)用軟件的開發(fā)過程。今天,越來越多的開發(fā)團隊選擇了在一個快速開發(fā)平臺的基礎(chǔ)上開發(fā)應(yīng)用軟件,由于它的開放性和復(fù)雜性,各種各樣的快速開發(fā)平臺可謂是層出不窮。
平臺的出現(xiàn)有著它的必然性。在當前日益激烈的市場競爭中,一方面客戶希望將他們購買的軟件盡可能早的投入使用,以降低管理成本或是增加市場競爭力,另一方面客戶又希望軟件提供商能夠給予他們持續(xù)性的產(chǎn)品服務(wù),并隨時根據(jù)他們的需求對產(chǎn)品進行調(diào)整。
隨著企業(yè)云計算、大數(shù)據(jù)、移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等新技術(shù)快速發(fā)展以及互聯(lián)網(wǎng)+理念逐步深入到社會各個領(lǐng)域。當前企業(yè)正面臨著前所未有的機遇和挑戰(zhàn),競爭日趨激烈,新的業(yè)務(wù)和交易渠道不斷涌現(xiàn),企業(yè)需要不斷快速交付和適應(yīng)性調(diào)整。在這樣一個不斷創(chuàng)新、迅速發(fā)展變化的環(huán)境中,大量客戶本身的業(yè)務(wù)模式、市場定位都在不斷的演化過程中,相應(yīng)的應(yīng)用系統(tǒng)也需要隨之改變以適應(yīng)新業(yè)務(wù)的需要。信息系統(tǒng)如何適應(yīng)業(yè)務(wù)調(diào)整和變化的問題,使得信息技術(shù)部門承擔著巨大的壓力,在整個企業(yè)級信息系統(tǒng)的規(guī)劃和建設(shè)中面臨著一系列艱苦的挑戰(zhàn)。
在這樣的大環(huán)境下,軟件提供商必須在提高軟件質(zhì)量的同時,縮短軟件的開發(fā)周期,并且保證軟件的可維護性良好。這導(dǎo)致系統(tǒng)架構(gòu)師們不得不一遍又一遍的思索如何優(yōu)化應(yīng)用軟件的開發(fā)過程和開發(fā)手段,一時間各種優(yōu)秀的,富于前瞻性的思想不斷涌現(xiàn),快速開發(fā)平臺就是其中之一。
目前市場上快速開發(fā)平臺大體可以分為兩大類,一類是以模型驅(qū)動+代碼生成方式為代表(如東軟、金蝶、用友),另一類以模型驅(qū)動+解析引擎為代表(如天翔MyApps、南瑞PI300等)。這兩種類型平臺在特定的環(huán)境中,有效解決了軟件的快速開發(fā)、統(tǒng)一規(guī)范等問題。但也存在許多缺陷。比如目前業(yè)界主流的開發(fā)平臺存在缺陷:(1)過于復(fù)雜,學習成本高;(2)通用性較差,組件依賴性強;(3)個性化UI定制困難;(4)代碼難升級、難維護、難規(guī)范以及靈活性差。
技術(shù)實現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中的上述問題,本發(fā)明提出了一種雙引擎快速軟件開發(fā)系統(tǒng)。
本發(fā)明采用的技術(shù)方案如下:
一種雙引擎快速軟件開發(fā)系統(tǒng),該系統(tǒng)包括前端引擎系統(tǒng)和后端引擎系統(tǒng),其中
所述前端引擎系統(tǒng)包括UI模型模塊、UI解析引擎模塊、UI容器模塊、UI控件模塊、UI渲染模塊,并通過以下步驟實現(xiàn)基于元模型的HTML5解析引擎:
1.1)通過UI模型模塊獲取業(yè)務(wù)界面元模型信息;
1.2)通過UI解析引擎模塊解析業(yè)務(wù)界面元模型信息,生成UI布局模型與元素控件模型;
1.3)UI容器模塊根據(jù)容器模型信息,生成界面容器布局控件;
1.4)根據(jù)元素控件模型,使用UI控件模塊生成界面元素控件;
1.5)根據(jù)UI布局模型,將生成的界面元素控件逐一添加到界面容器布局控件中;
1.6)通過UI渲染模塊,將界面容器布局控件渲染為適應(yīng)終端標準的HTML5標簽;
1.7)生成PC端或移動端業(yè)務(wù)界面的靜態(tài)HTML文件。
所述后端引擎系統(tǒng)通過以下步驟提供基于MDA功能模型解析引擎及業(yè)務(wù)擴展插件機制的后端業(yè)務(wù)服務(wù):
2.1)加載元表模型、應(yīng)用模型、功能模型、權(quán)限模型;
2.2)初始化應(yīng)用模型并構(gòu)建應(yīng)用數(shù)據(jù)源;
2.3)通過元表模型模塊完成物理業(yè)務(wù)表與業(yè)務(wù)模型屬性之間的映射;
2.4)通過功能模型模塊完成業(yè)務(wù)功能處理邏輯模型的構(gòu)建,包括功能事件模型、功能服務(wù)模型、業(yè)務(wù)擴展模型;
2.5)當接收到功能事件服務(wù)請求時,構(gòu)建服務(wù)請求上下文及服務(wù)頒發(fā)器;所述服務(wù)頒發(fā)器用于對所述服務(wù)請求進行路由和轉(zhuǎn)發(fā);
2.6)如果當前請求不合法,直接返回錯誤報文到請求者,返回步驟2.5;
2.7)如果當前請求合法,將該請求路由到功能解析引擎服務(wù)器進行處理;
2.8)功能解析引擎服務(wù)器接收功能服務(wù)等操作事件;
2.9)根據(jù)功能服務(wù)操作事件類型構(gòu)建處理事務(wù)上下文,并加載當前所有的業(yè)務(wù)擴展插件;
2.10)開始執(zhí)行功能事件服務(wù),并開啟事件操作事務(wù);
2.11)判斷當前事件服務(wù)是否存在“執(zhí)行之前業(yè)務(wù)擴展插件”,如果存在,執(zhí)行所述“執(zhí)行之前業(yè)務(wù)擴展插件”;所述“執(zhí)行之前業(yè)務(wù)擴展插件”指的是需要在當前事件服務(wù)之前執(zhí)行的業(yè)務(wù)插件;
2.12)進入主事件處理器,調(diào)用實體數(shù)據(jù)存儲服務(wù);
2.13)進入實體數(shù)據(jù)存儲服務(wù),根據(jù)功能模型構(gòu)建實體數(shù)據(jù)操作SQL;
2.14)執(zhí)行實體數(shù)據(jù)操作SQL,并將操作結(jié)果返回給主事件處理器;
2.15)主事件處理器接收到返回的操作結(jié)果,對操作結(jié)果進行業(yè)務(wù)邏輯加工處理;
2.16)判斷當前事件服務(wù)是否存在“執(zhí)行之后業(yè)務(wù)擴展插件”,如果存在,執(zhí)行所述“執(zhí)行之后業(yè)務(wù)擴展插件”;所述“執(zhí)行之后業(yè)務(wù)擴展插件”指的是需要在當前事件服務(wù)之后執(zhí)行的業(yè)務(wù)插件;
2.17)提交當前事件服務(wù)的執(zhí)行事務(wù),并將當前操作返回給服務(wù)頒發(fā)器;
2.18)服務(wù)頒發(fā)器接收到功能事件服務(wù)的響應(yīng)結(jié)果,將響應(yīng)結(jié)果按原路由路徑返回給服務(wù)請求者。
進一步地,所述步驟1.6中的渲染方法具體為:
6.1)獲取終端設(shè)備類型;
6.2)根據(jù)終端設(shè)備的類型,選擇界面容器與控件類型;
6.3)根據(jù)終端設(shè)備屏幕的大小,計算容器呈現(xiàn)數(shù)值與百分比;
6.4)計算界面元素控件所在容器的位置及顯示狀態(tài);
6.5)將界面元素控件渲染為適應(yīng)終端設(shè)備的HTML標簽。
進一步地,所述步驟2.8中的操作事件包括查詢、刪除、保存事件。
進一步地,所述系統(tǒng)分為7層,從底層到頂層分別是:數(shù)據(jù)服務(wù)層、技術(shù)服務(wù)層、元模型服務(wù)層、功能組件層、業(yè)務(wù)組件層、服務(wù)總線層、界面層。
進一步地,所述數(shù)據(jù)服務(wù)層抽象目標業(yè)務(wù)系統(tǒng)的各類數(shù)據(jù)源,包括關(guān)系數(shù)據(jù)、非關(guān)系數(shù)據(jù);所述技術(shù)服務(wù)層封裝了平臺技術(shù)服務(wù)組件,直接向上層提供各類基礎(chǔ)服務(wù);所述元模型服務(wù)層對業(yè)務(wù)功能進行模型化描述,為功能組件提供元模型服務(wù);所述功能組件層對業(yè)務(wù)功能封裝,所述業(yè)務(wù)組件層描述業(yè)務(wù)系統(tǒng)一個完整的業(yè)務(wù)功能模塊,由一個或多個功能組件組合而成;所述服務(wù)總線層的業(yè)務(wù)功能是對外提供服務(wù)接口;所述界面層包括PC界面與移動界面。
本發(fā)明的有益效果包括:(1)解決各種終端個性化展現(xiàn)問題,并避免傳統(tǒng)開發(fā)平臺采用一種展現(xiàn)方式來適應(yīng)不同終端,體驗差、不靈活等問題,減少開發(fā)人員解決復(fù)雜UI與跨終端適應(yīng)適應(yīng)展現(xiàn)負擔。(2)解決業(yè)務(wù)功能的快速開發(fā)問題,并避免了傳統(tǒng)開發(fā)平臺對業(yè)務(wù)服務(wù)代碼難升級、難管控的問題。所有的核心基礎(chǔ)服務(wù)都有平臺提供,開發(fā)人員只要關(guān)注具體功能個性化業(yè)務(wù)處理邏輯編寫代碼,減少開發(fā)人員編寫業(yè)務(wù)服務(wù)的負擔。(3)本發(fā)明將軟件開發(fā)過程中的一些普遍關(guān)注點提煉出來,固化在平臺內(nèi)部,同時為調(diào)用者提供簡單清晰的接口,使得軟件的開發(fā)人員更多的將注意力放在客戶的需求分析上,而不用去過多的關(guān)注其他技術(shù)細節(jié)。借助雙引擎機制的開發(fā)平臺的支持,可以將單一的應(yīng)用軟件開發(fā)拆解前端交互層與后端的業(yè)務(wù)服務(wù)層,通過前后端分離,不但能夠大大提高軟件的開發(fā)效率,縮短開發(fā)的周期,而且還可以最大限度的發(fā)揮開發(fā)團隊中每一個成員的能力,使得團隊的結(jié)構(gòu)趨于合理化。
【附圖說明】
此處所說明的附圖是用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,但并不構(gòu)成對本發(fā)明的不當限定,在附圖中:
圖1是本發(fā)明快速軟件開發(fā)系統(tǒng)的技術(shù)架構(gòu)示意圖。
圖2是本發(fā)明運行過程示意圖。
圖3是本發(fā)明前端HTML5解析引擎的流程圖。
圖4是本發(fā)明后端功能模型解析引擎的流程圖。
【具體實施方式】
下面將結(jié)合附圖以及具體實施例來詳細說明本發(fā)明,其中的示意性實施例以及說明僅用來解釋本發(fā)明,但并不作為對本發(fā)明的限定。
本發(fā)明的基本思想是:在軟件開發(fā)的前端和后端使用不同的解析引擎進行開發(fā),并且使得兩個引擎可以互相配合和融合,增強代碼的通用性、易定制性和可維護性,從而達到軟件快速開發(fā)的目的。
參見附圖1,其示出了本發(fā)明快速軟件開發(fā)系統(tǒng)的技術(shù)架構(gòu),整個系統(tǒng)分成7層,從底層到頂層分別是:數(shù)據(jù)服務(wù)層、技術(shù)服務(wù)層、元模型服務(wù)層、功能組件層、業(yè)務(wù)組件層、服務(wù)總線層、界面層。
數(shù)據(jù)服務(wù)層抽象目標業(yè)務(wù)系統(tǒng)的各類數(shù)據(jù)源,包括關(guān)系數(shù)據(jù)、非關(guān)系數(shù)據(jù);
技術(shù)服務(wù)層封裝了平臺技術(shù)服務(wù)組件,直接向上層提供各類基礎(chǔ)服務(wù);
元模型服務(wù)層對業(yè)務(wù)功能進行模型化描述,為功能組件提供元模型服務(wù);
功能組件層對業(yè)務(wù)功能封裝,其中功能組件是一系列元組件的集合(查詢、列表、表單等),一個或多個功能組件(功能組件可以嵌套)構(gòu)成一個完整業(yè)務(wù)功能。元組件是組成功能組件的最小單位,可以是一個文本域或一個下拉框等;
業(yè)務(wù)組件層(業(yè)務(wù)庫)描述業(yè)務(wù)系統(tǒng)一個完整的業(yè)務(wù)功能模塊,通常由一個或多個功能組件組合而成;
服務(wù)總線層的業(yè)務(wù)功能是對外提供服務(wù)接口;
界面層包括PC界面與移動界面,解決業(yè)務(wù)系統(tǒng)多端交互界面。
在開發(fā)過程中,整個系統(tǒng)核心、建模管理工具、運行管理工具三者之間各司其職又有機結(jié)合,其運行機理描述如附圖2所示。首先,開發(fā)者通過模型管理工具定義業(yè)務(wù)模型,通過普通的開發(fā)IDE開發(fā)模型對應(yīng)的插件及引用業(yè)務(wù)系統(tǒng)UI模板。開發(fā)完成部署后,平臺引擎加載業(yè)務(wù)模型并進行模型驅(qū)動解析,在解析的過程中執(zhí)行相應(yīng)的應(yīng)用插件生成最終的業(yè)務(wù)系統(tǒng)。業(yè)務(wù)系統(tǒng)的用戶即可通過界面交互進行日常的業(yè)務(wù)操作,生成業(yè)務(wù)數(shù)據(jù)和系統(tǒng)的運行日志數(shù)據(jù)。運維人員可以通過運行管理工具監(jiān)視系統(tǒng)的運行情況,并通過系統(tǒng)控制參數(shù)對應(yīng)用系統(tǒng)的運行行為進行控制,對日志進行查看和管理。
參見附圖3,其示出了本發(fā)明雙引擎中的前端引擎的流程圖。該前端引擎用于基于元模型的HTML5解析引擎快速生成業(yè)務(wù)系統(tǒng)UI界面,能夠根據(jù)元模型自動生成標準的HTML5靜態(tài)業(yè)務(wù)界面模板,方便UI人員對界面進行美化調(diào)整,解決前端多屏(PAD端、PC端、移動端)適應(yīng)、復(fù)雜個性化頁面難定制等問題。
所述基于元模型的HTML5解析引擎,包括UI模型模塊、UI解析引擎模塊、UI容器模塊、UI控件模塊、UI渲染模塊。UI模型模塊調(diào)用后端業(yè)務(wù)界面模型服務(wù)接口,獲取具體業(yè)務(wù)功能界面模型信息。UI解析引擎模塊對業(yè)務(wù)界面元模型進行解析,輸出界面布局元模型與界面控件元模型。UI容器模塊用于完成業(yè)務(wù)界面容器初始化,UI控件模塊用于完成界面元素控件的初始化,輸出界面容器(容器中包括生成好的元素控件)。UI渲染模塊用于渲染生成適應(yīng)PC端的標準的HTML5頁面或移動端的HTML5頁面。
本發(fā)明的基于元模型的HTML5解析引擎的工作流程如下:
①獲取業(yè)務(wù)界面元模型信息;
②解析界面元模型信息,生成UI布局模型與元素控件模型;
③UI容器模塊根據(jù)容器模型信息,生成界面容器布局控件;
④解析引擎根據(jù)元素控件模型,調(diào)用UI控件模塊生成界面元素控件;
⑤將生成的界面元素控件逐一添加到界面容器布局控件中;
⑥調(diào)用UI渲染模塊,將界面容器布局控件渲染為適應(yīng)終端標準HTML5標簽。
⑦生成PC端或移動端業(yè)務(wù)界面的靜態(tài)HTML文件。
其中,步驟⑥中渲染為適應(yīng)終端標準HTML5標簽的方法具體為:
6.1)獲取終端設(shè)備類型;
6.2)根據(jù)終端設(shè)備的類型(PC端、移動端等),選擇界面容器與控件類型;
6.3)根據(jù)終端設(shè)備屏幕的大小,計算容器呈現(xiàn)數(shù)值與百分比;
6.4)計算界面元素控件所在容器的位置及顯示狀態(tài);
6.5)將界面元素控件渲染為適應(yīng)終端設(shè)備的HTML標簽。
參見附圖4,其示出了本發(fā)明雙引擎系統(tǒng)中的后端引擎的流程圖,該后端引擎用于提供基于MDA功能模型解析引擎及業(yè)務(wù)擴展插件機制的后端業(yè)務(wù)服務(wù)。該后端引擎包括元表模型模塊、功能模型模塊、應(yīng)用模型模塊、權(quán)限模型模塊、功能解析引擎、功能插件引擎。該后端引擎可以完成60%左右的通用性的業(yè)務(wù)功能開發(fā)任務(wù)。通過業(yè)務(wù)擴展插件機制可以完成一些個性化的業(yè)務(wù)邏輯編寫。解決了業(yè)務(wù)變更引起的代碼難升級、難維護、難規(guī)范以及靈活性差等問題。
本發(fā)明的后端引擎的工作流程如下:
①加載元表模型、應(yīng)用模型、功能模型、權(quán)限模型;
②初始化應(yīng)用模型并構(gòu)建應(yīng)用數(shù)據(jù)源;
③通過元表模型模塊完成物理業(yè)務(wù)表與業(yè)務(wù)模型屬性之間的映射;
④通過功能模型模塊完成業(yè)務(wù)功能處理邏輯模型的構(gòu)建,包括功能事件模型、功能服務(wù)模型、業(yè)務(wù)擴展模型;
⑤當接收到功能服務(wù)請求時,構(gòu)建服務(wù)請求上下文及服務(wù)頒發(fā)器;所述服務(wù)頒發(fā)器用于對功能服務(wù)請求進行路由和轉(zhuǎn)發(fā)。
⑥如果當前請求不合法,直接返回錯誤報文到請求者;
⑦如果請求合法,將請求路由到功能解析引擎服務(wù)器進行處理;
⑧功能解析引擎服務(wù)器接收功能服務(wù)(查詢、刪除、保存)等操作事件;
⑨根據(jù)服務(wù)操作事件類型構(gòu)建處理事務(wù)上下文,并加載當前所有的業(yè)務(wù)擴展插件;
⑩開始執(zhí)行功能事件服務(wù),并開啟事件操作事務(wù);
判斷當前事件服務(wù)是否存在“執(zhí)行之前業(yè)務(wù)擴展插件”,如果存在,執(zhí)行所述“執(zhí)行之前業(yè)務(wù)擴展插件”,然后進入下一步驟;所述“執(zhí)行之前業(yè)務(wù)擴展插件”指的是需要在當前事件服務(wù)之前執(zhí)行的業(yè)務(wù)插件。
進入主事件處理器,調(diào)用實體數(shù)據(jù)存儲服務(wù);
進入實體數(shù)據(jù)存儲服務(wù),根據(jù)功能模型構(gòu)建實體數(shù)據(jù)操作SQL;
執(zhí)行實體數(shù)據(jù)操作SQL,并將操作結(jié)果返回給主事件處理器;
主事件處理器接收到返回的操作結(jié)果,對操作結(jié)果進行業(yè)務(wù)邏輯加工處理;
判斷當前事件服務(wù)是否存在“執(zhí)行之后業(yè)務(wù)擴展插件”,如果存在,執(zhí)行所述“執(zhí)行之后業(yè)務(wù)擴展插件”,然后進入下一步驟;所述“執(zhí)行之后業(yè)務(wù)擴展插件”指的是需要在當前事件服務(wù)之后執(zhí)行的業(yè)務(wù)插件。
提交當前事件服務(wù)的執(zhí)行事務(wù),并將當前操作返回給服務(wù)頒發(fā)器;
服務(wù)頒發(fā)器接收到事件響應(yīng)結(jié)果,按原路由路徑返回給服務(wù)請求者。
以上所述僅是本發(fā)明的較佳實施方式,故凡依本發(fā)明專利申請范圍所述的構(gòu)造、特征及原理所做的等效變化或修飾,均包括于本發(fā)明專利申請范圍內(nèi)。