1 綜述
企業(yè)資源計劃(ERP:EntERPrise Resource Planning)系統(tǒng)集信息技術(shù)與先進的管理思想于一身,實現(xiàn)了對企業(yè)的采購,生產(chǎn)。銷售,分析,決策的全面管理,已經(jīng)成為當前信息化企業(yè)管理的基礎(chǔ)。以ERP軟件系統(tǒng)為基礎(chǔ),企業(yè)能夠及時準確的收集數(shù)據(jù),分析經(jīng)營狀況、財務(wù)狀況,提高管理的效率。
隨著企業(yè)管理理念的變化,當前ERP軟件系統(tǒng)不僅要實現(xiàn)對企業(yè)供應(yīng)鏈資源的全面管理,還要完成上下游企業(yè)協(xié)同工作的管理,為了實現(xiàn)這些功能,現(xiàn)在的ERP軟件系統(tǒng)的規(guī)模一般比較龐大,例如金蝶K3 Wise 12.0標準版有八萬個以上的頁面組成。此外,ERP軟件系統(tǒng)還有大量的復(fù)雜的業(yè)務(wù)邏輯需要處理。
傳統(tǒng)的軟件開發(fā)流程是先根據(jù)需求確定各個模塊的功能,然后分別對每個界面上的所有元素進行設(shè)計,最后對界面的邏輯功能進行編碼實現(xiàn)。對每個界面,及界面上的每個元素都需要單獨進行設(shè)計和編碼。界面上任何功能的調(diào)整,都需要對整個代碼進行重新編譯和發(fā)布。系統(tǒng)的開發(fā)效率很低,發(fā)布成本很高。
ERP軟件系統(tǒng)的大量頁面需求與頁面開發(fā)的低效率產(chǎn)生了矛盾。傳統(tǒng)的開發(fā)模式已經(jīng)不能滿足現(xiàn)代大型ERP軟件開發(fā)的需求。為了解決這個問題,金蝶公司將領(lǐng)域模型應(yīng)用到ERP軟件建模中,提出了ERP動態(tài)領(lǐng)域模型的概念。
2 領(lǐng)域模研究現(xiàn)狀
領(lǐng)域模型是對領(lǐng)域內(nèi)的概念類或現(xiàn)實世界中對象的可視化表示。它專注于分析問題領(lǐng)域本身,發(fā)掘重要的業(yè)務(wù)領(lǐng)域概念,并建立業(yè)務(wù)領(lǐng)域概念之間的關(guān)系。
在進行領(lǐng)域建模時,一般先根據(jù)業(yè)務(wù)分析得到一個名詞列表,然后對名詞列表進一步抽象,確定業(yè)務(wù)對象實體及實體間的關(guān)系。業(yè)務(wù)對象實體要不僅反映目前的經(jīng)營實體,還要給需求分析人員和系統(tǒng)功能提供了一定的擴展視野。接著,從業(yè)務(wù)實體集合中抽象業(yè)務(wù)模型,建立問題域的概念。最后。用使用UML提供的方法和圖例進行領(lǐng)域模型設(shè)計、確定模型之間的關(guān)系。
中國科學(xué)院計算技術(shù)研究所的王宇等阿通過機器學(xué)習(xí)方法對信息抽取過程進行領(lǐng)域建模,實現(xiàn)了互聯(lián)網(wǎng)信息挖掘的研究。
吉林大學(xué)的王曉燕等既使用領(lǐng)域模型捕獲系統(tǒng)業(yè)務(wù)的靜態(tài)需求,描述領(lǐng)域內(nèi)業(yè)務(wù)對象之間的靜態(tài)關(guān)系,建立一套軟件開發(fā)框架。
華中科技大學(xué)的黃靖等通過擴展FODA(Feature-Oriented Domain Analysis)方法,將實時特征作為實時應(yīng)用需求空間的一階實體來認識和組織實時應(yīng)用系統(tǒng)領(lǐng)域模型。
可以發(fā)現(xiàn)這些研究是以靜態(tài)領(lǐng)域模型為基礎(chǔ),以名詞列表為最小分析對象,因此業(yè)務(wù)對象實體的粒度較大,模型的通用性不高。
3 ERP軟件建模的現(xiàn)狀
ERP系統(tǒng)作為一類重要的應(yīng)用軟件系統(tǒng),真有自己的特點,主要有兩個方面:
①系統(tǒng)規(guī)模大,目前市場上常見的ERP系統(tǒng)一般都有幾百個頁面。
②頁面邏輯相似性強。經(jīng)過比較可以發(fā)現(xiàn),大部分ERP頁面具有類似的功能,以數(shù)據(jù)的錄入,修改,顯示為主。
結(jié)合ERP系統(tǒng)的這兩個方面的特點,國內(nèi)外多個組織進行了系統(tǒng)建模的研究,希望能夠提高ERP系統(tǒng)的開發(fā)效率和軟件質(zhì)量。
合肥工業(yè)大學(xué)的吳冒等川提出了一種基于元模型的業(yè)務(wù)建模方法。對WFMC工作流過程定義元模型進行改進.擴展出了一個從組織、功能、信息、資源和過程五個個側(cè)面對ERP業(yè)務(wù)進行描述的領(lǐng)域元模型。
哈爾濱理工大學(xué)的高長元等結(jié)合集成化企業(yè)建模和DEM的思想,設(shè)計了面向制造業(yè)ERP的企業(yè)建模框架,并對其中的視圖維、生命周期維、通用層次維以及它們之間的關(guān)系進行了詳細設(shè)計。
重慶工學(xué)院的王柯柯等網(wǎng)在分析UML建模特點的基礎(chǔ)上,提出了使用統(tǒng)一建模語言UML對ERP系統(tǒng)建模。
這些ERP建模方法在其特定的環(huán)境下,部分解決了ERP軟件建模的問題。但這些建模方法還是基于粗粒度的實體進行研究的,不能實現(xiàn)動態(tài)的構(gòu)建和解析。
4 ERP動態(tài)領(lǐng)域建模
ERP系統(tǒng)規(guī)模龐大,除了要設(shè)計大量的頁面外,還有復(fù)雜的工作流程,業(yè)務(wù)邏輯等需要處理。如果對每個功能模塊分別進行設(shè)計、實現(xiàn),必然造成開發(fā)效率低下,開發(fā)成本高的問題。
領(lǐng)域建模作為一種有效的應(yīng)用建模方法,可以方便的將應(yīng)用項目需求轉(zhuǎn)化為計算機軟件模型。但傳統(tǒng)的領(lǐng)域建模研究對象的粒度較大,不能靈活適應(yīng)動態(tài)變化的需求。
金蝶公司在分析ERP系統(tǒng)特點的基礎(chǔ)上,進一步細化領(lǐng)域模型的對象實體,提出了ERP動態(tài)領(lǐng)域模型的概念,較好的解決了ERP軟件開發(fā)中的一系列問題。
4.1傳統(tǒng)的領(lǐng)域模型
構(gòu)建領(lǐng)域模型一般包括如下四個步驟:
①根據(jù)業(yè)務(wù)分析列出系統(tǒng)中的名詞列表。
②對名詞列表進行抽象,得到對象實體。
③從業(yè)務(wù)實體集合中抽象業(yè)務(wù)模型,建立問題域的概念。
④使用UML提供的方法和圖例進行領(lǐng)域模型設(shè)計、確定模型之間的關(guān)系。
確定對象實體是整個領(lǐng)域建模的核心問題,對象實體的抽象層次決定了最終的領(lǐng)域模型。
針對ERP系統(tǒng),使用傳統(tǒng)的領(lǐng)域建模理論有如下兩種選擇對象實體的方法。
①選取ERP應(yīng)用的對象作為對象實體,例如:原材料、供應(yīng)商、皮付款、中間件、產(chǎn)品、經(jīng)銷商、應(yīng)收款等,使用這種領(lǐng)域模型能夠很好的分析系統(tǒng)的各種需求。但是這種方法沒有抓住不同業(yè)務(wù)模塊(頁面,工作流等)的共有特性,軟件設(shè)計必然是以單個業(yè)務(wù)模塊為單位。
②先使用第一種領(lǐng)域建模得到單個業(yè)務(wù)模塊的概要設(shè)計,然后以此為基礎(chǔ),根據(jù)不同模塊的特點,將相似的模塊歸類,以相似的模塊作為領(lǐng)域模型的實體對象。
這種方法得到的領(lǐng)域模型的對象實體是模塊級的,界面設(shè)計是以頁面組為單位,相似的多個頁面可以共用一個模型作為母板,比第一種方法有較大的改進。但是如果界面上的元素或操作發(fā)生變化,就必須重新設(shè)計界面模型,修改代碼。不能實現(xiàn)界面在部署環(huán)境的按需動態(tài)構(gòu)建。
4.2動態(tài)領(lǐng)域建模框架
金蝶公司的技術(shù)人員在傳統(tǒng)的粗粒度的領(lǐng)域模型的基礎(chǔ)上,以模塊上的基本元素為研究對象,提出了ERP動態(tài)領(lǐng)域模型的概念。
動態(tài)領(lǐng)域建模由模型庫,領(lǐng)域模型,領(lǐng)域模型動態(tài)解釋引擎三個部分組成。如圖l所示。
圖1 動態(tài)領(lǐng)域建模框架
先根據(jù)多個ERP系統(tǒng)分別進行抽象,得到多組基本對象實體。然后對這些對象實體再進一步抽象,得到模型庫(包括通用的元模型庫和特定行業(yè)的定制的專用模型庫)。接著使用這些模型元素構(gòu)建ERP系統(tǒng)的功能模塊,當需要加載某個模塊時,使用動態(tài)解釋引擎將設(shè)計好的功能轉(zhuǎn)換為內(nèi)存中的映射。
模型庫被封裝成動態(tài)鏈接庫的形式提供給開發(fā)人員使用,動態(tài)解釋引擎將設(shè)計好的功能轉(zhuǎn)換為內(nèi)存中的映射。開發(fā)人員可以使用Silverlight,JSP等多種形式將內(nèi)存中的映射展示給用戶。系統(tǒng)具有很好的跨平臺性和兼容性。
4.3領(lǐng)域元模型
領(lǐng)域元模型是進行動態(tài)領(lǐng)域建模的基礎(chǔ)。金蝶公司結(jié)合80萬家ERP客戶的最佳實踐,建立了一套完整的ERP領(lǐng)域元模型。
結(jié)合ERP系統(tǒng)的特點,ERP動態(tài)領(lǐng)域模型包括模型——元素——屬性三層體系結(jié)構(gòu)。
圖2 三層領(lǐng)域模型結(jié)構(gòu)圖
模型對應(yīng)于ERP系統(tǒng)中模塊的種類。例如頁面,工作流,電子報表,算法等。每一類有自己獨特的特點,需要使用不同的方法進行設(shè)計。
針對ERP系統(tǒng)中常見的功能模塊,建立了界面模型、工作流模型、算法模型等十多種ERP領(lǐng)域模型,如圖3所示。并根據(jù)部分特定行業(yè)的特殊要求,定制的一些專用元模型。
圖3 ERP動態(tài)領(lǐng)域模型
ERP領(lǐng)域模型確定了模塊的大的分類.粒度較大,還需要進一步細化。針對一個個具體的基本元素進行研究。
例如一個典型的頁面的由菜單、文本輸入框、時間輸入框、列表、顯示信息等多個控件組成。每一種控件可以看作是一個基本元素,圖4是一個典型的頁面包含的元素示意圖。
圖4頁面元素示意圖
在一個頁而上相同種類的控件可能會有很多個,它們顯示的內(nèi)容和格式都可能不同。例如,一個應(yīng)收單上有兩個文本輸入框,一個要輸入應(yīng)收金額,一個要輸入收款單位。應(yīng)收金額只能輸入數(shù)字,長度20個像素。收款單位可以輸入中文和英文,長度100個像素。
在金蝶ERP動態(tài)領(lǐng)域模型中,元素的差異性使用元素的屬性來表示。每個元素都有多個可以動態(tài)修改的屬性。例如文本框有類型、長度、高度、綁定的數(shù)據(jù)庫字段等多種屬性。
除了頁面外,ERP系統(tǒng)中常見的多種功能模塊,也都使用類似的方法進行分析,得到元模型。
例如工作流由多個動作及連線組成。可以分別抽象成元模型。動作的具體操作、執(zhí)行者、條件等都作為該元模型的屬性。設(shè)計一個業(yè)務(wù)流程模式后,改變動作的屬性值可以根據(jù)需要設(shè)計出不同的業(yè)務(wù)流程。
再例如。設(shè)計電子報表時。在不同的場景下需要不同的計算公式,傳統(tǒng)的方法是將具體的公式作為程序代碼的一部分,這就增加了修改和維護的難度。使用動態(tài)領(lǐng)域建模的方法,將公式定義為一種元模型,具體的公式表達武作為該元素的屬性值。可以在不需要修改代碼的前提下,得到各種滿足需要的公式。
4.4基于動態(tài)領(lǐng)域模型的業(yè)務(wù)模塊設(shè)計
經(jīng)過以上的步驟,元模型數(shù)據(jù)就確定了。所有的這些元模型數(shù)據(jù)的定義都是抽象的。與具體的業(yè)務(wù)邏輯無關(guān)的。
要使用領(lǐng)域元模型來設(shè)計具體的業(yè)務(wù)模塊,先要以領(lǐng)域元模型為基礎(chǔ)建立一個業(yè)務(wù)模塊設(shè)計平臺。這里不詳細介紹該平臺的建立過程。
業(yè)務(wù)模塊設(shè)計平臺建立后,可以使用該平臺來進行具體的業(yè)務(wù)模塊的設(shè)計。
業(yè)務(wù)模塊的設(shè)計分為以下幾個步驟:
①確定模塊的需求。
②使用設(shè)計平臺提供的環(huán)境,使用領(lǐng)域元素進行模塊設(shè)計。
③分別指定各領(lǐng)域元素的屬性,完成模塊的特定需求。
④將設(shè)計好的模塊保存為XML文件,以備調(diào)用。
作為一個典型的例子,使用動態(tài)領(lǐng)域模型設(shè)計一個具體的頁面的步驟如下:
①確定該頁面要完成的功能(需求)。
②將選定的基本元素(文本輸入欄,列表,菜單,按鈕等)放置到頁面上。
③設(shè)定各元素的屬性。不同的頁面元素對應(yīng)不同的屬性值。屬性值可能是頁面元素的位置,長度等外觀信息,也可能是校驗規(guī)則,數(shù)據(jù)庫字段等邏輯信息,也可能是操作等控制信息。
④將頁面上的所有元素及它們的屬性保存到XML文件中。
4.5模塊設(shè)計的繼承和組合
前面提到了使用領(lǐng)域建模的基本元素進行模塊設(shè)計的過程。該過程是從基本元素開始的。
ERP系統(tǒng)中的模塊很多,而且很多模塊有一定的相似之處,如果能夠利用設(shè)計好的模塊來簡化其他模塊的設(shè)計將大大提高系統(tǒng)的開發(fā)效率。在動態(tài)領(lǐng)域模型中,使用繼承和組合兩個方法來實現(xiàn)這個功能。
繼承就是先使用基本元素設(shè)計好一個模塊。然后以這個設(shè)計好的模塊為基礎(chǔ),增加,修改,刪除部分元素,或修改部分元素的屬性值來完成新的模塊的設(shè)計。
圖5 模塊繼承
被繼承的模塊的修改將引起子模塊的自動修改。
使用繼承的方法設(shè)計模塊,將得到兩個XML文件。一個是被繼承的模塊的XML文件,一個是子模塊的差量XML文件。差量XML只保存子模塊相對干被繼承模塊修改的部分。
組合是先使用基本元素設(shè)計好一個模塊。然后將這個設(shè)計好的模塊作為新的模塊的一個組成部分來完成新的模塊的設(shè)計。
圖6 模塊組合
一個新的模塊可以包含多個設(shè)計好的模塊。并且可以修改所包含的模塊。例如新的模塊A包含設(shè)計好的模塊B和C。可以根據(jù)需要修改為包含模塊C和D。被包含的模塊的修改將引起最終模塊的自動修改。
采用組合方法設(shè)計模塊時,將得到多個XML文件,分別為被包含模塊的XML文件和最終模塊的XML文件。修改被包含模塊的XML文件將直接引起最終模塊功能的變化。
4.6領(lǐng)域模型動態(tài)解釋引擎
經(jīng)過以上的步驟,ERP系統(tǒng)中的模塊(包括頁面。業(yè)務(wù)流程。報表等)以XML文件的形式保存了起來,當要加載模塊時,需要將XML文件轉(zhuǎn)換為模塊在內(nèi)存中的映射,這部分工作由動態(tài)解釋引擎負責(zé)。圖7是動態(tài)解釋引擎的示意圖。
圖7動態(tài)解釋引擎示意圖
動態(tài)解釋引擎由展示層,服務(wù)層,內(nèi)核層組成。當XML文檔輸入解釋引擎后,內(nèi)核層讀取元模型數(shù)據(jù)解析XML文檔,并將結(jié)果交給服務(wù)層。服務(wù)層將解析結(jié)果封裝成可以在網(wǎng)絡(luò)中傳輸?shù)腏SON數(shù)據(jù)包,并發(fā)送到展示層。展示層收到JSON數(shù)據(jù)包后。使用不同的方式晨示綺用戶。具體說明如下:
內(nèi)核層:負責(zé)根據(jù)存儲的元模型數(shù)據(jù)動態(tài)解析模塊XML文檔。模塊的種類不向,解析時使用的模型也不同。動態(tài)頁面,報表等顯示類的模塊與業(yè)務(wù)流程等處理類模塊處理方式有較大的不同。服務(wù)層:將內(nèi)核層處理的結(jié)果組裝成模塊在內(nèi)存的映射。動態(tài)頁面,報表等顯示類的模塊轉(zhuǎn)化為可以在網(wǎng)絡(luò)傳輸?shù)腏SON數(shù)據(jù)包。業(yè)務(wù)流程等模塊中的自動動作將直接執(zhí)行,需要與用戶交互的動作將轉(zhuǎn)化為JSON數(shù)據(jù)包。
展示層:由一系列標準的UI控件組成,根據(jù)服務(wù)層返回的結(jié)果進行窗體控件動態(tài)創(chuàng)建并接受用戶數(shù)據(jù)輸入,完成系統(tǒng)與用戶的交互。不同的模塊給用戶展示的方式不同。
4.7模塊設(shè)計的擴展
使用前面介紹的基于動態(tài)領(lǐng)域建模的模塊設(shè)計方法可以完成大部分模塊的設(shè)計工作。但是可能還有一些模塊的特殊功能無法實現(xiàn),這部分功能使用插件的方法來實現(xiàn)。
例如在業(yè)務(wù)流程設(shè)計時。系統(tǒng)內(nèi)置了大量的動作,但如果要執(zhí)行特殊的沒有內(nèi)置的功能,就需要定義新的動作,必須使用插件來實現(xiàn)。
插件的設(shè)計也是基于動態(tài)領(lǐng)域模型的。每一種元素在系統(tǒng)中有相應(yīng)的基類和一系列虛方法。插件就是在這些基類和虛方法及基礎(chǔ)上通過繼承的方法來擴充基本元素的功能。
一個基本元素可以定義多個插件,實現(xiàn)多種擴充,具體進行模塊設(shè)計時,通過將合適的插件在模塊上注冊的方法實現(xiàn)不同的擴充。
將插件在系統(tǒng)中注冊后,在解析時,將使用插件中定義的類和方法覆蓋系統(tǒng)中的基類和虛方法,從而在不改變平臺的基礎(chǔ)上擴充功能。
5 實現(xiàn)
經(jīng)過大量金蝶人的共同努力,已經(jīng)成功的將動態(tài)領(lǐng)域建模應(yīng)用到了ERP軟件建模中。
金蝶公司結(jié)合80萬家ERP客戶的最佳實踐,抽象出10多種ERP領(lǐng)域模型、365種基本元素、7000多個元素屬性、上百個業(yè)務(wù)邏輯構(gòu)件,并以此為基礎(chǔ),設(shè)計一個BOS(Business Operating system)系統(tǒng)。作為模型設(shè)計器和模型動態(tài)解釋引擎。BOS系統(tǒng)已經(jīng)在金蝶ERP系統(tǒng)開發(fā)中得到了應(yīng)用。
使用動態(tài)領(lǐng)域建模后,ERP系統(tǒng)開發(fā)變成了在BOS平臺上界面的設(shè)計,幾乎不需要修改任何代碼,而且可以很好地保持界面質(zhì)量的一致性。經(jīng)過簡單的培訓(xùn),實施顧問和最終用戶都可以配置出專業(yè)的ERP應(yīng)用,、
將動態(tài)領(lǐng)域建模技術(shù)應(yīng)用到ERP應(yīng)用系統(tǒng)開發(fā)后,開發(fā)效率大幅上升,系統(tǒng)的可遷移性得到了顯著提高。采用這種技術(shù)前,90%的精力花費在具體頁面的設(shè)計上,無法專注與ERP業(yè)務(wù)流程的設(shè)計。采用動態(tài)領(lǐng)域建模技術(shù)啟,頁面開發(fā)的時問降低為10%。開發(fā)人員90%的精力關(guān)注業(yè)務(wù)邏輯設(shè)計和系統(tǒng)建模。從而可以開發(fā)出更加適合企業(yè)需求的產(chǎn)品。
另一方面,采用新的技術(shù)后,系統(tǒng)開發(fā)的難度大幅下降,新員工經(jīng)過簡單培訓(xùn)就可以開始工作。同時。由于減少了代碼修改的數(shù)量,系統(tǒng)的質(zhì)量也得到了大幅提高。
6 結(jié)論
動態(tài)領(lǐng)域建模是對模型驅(qū)動架構(gòu)MDA似(Model Driven Architecture)一設(shè)計思想一種擴展。金蝶公司在ERP動態(tài)領(lǐng)域建模方面進行了大量的探索和實踐,經(jīng)過3000家以上平臺客戶實踐,抽象出獨特的標準、行業(yè)、伙伴、客戶的多層次開發(fā)模型。能夠支持成果組合應(yīng)用與平滑升級,形成平臺批量交付能力。
動態(tài)領(lǐng)域模型具有以下幾方面的優(yōu)勢:
①可以大幅提高了ERP系統(tǒng)的設(shè)計和開發(fā)效率,有效提升軟件產(chǎn)品的質(zhì)量。
②獨特的模型解釋系統(tǒng),設(shè)計出來的產(chǎn)品具有良好的動態(tài)性。
③微內(nèi)核架構(gòu)設(shè)計,模型可持續(xù)發(fā)展,是一個能夠自我學(xué)習(xí)和自動進行行業(yè)知識積累的智慧無模型系統(tǒng)。
④技術(shù)無關(guān)性,適應(yīng)IT技術(shù)發(fā)展變化。
基于動態(tài)領(lǐng)域模型的設(shè)計方法可以推廣到其他類似的大型軟件系統(tǒng)中,具有較高的理論和應(yīng)用價值。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.guhuozai8.cn/
本文標題:ERP動態(tài)領(lǐng)域模型
本文網(wǎng)址:http://www.guhuozai8.cn/html/consultation/1082066186.html