軟件行業(yè)企業(yè)管理信息系統(tǒng)(OurERP)是基于G4Studio平臺開發(fā)且作為G4Studio產(chǎn)品線一部分,專門為中小軟件企業(yè)量身定制開發(fā)的行業(yè)
ERP系統(tǒng)。OurERP將深入研究軟件生產(chǎn)工藝及過程質(zhì)量保障、IT項目管理理論,廣泛邀請業(yè)界各層人士參與分析設(shè)計,從中小軟件企業(yè)自身實際出發(fā)并結(jié)
合先進的軟件過程和IT項目管理理念,理論聯(lián)系實踐,打造一套蘊涵了先進管理思想和最佳管理實踐的適合中小軟件企業(yè)自己用的開源ERP系統(tǒng),以滿足和規(guī)范
引導(dǎo)中小軟件企業(yè)日常管理需求,解決IT項目管理難題,與G4Studio產(chǎn)品線部件一起讓中小軟件企業(yè)飛起來!
1.4.11.G4Stusio開發(fā)指南
《G4Studio開發(fā)指南》也就是本文檔,作為G4Studio官方唯一指定的權(quán)威參考文檔。
1.5.G4Studio技術(shù)架構(gòu)體系
1.5.1.G4Studio平臺技術(shù)架構(gòu)總體結(jié)構(gòu)圖
本節(jié)將從G4Studio底層技術(shù)架構(gòu)的靜態(tài)視角帶領(lǐng)大家一起走進G4Studio。如下圖2為G4Studio平臺技術(shù)架構(gòu)總體結(jié)構(gòu)圖。
關(guān)于上圖的一點說明(請結(jié)合圖中數(shù)字標(biāo)注閱讀):
①、
ExtJS作為G4Studio應(yīng)用富瀏覽器客戶端的主要組成部分。雖然ExtJS稍顯臃腫的體積和動態(tài)構(gòu)造Dom和渲染使得其在部分瀏覽器上(比如
IE,尤其是IE6)上的表現(xiàn)飽受爭議和詬病。但是輔以G4Studio平臺提供的壓縮和緩存技術(shù)以及一系列的優(yōu)化手段,G4Studio富客戶端不但能
在Intranet上完美表現(xiàn),而且在復(fù)雜不可控的Internet環(huán)境下也一樣能得到可接受范圍內(nèi)的性能表現(xiàn)。對于G4Studio客戶端雙兼容架構(gòu)之
一的富桌面客戶端通過HTTP協(xié)議和部署在遠端的業(yè)務(wù)服務(wù)組件進行通信并以Java原生系列化技術(shù)對數(shù)據(jù)傳輸對象進行系列化操作,不但能得到HTTP無限
穿越網(wǎng)絡(luò)防火墻的先天優(yōu)勢也能得到Java原生高性能系列化技術(shù)的支持。因此,G4Studio富桌面客戶端一樣能夠在Intranet和
Internet環(huán)境下有著卓越表現(xiàn)。
②、G4Studio借助Java先天跨平臺優(yōu)勢,使得基于G4Studio的應(yīng)用可以方便的部署到Windows、Linux、HP-Unix、IBM-AIX操作系統(tǒng)上。
③、G4Studio目前支持且經(jīng)過嚴格測試的服務(wù)器及版本為:Weblogic9.2(+)、Tomcat5.0(+)、Jetty6.0(+)、G4Server。
④、G4Studio目前支持的數(shù)據(jù)庫中間件及版本為:Oracle、Mysql5.0(+)、H2。
⑤、G4Studio提供了穩(wěn)定成熟的應(yīng)用框架和豐富完善的技術(shù)組件庫。在應(yīng)用框架的組合上,我們參考設(shè)計模式但不拘泥于設(shè)計模式,以實用、快速開發(fā)為目標(biāo)并結(jié)合平臺開發(fā)插件,使得G4Studio二次開發(fā)人員能夠非??焖俚拈_發(fā)出行業(yè)應(yīng)用功能模塊來。豐富完善的技術(shù)組件庫讓你在開發(fā)過程中碰到任何技術(shù)問題都有現(xiàn)成可靠的解決辦法,各種難題迎刃而解,徹底解放程序員,讓他們更多時間和精力關(guān)注和解決業(yè)務(wù)域的問題,創(chuàng)造更大更可觀的價值回報。
⑥、業(yè)務(wù)組件庫是基于G4Studio應(yīng)用框架和技術(shù)組件庫開發(fā)的一些平臺預(yù)置功能模塊。其中包括企業(yè)組織機構(gòu)能力模型參考實現(xiàn)、系統(tǒng)管理及權(quán)限模型參考實現(xiàn)、通用業(yè)務(wù)參考實現(xiàn)。
⑦、G4Studio平臺對業(yè)務(wù)建模、流程建模、業(yè)務(wù)重組集成、設(shè)計開發(fā)、運行測試、應(yīng)用部署整個生命周期都提供了不同程度的支持。
批注:上圖中虛線框部分為在G4Studio藍圖中但當(dāng)前版本未實現(xiàn)的部分。我們會在后續(xù)版本陸續(xù)推出。
1.5.2.G4Studio技術(shù)架構(gòu)層次調(diào)用圖
本節(jié)將從G4Studio層次調(diào)用和分層模型和調(diào)用的動態(tài)視角和大家一起走進G4Studio。如下圖3為G4Studio平臺技術(shù)架構(gòu)分層調(diào)用圖。
關(guān)于上圖的一點說明(請結(jié)合圖中數(shù)字標(biāo)注閱讀):
①、G4Studio平臺UI表現(xiàn)層同時支持富瀏覽器客戶端和富桌面客戶端兩種UI表現(xiàn)方案,且支持移動終端設(shè)備的數(shù)據(jù)接入和訪問。(G4Studio平臺目前版本沒有提供移動平臺開發(fā)框架,僅提供移動終端設(shè)備的數(shù)據(jù)訪問交互接口)
②、
控制邏輯層主要由Web過濾器和Struts-Action組成。接收瀏覽器客戶端請求,調(diào)用視圖服務(wù)層、業(yè)務(wù)模型服務(wù)層、數(shù)據(jù)訪問層來完成業(yè)務(wù)處理和數(shù)
據(jù)訪問以及頁面流程跳轉(zhuǎn),并將處理結(jié)果返回給瀏覽器客戶端。特別強調(diào):缺省情況下,控制邏輯層直接調(diào)用業(yè)務(wù)模型服務(wù)層完成業(yè)務(wù)邏輯處理;針對非事務(wù)類交
易,比如查詢交易,我們也可以在控制邏輯層使用數(shù)據(jù)讀取接口g4Reader直接和數(shù)據(jù)庫交互進行數(shù)據(jù)的讀取操作。
③、
視圖服務(wù)層是SOA架構(gòu)的擴展結(jié)構(gòu),解決與周邊軟件的互聯(lián)互通。它將業(yè)務(wù)模型服務(wù)層的商業(yè)邏輯組件進行包裝或重組后,以多種遠程服務(wù)的形式發(fā)布,對外暴露
服務(wù),提供給第三方系統(tǒng)或G4Studio平臺的Win32桌面客戶端調(diào)用。完成異構(gòu)系統(tǒng)之間的無縫集成和數(shù)據(jù)交互。特別強調(diào):試圖服務(wù)層只提供給
G4Studio平臺的Win32桌面客戶端以及第三方系統(tǒng)調(diào)用。對于大部分行業(yè)系統(tǒng)而言,不建議在控制邏輯層調(diào)用視圖服務(wù)層,而應(yīng)該跳過視圖服務(wù)層直接
調(diào)用業(yè)務(wù)模型服務(wù)層。
④、業(yè)務(wù)模型服務(wù)層完成對行業(yè)業(yè)務(wù)商業(yè)邏輯的封裝。提供給控制邏輯層或視圖服務(wù)層調(diào)用。
⑤、
數(shù)據(jù)訪問層提供和數(shù)據(jù)庫之間的數(shù)據(jù)訪問和對數(shù)據(jù)進行持久化。在G4Studio平臺中,我們?yōu)榱撕喕疍AO層的開發(fā),并沒有對數(shù)據(jù)訪問層進行獨立分層。在
G4studio平臺中,數(shù)據(jù)訪問層是一個邏輯層的概念,我們暴露了兩個數(shù)據(jù)訪問接口g4Reader和g4Dao。其中g(shù)4Reader數(shù)據(jù)訪問接口直
接和控制邏輯層耦合,完成非事務(wù)類查詢交易操作;g4Dao數(shù)據(jù)訪問接口直接和業(yè)務(wù)模型層耦合,完成事務(wù)類交易的數(shù)據(jù)訪問。
⑥、瀏覽器客戶端通過HTTP請求訪問控制邏輯層,完成數(shù)據(jù)采集、編碼轉(zhuǎn)換、安全認證等操作。
⑦、控制邏輯層可以訪問視圖服務(wù)層,但對于大部分的應(yīng)用系統(tǒng)而言,我們強烈建議控制邏輯層跳過視圖服務(wù)層,直接訪問業(yè)務(wù)模型服務(wù)層。
⑧、控制邏輯層調(diào)用業(yè)務(wù)模型服務(wù)層完成業(yè)務(wù)邏輯處理。
⑨、控制邏輯層直接調(diào)用數(shù)據(jù)訪問層的非事務(wù)類數(shù)據(jù)訪問接口進行查詢類交易處理。
⑩、視圖服務(wù)層調(diào)用業(yè)務(wù)模型服務(wù)層對其進行包裝或業(yè)務(wù)重組后發(fā)布為遠程服務(wù)組件。
⑾、業(yè)務(wù)模型服務(wù)層調(diào)用數(shù)據(jù)訪問層的事務(wù)類數(shù)據(jù)訪問接口進行數(shù)據(jù)持久化處理。
⑿、數(shù)據(jù)訪問層和數(shù)據(jù)庫之間的交互。
1.5.3.G4Studio技術(shù)架構(gòu)數(shù)據(jù)流圖
本節(jié)將從G4Studio平臺數(shù)據(jù)交互和流向的視角帶領(lǐng)大家一起走進G4Studio。如下圖4為G4Studio平臺技術(shù)架構(gòu)數(shù)據(jù)流向圖。
關(guān)于上圖的一點說明(請結(jié)合圖中數(shù)字標(biāo)注閱讀):
①、
瀏覽器通過HTTP以Form提交和請求參數(shù)提交的方式首先經(jīng)過平臺的編碼過濾器和安全認證器,然后將數(shù)據(jù)采集到控制邏輯器Action中,Action
將界面數(shù)據(jù)包裝為Dto后調(diào)用Dao進行數(shù)據(jù)查詢或調(diào)用業(yè)務(wù)服務(wù)組件BizService進行業(yè)務(wù)處理后將查詢結(jié)果集或業(yè)務(wù)處理返回結(jié)果序列化為JSON
對象通過HttpSerletResponse返回給瀏覽器客戶端。
②、
Action將界面采集的數(shù)據(jù)組裝為DTO對象后調(diào)用試圖服務(wù)ViewService。特別強調(diào):一般情況下,我們不走這條線。只有在系統(tǒng)的業(yè)務(wù)服務(wù)組件
要同時支持各種異構(gòu)客戶端接入的時候,出于接口統(tǒng)一的因素,我們才需要考慮瀏覽器客戶端是否要走這條線路。注意:并不是說有異構(gòu)客戶端接入時瀏覽器客戶端
就必須走這條路,而是如果為了要和其它客戶端保持統(tǒng)一的接入口時才需要在Action調(diào)用視圖服務(wù)。因為調(diào)用視圖服務(wù)和其它異構(gòu)客戶端保持一致接口是需要
付出性能代價的,具體情況得根據(jù)實際項目而定。
③、Action將界面采集的數(shù)據(jù)組裝為DTO對象后調(diào)用業(yè)務(wù)服務(wù)組件BizService進行業(yè)務(wù)處理,并將處理結(jié)果以DTO對象返回給Action。
④、針對一些非事務(wù)類的查詢操作,為了簡化DAO編程,我們可以在Action中將界面采集的查詢條件包裝為DTO對象后直接調(diào)用非事務(wù)類DAO查詢接口g4Reader,并將結(jié)果集以DTO、
JavaBean、ArrayList等類型的數(shù)據(jù)對象返回給Action。
⑤、業(yè)務(wù)服務(wù)組件BizService將相關(guān)業(yè)務(wù)數(shù)據(jù)組裝為DTO對象或者JavaBean后調(diào)用事務(wù)類DAO訪問接口g4Dao進行數(shù)據(jù)查詢、數(shù)據(jù)持久化和存儲過程調(diào)用操作。
⑦、數(shù)據(jù)訪問接口將DTO對象、JavaBean交給DAO實現(xiàn)將其映射為相應(yīng)的SQL語句向數(shù)據(jù)庫發(fā)出請求,并將數(shù)據(jù)庫返回的結(jié)果集映射為DTO、JavaBean、等數(shù)據(jù)類型對象返回給數(shù)據(jù)訪問接口調(diào)用端。
⑧、
對于桌面客戶端我們可以將其簡單分為2類。一類是使用G4Studio平臺提供的基于SWT/Jface圖形庫的富桌面客戶端開發(fā)框架開發(fā)出來的桌面客戶
端,對于這種客戶端而言,我們使用HttpInvoker技術(shù)直接通過http協(xié)議訪問視圖服務(wù)ViewService,相互之間可之間通過DTO或者其
它任意可系列化的Java對象來進行參數(shù)傳遞和數(shù)據(jù)交互。另一類是使用其它開發(fā)工具比如Delphi、VB、VC等開發(fā)出的桌面客戶端,對于這類桌面客戶
端發(fā)出的請求可以通過WebService使用Soap協(xié)議調(diào)用視圖服務(wù)組件,以系列化的XML資料格式進行數(shù)據(jù)交互。
⑨、對于移動終端設(shè)備,我們提供Webservice數(shù)據(jù)接入技術(shù)。
1.6.G4Studio第三方組件依賴關(guān)系
G4Studio平臺取得的成績,離不開大量的第三方開源組件的貢獻。也正式由于這些開源組件才成就了Java陣營開源社區(qū)百花齊放,欣欣向榮的大好景象。在平臺研發(fā)過程中,我們反復(fù)論證精選了一些成熟穩(wěn)定的開源組件應(yīng)用到G4Studio中來,如下圖5所示:G4Studio第三方組件依賴關(guān)系。在此,我們也像這些開源組件的作者表示由衷的感謝和敬意。提示:如下所示部分組件為商業(yè)不友好組件或收費組件,建議大家使用時根據(jù)自己項目實際情況酌情刪減或按照相應(yīng)組件的開源協(xié)議靈活使用。