曹 旻,汪 璐
(上海大學(xué)計(jì)算機(jī)工程與科學(xué)學(xué)院,上海 200072)
業(yè)務(wù)管理系統(tǒng)通常會(huì)將業(yè)務(wù)對(duì)象和規(guī)則融合在程序代碼中,這限制了系統(tǒng)的靈活性和可擴(kuò)展性,因此,在傳統(tǒng)觀念中業(yè)務(wù)系統(tǒng)一直被認(rèn)為是龐大的、復(fù)雜的、不易理解的應(yīng)用程序,并且難以安裝、維護(hù)和升級(jí)[1]。
本文提出一種可擴(kuò)展的業(yè)務(wù)對(duì)象建??蚣?Scalable Business Objects Modeling Framework,SBOMF),重點(diǎn)描述了該模型中業(yè)務(wù)要素的定義、設(shè)計(jì)和實(shí)現(xiàn)。SBOMF延續(xù)了基于組件架構(gòu)的理念,不單是功能模塊,包括業(yè)務(wù)實(shí)體都被視為系統(tǒng)中的組件。SBOMF采用基于組件的架構(gòu)可以有效地增加業(yè)務(wù)系統(tǒng)的靈活性,從而提高效能,達(dá)成敏捷開發(fā)高度定制的業(yè)務(wù)系統(tǒng)目標(biāo)。
隨著業(yè)務(wù)建模方法的發(fā)展進(jìn)步,涌現(xiàn)出了大批業(yè)務(wù)建模語(yǔ)言和方法,如BPEL[2]、XPDL、Petri Net、MDA[3-5]和可視化業(yè)務(wù)模型[6]等。但這些語(yǔ)言和方法對(duì)于不太了解軟件編程的業(yè)務(wù)人員來(lái)說(shuō)太艱深。SBOMF提出業(yè)務(wù)對(duì)象的概念,采用業(yè)務(wù)模型驅(qū)動(dòng)(BMD)的理念[7],融合元模型[8-9]的抽象方法,設(shè)計(jì)可執(zhí)行的模型工具[10]。業(yè)務(wù)開發(fā)者只需要將業(yè)務(wù)邏輯映射到業(yè)務(wù)要素上,而將業(yè)務(wù)要素映射到中間語(yǔ)言乃至可執(zhí)行代碼的過(guò)程交給更專業(yè)的系統(tǒng)開發(fā)者來(lái)完成,再加上專有建模工具的輔助,大大降低了開發(fā)業(yè)務(wù)管理系統(tǒng)的門檻。
圖1顯示了SBOMF的架構(gòu)。最上層的工具包是提供給開發(fā)人員的界面,業(yè)務(wù)開發(fā)者通過(guò)工具包中的各種工具可視化地對(duì)業(yè)務(wù)、工作流、第三方組件等遵循模型定義進(jìn)行建模,得到的對(duì)象描述被轉(zhuǎn)換為形式化語(yǔ)言后存儲(chǔ)在對(duì)應(yīng)的文件或數(shù)據(jù)庫(kù)中。SBOMF運(yùn)行時(shí)對(duì)各種描述進(jìn)行解析,產(chǎn)生具體的可執(zhí)行程序,運(yùn)行在底層的操作系統(tǒng)和網(wǎng)絡(luò)上。
圖1 SBOMF架構(gòu)
SBOMF不局限于特定的操作系統(tǒng)和軟件環(huán)境,支持跨平臺(tái)的遷移,在圖1中,架構(gòu)最核心的部分是模型描述及其存儲(chǔ)分別用點(diǎn)劃線和虛線標(biāo)示。本文介紹業(yè)務(wù)要素模型及其描述的存儲(chǔ)實(shí)現(xiàn),第4節(jié)描述了所提出的業(yè)務(wù)要素模型,第5節(jié)介紹業(yè)務(wù)要素描述的存儲(chǔ)實(shí)現(xiàn)。
SBOMF從現(xiàn)實(shí)世界的實(shí)體中抽象出業(yè)務(wù)要素的概念,并進(jìn)一步抽象成軟件對(duì)象進(jìn)行實(shí)現(xiàn)。
“業(yè)務(wù)要素”是指信息系統(tǒng)中基本的信息單元,它可能是單據(jù)、訂單、合同、客戶、員工、崗位、活動(dòng)、表格等。一個(gè)業(yè)務(wù)要素可以是原子的,也可以是復(fù)合的,如一份合同可由合同正文、標(biāo)的物列表和付款計(jì)劃構(gòu)成,這些構(gòu)成物稱為子業(yè)務(wù)要素。
SBOMF以業(yè)務(wù)要素作為其核心概念,活動(dòng)、約束、顯示界面等作為其外延,這些概念之間相互聯(lián)系、相互作用,形成一個(gè)有機(jī)的整體。借用人工智能中的“本體”一詞含義,本體是共享的概念模型的形式化的規(guī)范說(shuō)明,本文給出了如圖2所示的業(yè)務(wù)要素本體。SBOMF對(duì)業(yè)務(wù)要素等概念的定義,使得它與其他框架有了本質(zhì)區(qū)別。
圖2 SBOMF中的業(yè)務(wù)要素本體
基于面向?qū)ο蟮母拍?,業(yè)務(wù)要素的定義不僅要包括現(xiàn)實(shí)世界實(shí)體的屬性集合,還要包括實(shí)體的行為等。因此業(yè)務(wù)要素可以抽象地表示成一個(gè)五元組:
其中,P表示BOT的屬性,一個(gè)業(yè)務(wù)要素至少具備4個(gè)基本屬性:ID,名稱,類型,父業(yè)務(wù)要素,父業(yè)務(wù)要素屬性可以為空,即一個(gè)業(yè)務(wù)要素可以是原子的,也可以是由多個(gè)子業(yè)務(wù)要素復(fù)合而成的。如果用BOTs表示所有業(yè)務(wù)要素的集合,isSubBOT (x, y)表示業(yè)務(wù)要素x的“父業(yè)務(wù)要素”為y,則業(yè)務(wù)要素b的子業(yè)務(wù)要素集合可表示為subBOTsb={b b| bb ∈BOTs∧isSubBOT( b b, b )};D表示BOT的詳細(xì)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),詳細(xì)到每個(gè)字段的名稱、代碼、類型,還包括每個(gè)字段的默認(rèn)值和約束條件;A表示BOT所具有的“活動(dòng)”,是業(yè)務(wù)要素具備的所有“操作”和“觸發(fā)器”的集合:A={a| a∈O∨a∈ T},O表示則”:R={a| a ∈ C∨a∈J},C表示BOT的約束集合,J表示BOT的權(quán)限集合;U表示BOT的“數(shù)據(jù)界面”,這種附加到業(yè)務(wù)要素上的數(shù)據(jù)界面不僅可以和模塊的界面一樣由業(yè)務(wù)開發(fā)人員使用界面工具進(jìn)行繪制,還可以只通過(guò)簡(jiǎn)單的模板選擇投入使用,加快了系統(tǒng)開發(fā)的速度。一個(gè)模塊可以包含多個(gè)業(yè)務(wù)要素,即一個(gè)模塊的界面可對(duì)應(yīng)多個(gè)業(yè)務(wù)要素,而一個(gè)數(shù)據(jù)界面僅與一個(gè)業(yè)務(wù)要素相關(guān)聯(lián)。BOT的操作集合,T表示BOT的觸發(fā)器集合;R是指“約束”和“權(quán)限”等與業(yè)務(wù)要素相關(guān)的“業(yè)務(wù)規(guī)
SBOMF中所有個(gè)性化信息,都是以數(shù)據(jù)庫(kù)實(shí)體的形式持久化在數(shù)據(jù)庫(kù)中的,如圖1中虛線框所示,業(yè)務(wù)要素模型中涉及到的業(yè)務(wù)要素、活動(dòng)和業(yè)務(wù)規(guī)則等概念對(duì)應(yīng)于其中的業(yè)務(wù)要素和詳細(xì)數(shù) 2類實(shí)體集。
SBOMF運(yùn)行時(shí)包含解析相應(yīng)數(shù)據(jù)庫(kù)實(shí)體的代碼,保證描述的業(yè)務(wù)要素能夠真正實(shí)現(xiàn)。本節(jié)將論述SBOMF業(yè)務(wù)要素存儲(chǔ)表的設(shè)計(jì)方案。
本文在第4節(jié)描述業(yè)務(wù)要素模型時(shí)僅描述了業(yè)務(wù)要素的抽象概念,相當(dāng)于面向?qū)ο笏枷胫械念悾趯?shí)際系統(tǒng)的實(shí)現(xiàn)中,還會(huì)涉及到對(duì)業(yè)務(wù)要素實(shí)例的存儲(chǔ)和操作,因此,在數(shù)據(jù)庫(kù)存儲(chǔ)表設(shè)計(jì)中使用ObjectType(業(yè)務(wù)要素類型)和 Objects(業(yè)務(wù)要素實(shí)例)2個(gè)名稱區(qū)分不同的概念。
圖3示意了SBOMF中業(yè)務(wù)要素及其相關(guān)概念的數(shù)據(jù)庫(kù)設(shè)計(jì)方案,這種方案不僅能夠描述業(yè)務(wù)要素,并且對(duì)業(yè)務(wù)要素中的易變部分(詳細(xì)數(shù)據(jù))也從結(jié)構(gòu)和數(shù)據(jù)兩方面做了描述,SBOMF運(yùn)行時(shí)能夠通過(guò)讀取固定結(jié)構(gòu)的表(Fields表)內(nèi)容獲取不定結(jié)構(gòu)的表(詳細(xì)數(shù)據(jù)表)結(jié)構(gòu)信息,從而屏蔽業(yè)務(wù)對(duì)象的多樣性,實(shí)現(xiàn)了平臺(tái)代碼和業(yè)務(wù)邏輯的分離,從而保證系統(tǒng)的靈活性和可擴(kuò)展性。
圖3 業(yè)務(wù)要素及其相關(guān)概念的數(shù)據(jù)庫(kù)實(shí)現(xiàn)
采用SBOMF框架實(shí)現(xiàn)提供的可視化業(yè)務(wù)建模工具,業(yè)務(wù)開發(fā)人員通過(guò)簡(jiǎn)單的可視化界面設(shè)計(jì)和業(yè)務(wù)要素定義即可輕松實(shí)現(xiàn)業(yè)務(wù)功能的定制。所有定制信息都被存入數(shù)據(jù)庫(kù)中,當(dāng)最終用戶使用系統(tǒng)時(shí),用戶交互程序從數(shù)據(jù)庫(kù)中讀取這些信息,通過(guò)解釋器轉(zhuǎn)化為窗口界面進(jìn)行呈現(xiàn),最終用戶的使用體驗(yàn)與使用直接編碼方式實(shí)現(xiàn)的系統(tǒng)基本一致。
本節(jié)將對(duì)比使用SBOMF和直接編碼2種方式實(shí)現(xiàn)相同功能所需的開發(fā)時(shí)間和完成后界面的加載時(shí)間,以說(shuō)明SBOMF的優(yōu)勢(shì)和不足。
被選為測(cè)試案例的5個(gè)功能所涉及的控件個(gè)數(shù)和業(yè)務(wù)要素(直接編碼方式中是數(shù)據(jù)集)個(gè)數(shù)如表 1所示。測(cè)試結(jié)果如圖4、圖5所示,界面對(duì)象個(gè)數(shù)為界面上控件個(gè)數(shù)和業(yè)務(wù)要素個(gè)數(shù)的總和。
表1 測(cè)試功能所涉及的控件和業(yè)務(wù)要素
圖4 界面加載時(shí)間比較
圖5 功能開發(fā)時(shí)間比較
從以上數(shù)據(jù)可見,使用SBOMF開發(fā)的界面加載時(shí)間比直接編碼方式多,差別不大。但使用 SBOMF開發(fā)可以極大地縮短開發(fā)時(shí)間,降低對(duì)開發(fā)人員編程能力的要求。隨著功能的復(fù)雜化,使用SBOMF的開發(fā)時(shí)間增加基本是線性增長(zhǎng)的,對(duì)于企業(yè)控制開發(fā)周期和開發(fā)進(jìn)度更有利。
以業(yè)務(wù)要素概念為核心的SBOMF主要有如下特性:(1)通過(guò)SBOMF提供的工具包,業(yè)務(wù)開發(fā)人員不需要具有編程知識(shí),只需要了解企業(yè)的業(yè)務(wù)邏輯即可開發(fā)業(yè)務(wù)管理系統(tǒng),使得業(yè)務(wù)要素的定制和修改變得簡(jiǎn)單方便,有效杜絕了業(yè)務(wù)邏輯的語(yǔ)法錯(cuò)誤,并且提高了企業(yè)開發(fā)項(xiàng)目的效率,極大地縮短了業(yè)務(wù)系統(tǒng)開發(fā)的周期。(2)可以提高系統(tǒng)的可擴(kuò)展性。(3)它是完全可定制的,減少了重構(gòu)企業(yè)的業(yè)務(wù)流程的風(fēng)險(xiǎn)。(4)可以在系統(tǒng)使用過(guò)程中在線添加和修改業(yè)務(wù)要素,平滑地升級(jí)系統(tǒng),降低數(shù)據(jù)遷移的風(fēng)險(xiǎn),能夠靈活地適應(yīng)業(yè)務(wù)邏輯的變化。(5)支持業(yè)務(wù)要素和界面的導(dǎo)入導(dǎo)出,最大限度實(shí)現(xiàn)對(duì)現(xiàn)有資源的重用,進(jìn)一步縮短開發(fā)周期。今后將進(jìn)一步充實(shí)和完善業(yè)務(wù)要素的SBOMF工具包,使業(yè)務(wù)開發(fā)人員和最終用戶有更自然的使用體驗(yàn)。
[1]Jackson J.ERP Meets SOA[EB/OL].(2007-03-01).http://gcn.com/articles/2007/03/01/erp-meets-soa.aspx.
[2]褚文永, 姚 青.基于消息的可變業(yè)務(wù)流程模型的設(shè)計(jì)與BPEL實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究, 2010, 27(7): 2549-2582.
[3]MDA Guide[EB/OL].(2003-05-11).http://www.omg.org/mda/.
[4]OMG Model Driven Architecture[EB/OL].(2011-07-21).http://www.omg.org/mda/.
[5]Frankel D S.Model Driven Architecture: Applying MDA to Enterprise Computing[M].[S.l.]: John Wiley & Sons,2003.
[6]Mens T, Demeyer S, Janssens D, et al.Formalizing Refactorings with Graph Transformations[J].Journal of Software Maintenance and Evolution: Research and Practice, 2005, 17(4): 247-276.
[7]高 洪, 王未央, 楊 斌.基于組件的業(yè)務(wù)模型的研究與設(shè)計(jì)[J].微計(jì)算機(jī)信息, 2009, 25(2-3): 57-61.
[8]金 碩, 何曉曄.概念模型元元模型初探[J].湖南科技學(xué)院學(xué)報(bào), 2005, 26(11): 159-161.
[9]周 芳, 文必龍, 王守信, 等.基于元元模型的多維元數(shù)據(jù)管理研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用, 2006,42(10): 1797-1804.
[10]吳 菲.基于MOF的可執(zhí)行模型工具的研究與實(shí)現(xiàn)[D].長(zhǎng)春: 吉林大學(xué), 2008.