|
我一直在從事企業(yè)信息管理系統(tǒng)的開(kāi)發(fā),目前的產(chǎn)品擁有了數(shù)百個(gè)企業(yè)客戶(hù),作為企業(yè)管理信息系統(tǒng),最大的挑戰(zhàn)是如何滿(mǎn)足不同企業(yè)通用需求的同時(shí)快速滿(mǎn)足企業(yè)個(gè)性化需求,除了企業(yè)戰(zhàn)略、組織架構(gòu)、流程體系等緊密相關(guān)外,軟件的平臺(tái)化水平,可擴(kuò)展性和靈活性至關(guān)重要。有一句話(huà)很經(jīng)典:“最好的架構(gòu)師是能夠在軟件開(kāi)發(fā)所涉及的諸多內(nèi)部因素和外部因素尋求最佳的平衡”。一個(gè)高度平臺(tái)化的系統(tǒng),對(duì)高可擴(kuò)展性和靈活性是非常關(guān)注的,今天我想討論如何滿(mǎn)足企業(yè)信息管理系統(tǒng)的擴(kuò)展性和靈活性。這個(gè)話(huà)題涉及的內(nèi)容太多了,我只是在做產(chǎn)品和項(xiàng)目過(guò)程中談?wù)勎业捏w會(huì),希望對(duì)大家有一些參考價(jià)值。
(1)高可擴(kuò)展性和靈活性的系統(tǒng)一般是分層架構(gòu)的,這里說(shuō)的分層是指將客戶(hù)的需求按需求的通用性分層。根據(jù)自己平臺(tái)所應(yīng)用的目標(biāo)客戶(hù)群,分析客戶(hù)的共性需求,將共性部分的需求放在平臺(tái)的最底層實(shí)現(xiàn),所有的客戶(hù)共用,不要有分支版本,個(gè)性的需求放在高層實(shí)現(xiàn),不同的客戶(hù)可以完全定制。至于整個(gè)架構(gòu)的層次數(shù)量沒(méi)有絕對(duì)的標(biāo)準(zhǔn),可參考的方法分為4層,“公共平臺(tái)層”、“產(chǎn)品平臺(tái)層”、“行業(yè)擴(kuò)展層”、“個(gè)性擴(kuò)展層”。這里的分層與軟件架構(gòu)中的表示層、中間層、持久層的分發(fā)屬于不同的維度,是沒(méi)有沖突的。
(2)高可擴(kuò)展性和靈活性的系統(tǒng)一般是模塊化的。系統(tǒng)最好提供統(tǒng)一的主板插件體系,每一層都應(yīng)該提供若干插槽,通過(guò)二次開(kāi)發(fā)的手段供上層擴(kuò)展,做項(xiàng)目多了一般都會(huì)形成組件庫(kù),應(yīng)該對(duì)這些組件進(jìn)行分類(lèi)分級(jí)管理。一旦有了新的項(xiàng)目,一般從現(xiàn)有的組件庫(kù)中挑選進(jìn)行配置,部分不滿(mǎn)足要求的可以進(jìn)行修改后滿(mǎn)足,其他個(gè)性化很強(qiáng)的完全定制。
(3)高可擴(kuò)展性和靈活的系統(tǒng)一般都支持?jǐn)?shù)據(jù)建模。許多人理解系統(tǒng)可擴(kuò)展就是指系統(tǒng)提供API,可以二次開(kāi)發(fā),其實(shí)這種理解不全面。數(shù)據(jù)結(jié)構(gòu)是企業(yè)信息管理系統(tǒng)很重要的一部分,是否可以方便支持?jǐn)?shù)據(jù)結(jié)構(gòu)的擴(kuò)展非常重要,我們的經(jīng)驗(yàn)是提供圖形化的數(shù)據(jù)建模模塊,可以自動(dòng)生成數(shù)據(jù)庫(kù)的表結(jié)構(gòu),同時(shí)將數(shù)據(jù)庫(kù)的結(jié)構(gòu)也保存為元數(shù)據(jù),通過(guò)解析元數(shù)據(jù)可實(shí)現(xiàn)數(shù)據(jù)的對(duì)象關(guān)系映射,而不依賴(lài)于硬編碼。一般采用了數(shù)據(jù)建模的系統(tǒng)將數(shù)據(jù)進(jìn)行對(duì)象化統(tǒng)一管理,這樣的好處是統(tǒng)一風(fēng)格,也容易實(shí)現(xiàn)。 因?yàn)橛辛嗽P停梢詣?dòng)態(tài)生成部分用戶(hù)界面,減少用戶(hù)界面開(kāi)發(fā)工作量。
(4)高可擴(kuò)展性和靈活的系統(tǒng)一般都支持流程建模。不同企業(yè)的業(yè)務(wù)流程是千變?nèi)f化的,所以需要提供業(yè)務(wù)流程建模模塊,可以用圖形化的方式定義企業(yè)的業(yè)務(wù)流程,依賴(lài)業(yè)務(wù)流程的驅(qū)動(dòng)完成流程的自動(dòng)化。流程建模中涉及的“活動(dòng)”(理解為節(jié)點(diǎn))除了標(biāo)準(zhǔn)的之外,也要求是可以自定義的,比如流程中某個(gè)節(jié)點(diǎn)可以控制生產(chǎn)設(shè)備的啟動(dòng)和停止。流程中另外一塊是控制邏輯,包括線(xiàn)性、分支、循環(huán)、并發(fā)等。流程一般需要人的參與,所以與任務(wù)管理是緊密相關(guān)的,可能會(huì)涉及集成email,手機(jī)短信實(shí)現(xiàn)自動(dòng)通知等。流程中流轉(zhuǎn)的數(shù)據(jù)可能也與流程的執(zhí)行過(guò)程相關(guān),比如請(qǐng)假單大于15天,流程可能執(zhí)行另外的分支。
(5)還有一個(gè)需要說(shuō)明的是狀態(tài)模型。一般數(shù)據(jù)對(duì)象都有多個(gè)狀態(tài),比如訂單就有未發(fā)貨、已發(fā)貨、已到貨等狀態(tài),不同狀態(tài)下可執(zhí)行的操作也是不同的,不同的狀態(tài)下的權(quán)限也會(huì)有差別,比如已發(fā)布的圖紙就應(yīng)該是不可修改的,即使有修改權(quán)。對(duì)象的狀態(tài)模型一般是和流程緊密相關(guān)的,一般流程的執(zhí)行過(guò)程會(huì)改變數(shù)據(jù)的狀態(tài),比如請(qǐng)假單批準(zhǔn)以后,請(qǐng)假單的狀態(tài)改為“已批準(zhǔn)”。狀態(tài)的定義以及狀態(tài)的變遷過(guò)程可以定義為狀態(tài)圖,只有有連線(xiàn)的兩個(gè)狀態(tài)之間才允許狀態(tài)的躍遷。綜上所述,一般按數(shù)據(jù)類(lèi)型定義狀態(tài)圖,不同的狀態(tài)有不同的操作和權(quán)限,一般依賴(lài)于各種操作或流程改變對(duì)象的狀態(tài)。
(6)權(quán)限模型最好也可以擴(kuò)展。不同的數(shù)據(jù)類(lèi)型通常有一些共同的權(quán)限項(xiàng),比如瀏覽、修改、刪除等,也應(yīng)該有一些特有的權(quán)限,比如用戶(hù)就有“修改密碼”權(quán)限項(xiàng),用以控制一些特別的操作。應(yīng)該支持自定義的權(quán)限項(xiàng),不同的類(lèi)型授權(quán)時(shí)權(quán)現(xiàn)項(xiàng)不同。一般權(quán)限的判斷算法比較復(fù)雜,一般不要求可以自定義,主要是因?yàn)樾阅艿脑颉?quán)限的授予一般也有粒度要求,最小的按單個(gè)個(gè)體授權(quán),最大的按類(lèi)型授權(quán),另外一種建議的方式是采用類(lèi)似文件夾的形式對(duì)數(shù)據(jù)進(jìn)行管理,可以提供按目錄授權(quán)的方式,這樣就更加靈活了。
(7)還有個(gè)重要的就是報(bào)表。不同的類(lèi)型都應(yīng)該可以自定義報(bào)表,不同的角色可以看到不同的報(bào)表。最好建立報(bào)表的框架,開(kāi)發(fā)一個(gè)新的報(bào)表以后,通過(guò)簡(jiǎn)單的配置,不依賴(lài)于修改代碼,就可以通過(guò)系統(tǒng)訪(fǎng)問(wèn)到報(bào)表。報(bào)表的各種操作,比如是否可以打印都可以借助配置實(shí)現(xiàn),也可以借助權(quán)限體系實(shí)現(xiàn)。
(8)還有一點(diǎn)需要提到的是主菜單和主頁(yè)。企業(yè)中不同的角色都希望只看到與自己工作相關(guān)的功能。這就需要可以按角色自定義主菜單和主頁(yè),主頁(yè)的自定義可以采用Web part的方法,用戶(hù)可以選擇自己需要的Web part,添加到主頁(yè)上,通過(guò)拖拖拉拉擺放成需要的方式。
最后簡(jiǎn)要總結(jié)一下,一個(gè)系統(tǒng)的可擴(kuò)展性和靈活性應(yīng)該是多方面的,包括了分層結(jié)構(gòu)、模塊化、數(shù)據(jù)建模、流程建模、報(bào)表定制、主菜單和主頁(yè)定制,甚至還包括權(quán)限體系的擴(kuò)展等方面。當(dāng)然還包括硬件方面的,如何在高并發(fā)和海量數(shù)據(jù)情況下實(shí)現(xiàn)硬件的可伸縮性,還可以采用集群、緩存、云計(jì)算等技術(shù)。當(dāng)然真正要構(gòu)建高擴(kuò)展性和靈活性的系統(tǒng)難度是很大的,通常都會(huì)遇到諸如性能問(wèn)題,當(dāng)然我一直最求的一句話(huà)“在這樣那樣的要求下尋求最好的平衡”,大部分問(wèn)題是可以解決的。
it知識(shí)庫(kù):企業(yè)級(jí)信息管理系統(tǒng)的高可擴(kuò)展性和靈活性,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。