摘 要: 介紹了基于SOA技術(shù)快速構(gòu)建OA,、MIS類項(xiàng)目的開發(fā)平臺,,該平臺使用簡單、高效,,支持界面圖形化操作,,使得開發(fā)過程更簡潔、代碼編寫更少,、開發(fā)效率更高,。使用該平臺建設(shè)系統(tǒng)對開發(fā)人員要求很低,方便二次開發(fā)和快速響應(yīng)用戶的需求變更,,可節(jié)省企業(yè)人力成本,。
關(guān)鍵詞: SOA;HMVC,;快速開發(fā)平臺,;MIS
隨著信息化的發(fā)展,越來越多的日常人為手動處理的工作由電腦系統(tǒng)完成,,因此OA,、MIS系統(tǒng)得到了廣泛的應(yīng)用,。隨之而來的是各方面需求量的不斷增加,快速開發(fā)平臺就是為了高效地開發(fā)此類系統(tǒng)而產(chǎn)生的,??焖匍_發(fā)平臺幾乎是以零代碼量來開發(fā)系統(tǒng),使系統(tǒng)建設(shè)者更加快捷,、高效地實(shí)現(xiàn)MIS系統(tǒng)的同時,,使用者可以更加靈活、多樣地對系統(tǒng)進(jìn)行調(diào)整,,同時滿足了不同層次的需求,。
1 快速開發(fā)平臺設(shè)計(jì)
本快速開發(fā)平臺基于SOA架構(gòu),采用分層結(jié)構(gòu)設(shè)計(jì),,包括信息表示層(已配置的業(yè)務(wù)系統(tǒng)),、信息展示層(建立的業(yè)務(wù)系統(tǒng)),、業(yè)務(wù)對象層,、持久層(聲明式服務(wù)對象),采用微內(nèi)核,、元模型,、插件體系、總線集成的體系結(jié)構(gòu),。該平臺實(shí)現(xiàn)了組織機(jī)構(gòu),、工作流、報表,、業(yè)務(wù)規(guī)則,、組織機(jī)構(gòu)權(quán)限和用戶界面的完全可視化設(shè)計(jì),提供豐富的組件庫和業(yè)務(wù)模板,,實(shí)現(xiàn)了可視化建模和代碼開發(fā)的完美結(jié)合,;支持順序、并行,、同步,、異步、分支,、合并,、循環(huán)、終止,、回退,、轉(zhuǎn)交、通知,、子流程,、批處理等所有業(yè)務(wù)工作流模式,提供完全可視化的流程建模環(huán)境,集流程圖設(shè)計(jì),、業(yè)務(wù)規(guī)則定制和運(yùn)行跟蹤于一體,;創(chuàng)新的元模型處理體系,完全可視化的界面設(shè)計(jì)工具,,提供前所未有的Web交互頁面設(shè)計(jì)體驗(yàn),。多樣的布局模式、豐富的界面組件,、強(qiáng)大的頁面向?qū)?,使開發(fā)人員幾乎不用寫代碼便可開發(fā)出復(fù)雜的業(yè)務(wù)應(yīng)用界面[1]。開發(fā)平臺系統(tǒng)結(jié)構(gòu)如圖1所示,。
?。?)信息表示層
應(yīng)用程序運(yùn)行配置完成的應(yīng)用以及用來作為配置管理的核心應(yīng)用,例如多租戶配置等,。信息表示層是本系統(tǒng)平臺的UI(用戶界面)部分,,此UI部分采用層疊式MVC模式(如圖2所示),將客戶端應(yīng)用程序分解為有層次的父子關(guān)系的MVC,。反復(fù)應(yīng)用這個模式,,形成結(jié)構(gòu)化的客戶端架構(gòu)。這樣把界面分成了多個部分,,降低了依賴性,,同時提高了代碼、組件或者模塊的重用度,,在日后的維護(hù)中,,提高了可擴(kuò)展性。
?。?)邏輯層
邏輯層與UI層是松耦合的,,邏輯層實(shí)現(xiàn)的核心是聲明式業(yè)務(wù)對象[2],主要通過以下幾種方式進(jìn)行:①聲明式業(yè)務(wù)對象的服務(wù)可以通過業(yè)務(wù)對象總線進(jìn)行互操作,;②聲明式業(yè)務(wù)對象的粒度可大可小,,可以是一個實(shí)體表,也可以是一個較大的業(yè)務(wù)模塊,;③服務(wù)可以調(diào)用多個規(guī)則,,規(guī)則本身可以根據(jù)上下文環(huán)境判斷是否可以執(zhí)行,從而完成復(fù)雜的業(yè)務(wù)邏輯而無需編碼,;④服務(wù)可以調(diào)用腳本或JavaClass完成平臺不能配置或不易配置的業(yè)務(wù)邏輯,。邏輯層主要包含了各類插件及中間處理組件,系統(tǒng)為SOA架構(gòu)(如圖3所示),,其主要目的是: ①使總線成為業(yè)務(wù)對象之間共享數(shù)據(jù),、交換數(shù)據(jù)的唯一媒介,;②總線的生命周期是Session,即從用戶會話開始到用戶會話結(jié)束數(shù)據(jù)總線是一貫和連續(xù)的,;③數(shù)據(jù)總線是線程獨(dú)享的,、線程安全的,一個線程對數(shù)據(jù)總線的改變不會影響到其他線程對數(shù)據(jù)總線的使用,,每個線程使用的都是總線的副本,。
數(shù)據(jù)總線包括Form、User總線等[3],。Form的類型是BOInstance,。使用Form實(shí)現(xiàn)對HTTP GET的QueryString的封裝或?qū)TTP POST數(shù)據(jù)的封裝,它同時可以充當(dāng)界面上Form的值,,也可以是通過AJAX方式傳遞的參數(shù),;User的類型是BOInstance,通過Form對登錄用戶封裝,,User在登錄自定義動作里進(jìn)行創(chuàng)建,;通過MVCController操作總線,為了減少調(diào)用次數(shù),,總線和面板操作及服務(wù)操作放在一起進(jìn)行,。元模型層面提供對WebService的支持,即平臺中每個服務(wù)都是可被調(diào)用的Restful WebService,。
(3)持久層
持久層提供了各類服務(wù)組件和可擴(kuò)展的組件,,將各類服務(wù)以組件的方式進(jìn)行封裝,,包括組織權(quán)限、數(shù)據(jù)庫訪問,、國際化等,,擴(kuò)展組件包括WebService和Restfull等接口的實(shí)現(xiàn),充分發(fā)揮了平臺的靈活性,。其中,,數(shù)據(jù)庫訪問組件的建立包含了多種方式不同數(shù)據(jù)庫的連接,支持多種不同的連接方式,。
2 快速開發(fā)平臺實(shí)現(xiàn)
該平臺由操作人員通過管理界面的配置來達(dá)到項(xiàng)目開發(fā)的目的,,基本是零代碼量來開發(fā)系統(tǒng)。配置界面的主要功能有控制器,、工作流管理,、組織定義管理、數(shù)據(jù)庫管理,、圖標(biāo)使用,、數(shù)據(jù)字典等,。由于篇幅關(guān)系,重點(diǎn)詳解控制器類的實(shí)現(xiàn),。
?。?)控制器管理。平臺中界面展示都是通過各種控制器控制輸出的,。傳統(tǒng)的MVC模式,,一個界面對應(yīng)一個控制器,其界面與控制器是粗粒度的,,這也是傳統(tǒng)MVC模式在復(fù)用方面無法做到更細(xì)更深層次的一個根本原因,。本系統(tǒng)采用多層次的HMVC模式,使得界面層能夠?qū)崿F(xiàn)從粗粒度到細(xì)粒度的靈活復(fù)用,,即從比較大的界面區(qū)域到最細(xì)粒度的界面元素都能夠得到良好的復(fù)用支持,。控制器主要包括面板控制器,、表格控制器,、表格元素控制器、功能樹控制器和菜單控制器5類,??刂破鞯慕⒅饕侵高@5類元素的建立和搭配,元素的建立都是通過配置界面進(jìn)行的,,用戶只需要了解業(yè)務(wù)流程即可,,不需要進(jìn)行任何代碼的編寫??刂破鞯膶?shí)現(xiàn)如圖4所示,,主要由MVCControl類實(shí)現(xiàn),DOFormBean類進(jìn)行業(yè)務(wù)對象的組織,,通過DoViewTemplat模板類進(jìn)行展示,,BIOIstence類是服務(wù)總線類,Session類進(jìn)行服務(wù)總線生命周期的控制,,CacheMem是加載的系統(tǒng)默認(rèn)配置數(shù)據(jù)[2,,4]。
?。?)工作流管理,。本平臺工作流的建立是在可視化操作界面通過拖拽的方式進(jìn)行的。本平臺同時提供了請假流程的用例,,以方便用戶熟悉工作流的建立,。主要通過流程模板、模板變量,、節(jié)點(diǎn),、業(yè)務(wù)數(shù)據(jù)這幾個關(guān)鍵部分進(jìn)行協(xié)調(diào)工作,。
(3)組織定義管理,。本系統(tǒng)對組織結(jié)構(gòu)進(jìn)行高層抽象,,每一個類型的組織結(jié)構(gòu)(如部門、員工,、集團(tuán)公司,、事業(yè)部等)都可以注冊為Parter。組織結(jié)構(gòu)可以增加,、刪除,、替換,所以平臺的組織結(jié)構(gòu)是靈活,、可擴(kuò)展的,。用戶只需簡單的設(shè)置,就可以擁有自己的組織權(quán)限管理功能,。
?。?)數(shù)據(jù)源管理。在數(shù)據(jù)源中存儲了所有建立數(shù)據(jù)庫連接的信息,。就像通過指定文件名可以在文件系統(tǒng)中找到文件一樣,,通過提供正確的數(shù)據(jù)源名稱,可以找到相應(yīng)的數(shù)據(jù)庫連接,。平臺提供了3種連接數(shù)據(jù)庫的方式:(1)JNDI方式,。數(shù)據(jù)庫的連接信息存儲在SEVLET容器或應(yīng)用程序服務(wù)器中(如Tomcat、Weblogic,、Websphere等),,由其提供數(shù)據(jù)庫的連接池。推薦用這種方式,。(2)直接JDBC連接。數(shù)據(jù)庫連接信息存儲在平臺中,,每次數(shù)據(jù)庫訪問都會請求一次數(shù)據(jù)庫連接,。(3)平臺提供的數(shù)據(jù)庫連接池。數(shù)據(jù)庫連接信息存儲在平臺中,,與JDBC唯一不同的是“服務(wù)器初始化”選擇“是”,。數(shù)據(jù)庫訪問會從平臺提供的數(shù)據(jù)庫連接池請求連接。
3 快速開發(fā)平臺建立項(xiàng)目的步驟
應(yīng)用快速開發(fā)平臺可以方便地建立各類應(yīng)用項(xiàng)目,,主要分為以下幾步:(1)分析需要建立項(xiàng)目的需求,,明確業(yè)務(wù)需求的業(yè)務(wù)對象;(2)建立工程,;(3)選擇數(shù)據(jù)源,,可以選擇不同地址及類型的數(shù)據(jù)庫,;(4)建立數(shù)據(jù)對象,數(shù)據(jù)對象的建立可以在頁面上逐步錄入,,也可點(diǎn)擊導(dǎo)入已有的建立庫表的語句,;(5)數(shù)據(jù)初始化,根據(jù)對象,,初始化數(shù)據(jù),、組織權(quán)限及業(yè)務(wù)表數(shù)據(jù);(6)系統(tǒng)配置,、初始化完成后,,工程名的子菜單會顯示出所建立的對象名稱,每一個對象下面對應(yīng)的有面板和服務(wù),,面板就是對象展示的方式,,服務(wù)就是對象的處理邏輯,用戶可以根據(jù)業(yè)務(wù)需求進(jìn)入不同的頁面進(jìn)行修改和配置,;(7)發(fā)布工程,,系統(tǒng)配置完成后,點(diǎn)擊界面上的“發(fā)布工程”,,系統(tǒng)自動完成新建工程的部署,。
通過以上幾步配置,就能夠輕松地實(shí)現(xiàn)穩(wěn)定的MIS系統(tǒng),,幾乎是零代碼編寫量,,可以根據(jù)業(yè)務(wù)的變動隨時方便地進(jìn)行配置調(diào)整,極大地提高了開發(fā)效率,,降低了開發(fā)成本,。
本文簡要闡述了快速開發(fā)平臺的架構(gòu)、功能和實(shí)現(xiàn)方式,,將主流的框架集成于本平臺中,,為用戶呈現(xiàn)一個高效、穩(wěn)定,、可復(fù)用,、低耦合、通用,、功能齊全并且用戶體驗(yàn)良好的套件產(chǎn)品,。通過平臺的集成能力,化繁為簡,,從而提高了開發(fā)效率,,讓軟件工程師將主要精力放在最核心的業(yè)務(wù)邏輯上,而非寫一堆POJO類或頁面導(dǎo)航的配置文件這類工作中,?;诜?wù),,快速實(shí)現(xiàn)業(yè)務(wù)需求。IT的服務(wù),、流程直接反映了業(yè)務(wù)經(jīng)營的狀況,,服務(wù)、流程的管理和監(jiān)控為業(yè)務(wù)績效的改進(jìn)提供了巨大的可能性,,它可以告訴工程技術(shù)人員在流程的哪些地方存在改進(jìn)的空間,,并為改進(jìn)業(yè)務(wù)績效提供直接的信息支持。
參考文獻(xiàn)
[1] 顏元,,武岳山.多標(biāo)簽快速識別算法研究與改進(jìn)[J].電子技術(shù)應(yīng)用,,2012,38(1):81-84.
[2] 王紫瑤.SOA核心技術(shù)及應(yīng)用[M].北京:電子工業(yè)出版社,,2008.
[3] NEWCOMER E,, LOMOW G. Understanding SOA with Web Services[M]. 徐涵,譯.北京:電子工業(yè)出版社,,2006.
[4] JENDROCK E,, EVANS L, GOLLAPUDI D,, et al. The Java EE 6 tutorial: basic concepts(Fourth Edition)[M]. 李鵬,,韓智,譯.北京:人民郵電出版社,,2012.