曹 旻,汪 璐
(上海大學(xué)計算機工程與科學(xué)學(xué)院,上海 200072)
業(yè)務(wù)管理系統(tǒng)通常會將業(yè)務(wù)對象和規(guī)則融合在程序代碼中,這限制了系統(tǒng)的靈活性和可擴展性,因此,在傳統(tǒng)觀念中業(yè)務(wù)系統(tǒng)一直被認(rèn)為是龐大的、復(fù)雜的、不易理解的應(yīng)用程序,并且難以安裝、維護和升級[1]。
本文提出一種可擴展的業(yè)務(wù)對象建??蚣?Scalable Business Objects Modeling Framework,SBOMF),重點描述了該模型中業(yè)務(wù)要素的定義、設(shè)計和實現(xiàn)。SBOMF延續(xù)了基于組件架構(gòu)的理念,不單是功能模塊,包括業(yè)務(wù)實體都被視為系統(tǒng)中的組件。SBOMF采用基于組件的架構(gòu)可以有效地增加業(yè)務(wù)系統(tǒng)的靈活性,從而提高效能,達成敏捷開發(fā)高度定制的業(yè)務(wù)系統(tǒng)目標(biāo)。
隨著業(yè)務(wù)建模方法的發(fā)展進步,涌現(xiàn)出了大批業(yè)務(wù)建模語言和方法,如BPEL[2]、XPDL、Petri Net、MDA[3-5]和可視化業(yè)務(wù)模型[6]等。但這些語言和方法對于不太了解軟件編程的業(yè)務(wù)人員來說太艱深。SBOMF提出業(yè)務(wù)對象的概念,采用業(yè)務(wù)模型驅(qū)動(BMD)的理念[7],融合元模型[8-9]的抽象方法,設(shè)計可執(zhí)行的模型工具[10]。業(yè)務(wù)開發(fā)者只需要將業(yè)務(wù)邏輯映射到業(yè)務(wù)要素上,而將業(yè)務(wù)要素映射到中間語言乃至可執(zhí)行代碼的過程交給更專業(yè)的系統(tǒng)開發(fā)者來完成,再加上專有建模工具的輔助,大大降低了開發(fā)業(yè)務(wù)管理系統(tǒng)的門檻。
圖1顯示了SBOMF的架構(gòu)。最上層的工具包是提供給開發(fā)人員的界面,業(yè)務(wù)開發(fā)者通過工具包中的各種工具可視化地對業(yè)務(wù)、工作流、第三方組件等遵循模型定義進行建模,得到的對象描述被轉(zhuǎn)換為形式化語言后存儲在對應(yīng)的文件或數(shù)據(jù)庫中。SBOMF運行時對各種描述進行解析,產(chǎn)生具體的可執(zhí)行程序,運行在底層的操作系統(tǒng)和網(wǎng)絡(luò)上。

圖1 SBOMF架構(gòu)
SBOMF不局限于特定的操作系統(tǒng)和軟件環(huán)境,支持跨平臺的遷移,在圖1中,架構(gòu)最核心的部分是模型描述及其存儲分別用點劃線和虛線標(biāo)示。本文介紹業(yè)務(wù)要素模型及其描述的存儲實現(xiàn),第4節(jié)描述了所提出的業(yè)務(wù)要素模型,第5節(jié)介紹業(yè)務(wù)要素描述的存儲實現(xiàn)。
SBOMF從現(xiàn)實世界的實體中抽象出業(yè)務(wù)要素的概念,并進一步抽象成軟件對象進行實現(xiàn)。
“業(yè)務(wù)要素”是指信息系統(tǒng)中基本的信息單元,它可能是單據(jù)、訂單、合同、客戶、員工、崗位、活動、表格等。一個業(yè)務(wù)要素可以是原子的,也可以是復(fù)合的,如一份合同可由合同正文、標(biāo)的物列表和付款計劃構(gòu)成,這些構(gòu)成物稱為子業(yè)務(wù)要素。
SBOMF以業(yè)務(wù)要素作為其核心概念,活動、約束、顯示界面等作為其外延,這些概念之間相互聯(lián)系、相互作用,形成一個有機的整體。借用人工智能中的“本體”一詞含義,本體是共享的概念模型的形式化的規(guī)范說明,本文給出了如圖2所示的業(yè)務(wù)要素本體。SBOMF對業(yè)務(wù)要素等概念的定義,使得它與其他框架有了本質(zhì)區(qū)別。

圖2 SBOMF中的業(yè)務(wù)要素本體
基于面向?qū)ο蟮母拍?,業(yè)務(wù)要素的定義不僅要包括現(xiàn)實世界實體的屬性集合,還要包括實體的行為等。因此業(yè)務(wù)要素可以抽象地表示成一個五元組:

其中,P表示BOT的屬性,一個業(yè)務(wù)要素至少具備4個基本屬性:ID,名稱,類型,父業(yè)務(wù)要素,父業(yè)務(wù)要素屬性可以為空,即一個業(yè)務(wù)要素可以是原子的,也可以是由多個子業(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ì)到每個字段的名稱、代碼、類型,還包括每個字段的默認(rèn)值和約束條件;A表示BOT所具有的“活動”,是業(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ā)人員使用界面工具進行繪制,還可以只通過簡單的模板選擇投入使用,加快了系統(tǒng)開發(fā)的速度。一個模塊可以包含多個業(yè)務(wù)要素,即一個模塊的界面可對應(yīng)多個業(yè)務(wù)要素,而一個數(shù)據(jù)界面僅與一個業(yè)務(wù)要素相關(guān)聯(lián)。BOT的操作集合,T表示BOT的觸發(fā)器集合;R是指“約束”和“權(quán)限”等與業(yè)務(wù)要素相關(guān)的“業(yè)務(wù)規(guī)
SBOMF中所有個性化信息,都是以數(shù)據(jù)庫實體的形式持久化在數(shù)據(jù)庫中的,如圖1中虛線框所示,業(yè)務(wù)要素模型中涉及到的業(yè)務(wù)要素、活動和業(yè)務(wù)規(guī)則等概念對應(yīng)于其中的業(yè)務(wù)要素和詳細(xì)數(shù) 2類實體集。
SBOMF運行時包含解析相應(yīng)數(shù)據(jù)庫實體的代碼,保證描述的業(yè)務(wù)要素能夠真正實現(xiàn)。本節(jié)將論述SBOMF業(yè)務(wù)要素存儲表的設(shè)計方案。
本文在第4節(jié)描述業(yè)務(wù)要素模型時僅描述了業(yè)務(wù)要素的抽象概念,相當(dāng)于面向?qū)ο笏枷胫械念悾趯嶋H系統(tǒng)的實現(xiàn)中,還會涉及到對業(yè)務(wù)要素實例的存儲和操作,因此,在數(shù)據(jù)庫存儲表設(shè)計中使用ObjectType(業(yè)務(wù)要素類型)和 Objects(業(yè)務(wù)要素實例)2個名稱區(qū)分不同的概念。
圖3示意了SBOMF中業(yè)務(wù)要素及其相關(guān)概念的數(shù)據(jù)庫設(shè)計方案,這種方案不僅能夠描述業(yè)務(wù)要素,并且對業(yè)務(wù)要素中的易變部分(詳細(xì)數(shù)據(jù))也從結(jié)構(gòu)和數(shù)據(jù)兩方面做了描述,SBOMF運行時能夠通過讀取固定結(jié)構(gòu)的表(Fields表)內(nèi)容獲取不定結(jié)構(gòu)的表(詳細(xì)數(shù)據(jù)表)結(jié)構(gòu)信息,從而屏蔽業(yè)務(wù)對象的多樣性,實現(xiàn)了平臺代碼和業(yè)務(wù)邏輯的分離,從而保證系統(tǒng)的靈活性和可擴展性。

圖3 業(yè)務(wù)要素及其相關(guān)概念的數(shù)據(jù)庫實現(xiàn)
采用SBOMF框架實現(xiàn)提供的可視化業(yè)務(wù)建模工具,業(yè)務(wù)開發(fā)人員通過簡單的可視化界面設(shè)計和業(yè)務(wù)要素定義即可輕松實現(xiàn)業(yè)務(wù)功能的定制。所有定制信息都被存入數(shù)據(jù)庫中,當(dāng)最終用戶使用系統(tǒng)時,用戶交互程序從數(shù)據(jù)庫中讀取這些信息,通過解釋器轉(zhuǎn)化為窗口界面進行呈現(xiàn),最終用戶的使用體驗與使用直接編碼方式實現(xiàn)的系統(tǒng)基本一致。
本節(jié)將對比使用SBOMF和直接編碼2種方式實現(xiàn)相同功能所需的開發(fā)時間和完成后界面的加載時間,以說明SBOMF的優(yōu)勢和不足。
被選為測試案例的5個功能所涉及的控件個數(shù)和業(yè)務(wù)要素(直接編碼方式中是數(shù)據(jù)集)個數(shù)如表 1所示。測試結(jié)果如圖4、圖5所示,界面對象個數(shù)為界面上控件個數(shù)和業(yè)務(wù)要素個數(shù)的總和。

表1 測試功能所涉及的控件和業(yè)務(wù)要素

圖4 界面加載時間比較

圖5 功能開發(fā)時間比較
從以上數(shù)據(jù)可見,使用SBOMF開發(fā)的界面加載時間比直接編碼方式多,差別不大。但使用 SBOMF開發(fā)可以極大地縮短開發(fā)時間,降低對開發(fā)人員編程能力的要求。隨著功能的復(fù)雜化,使用SBOMF的開發(fā)時間增加基本是線性增長的,對于企業(yè)控制開發(fā)周期和開發(fā)進度更有利。
以業(yè)務(wù)要素概念為核心的SBOMF主要有如下特性:(1)通過SBOMF提供的工具包,業(yè)務(wù)開發(fā)人員不需要具有編程知識,只需要了解企業(yè)的業(yè)務(wù)邏輯即可開發(fā)業(yè)務(wù)管理系統(tǒng),使得業(yè)務(wù)要素的定制和修改變得簡單方便,有效杜絕了業(yè)務(wù)邏輯的語法錯誤,并且提高了企業(yè)開發(fā)項目的效率,極大地縮短了業(yè)務(wù)系統(tǒng)開發(fā)的周期。(2)可以提高系統(tǒng)的可擴展性。(3)它是完全可定制的,減少了重構(gòu)企業(yè)的業(yè)務(wù)流程的風(fēng)險。(4)可以在系統(tǒng)使用過程中在線添加和修改業(yè)務(wù)要素,平滑地升級系統(tǒng),降低數(shù)據(jù)遷移的風(fēng)險,能夠靈活地適應(yīng)業(yè)務(wù)邏輯的變化。(5)支持業(yè)務(wù)要素和界面的導(dǎo)入導(dǎo)出,最大限度實現(xiàn)對現(xiàn)有資源的重用,進一步縮短開發(fā)周期。今后將進一步充實和完善業(yè)務(wù)要素的SBOMF工具包,使業(yè)務(wù)開發(fā)人員和最終用戶有更自然的使用體驗。
[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è)計與BPEL實現(xiàn)[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].微計算機信息, 2009, 25(2-3): 57-61.
[8]金 碩, 何曉曄.概念模型元元模型初探[J].湖南科技學(xué)院學(xué)報, 2005, 26(11): 159-161.
[9]周 芳, 文必龍, 王守信, 等.基于元元模型的多維元數(shù)據(jù)管理研究與實現(xiàn)[J].計算機工程與應(yīng)用, 2006,42(10): 1797-1804.
[10]吳 菲.基于MOF的可執(zhí)行模型工具的研究與實現(xiàn)[D].長春: 吉林大學(xué), 2008.