《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于動(dòng)態(tài)模型的系統(tǒng)架構(gòu)及建模平臺(tái)實(shí)現(xiàn)
基于動(dòng)態(tài)模型的系統(tǒng)架構(gòu)及建模平臺(tái)實(shí)現(xiàn)
2015年電子技術(shù)應(yīng)用第2期
郝 俊,常 青,張 剛,王耀力
太原理工大學(xué) 信息工程學(xué)院,山西 太原030024
摘要: 傳統(tǒng)的基于靜態(tài)模型的系統(tǒng)開(kāi)發(fā)方法難以解決業(yè)務(wù)規(guī)則的快速擴(kuò)展及變更帶來(lái)的資源浪費(fèi)等問(wèn)題,工作流支持對(duì)工作內(nèi)容進(jìn)行良好的劃分,并進(jìn)行具體部署。結(jié)合SOA架構(gòu)的業(yè)務(wù)流程再造能力,提出一種新的以三層模型為核心的支持快速、平滑、可重用的應(yīng)用系統(tǒng)開(kāi)發(fā)架構(gòu),對(duì)流程引擎和建模平臺(tái)完成詳細(xì)描述和設(shè)計(jì),完成建模平臺(tái)搭建工作,并以卡銀行業(yè)務(wù)為例進(jìn)行了基于三層模型的建模。結(jié)果表明,該系統(tǒng)開(kāi)發(fā)架構(gòu)具有很好的業(yè)務(wù)流程再造能力,可保證業(yè)務(wù)系統(tǒng)的持續(xù)穩(wěn)定,達(dá)到提高生產(chǎn)組織水平和工作效率的目的。
中圖分類號(hào): TP311.5
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)02-0171-03
A new workflow system architecture and modeling platform
Hao Jun,Chang Qing,Zhang Gang,Wang Yaoli
College of Information and Engineering,Taiyuan University of Technology, Taiyuan 030024,China
Abstract: The traditional approach to systems development based on the static model is difficult to solve the waste of resources caused by the rapid expansion and change of business rules and other issues. Workflow supports for the work of good content division and specific deployment. Combining with business process reengineering capabilities of SOA architecture, this paper puts forward a new development framework with three-tier model as the core to support fast, smooth and reusable application, completes the detailed description and design of process modeling platform and the engine, completes construction work of modeling platform, and realizes modeling with banking card as an example and based on the three-tier model. The results show that the system development framework has good ability BPR, ensures sustainable and stable of business systems, and improves the level production and work efficiency of organization.
Key words : three-tier model;application system architecture;modeling platform;SOA;workflow

  

0 引言

  企業(yè)通常通過(guò)實(shí)施“升級(jí)改造”完善其應(yīng)用系統(tǒng)功能來(lái)適應(yīng)信息技術(shù)的快速變革。傳統(tǒng)的SOA模型采用“需求+服務(wù)”的兩層結(jié)構(gòu),業(yè)務(wù)需求被劃分為一系列業(yè)務(wù)服務(wù),服務(wù)定義一個(gè)與業(yè)務(wù)功能或業(yè)務(wù)數(shù)據(jù)相關(guān)的接口并實(shí)現(xiàn),屬于靜態(tài)模型,沒(méi)有能夠反映應(yīng)用系統(tǒng)動(dòng)態(tài)的運(yùn)行時(shí)特征。這種開(kāi)發(fā)方法從項(xiàng)目立項(xiàng)開(kāi)發(fā)到部署實(shí)施耗時(shí)冗長(zhǎng),而且這種“傷筋動(dòng)骨”的系統(tǒng)變更耗費(fèi)大量資源,帶來(lái)企業(yè)業(yè)務(wù)系統(tǒng)的不穩(wěn)定和不連續(xù)性,增加企業(yè)的運(yùn)營(yíng)、管理和維護(hù)成本,難以解決業(yè)務(wù)升級(jí)與業(yè)務(wù)連續(xù)性之間的沖突。

  工作流[1]是實(shí)現(xiàn)業(yè)務(wù)過(guò)程自動(dòng)化的核心技術(shù),主要實(shí)現(xiàn)業(yè)務(wù)過(guò)程的建模、優(yōu)化、仿真、管理和集成并賦予業(yè)務(wù)管理系統(tǒng)高度的靈活性,而工作流技術(shù)與面向服務(wù)的架構(gòu)(Service Oriented Architecture,SOA)[2]的結(jié)合可實(shí)現(xiàn)業(yè)務(wù)邏輯和流程邏輯的分離,通過(guò)對(duì)業(yè)務(wù)流程的分析和規(guī)范化定義實(shí)現(xiàn)對(duì)系統(tǒng)運(yùn)行時(shí)特征的動(dòng)態(tài)描述,基于構(gòu)件[3]的業(yè)務(wù)單元亦可實(shí)現(xiàn)自動(dòng)組裝,在實(shí)際應(yīng)用中具有重大意義。

1 業(yè)務(wù)模型

  傳統(tǒng)的SOA模型采用“需求+服務(wù)”的兩層結(jié)構(gòu),業(yè)務(wù)需求被劃分為一系列業(yè)務(wù)服務(wù),一個(gè)服務(wù)定義了一個(gè)與業(yè)務(wù)功能或業(yè)務(wù)數(shù)據(jù)相關(guān)的接口,服務(wù)直接針對(duì)某一個(gè)需求定義并實(shí)現(xiàn),屬于靜態(tài)模型,沒(méi)有反映應(yīng)用系統(tǒng)動(dòng)態(tài)的運(yùn)行時(shí)特征。本文在傳統(tǒng)靜態(tài)模型基礎(chǔ)上進(jìn)一步細(xì)化,提出一種新的包含語(yǔ)義流程的三層動(dòng)態(tài)模型及其建模方法。在需求和服務(wù)中間加入對(duì)具體應(yīng)用實(shí)現(xiàn)的流程描述,并將服務(wù)細(xì)化為針對(duì)具體應(yīng)用的基本構(gòu)件和原子構(gòu)件,分別將其定義為概念模型、邏輯模型和物理模型,其對(duì)應(yīng)關(guān)系如表1所示。其中概念模型用來(lái)定義一個(gè)應(yīng)用的內(nèi)涵,描述該系統(tǒng)可以提供的全部?jī)r(jià)值,與需求對(duì)應(yīng);物理模型定義具有完備性和獨(dú)立性的原子構(gòu)件,封裝為實(shí)施具體操作的提供相應(yīng)價(jià)值的服務(wù);邏輯模型對(duì)應(yīng)語(yǔ)義流程,由不同的構(gòu)件序列或服務(wù)序列組合來(lái)完成具體需求,是概念模型到物理模型之間的關(guān)系映射。該方法通過(guò)建模平臺(tái)對(duì)應(yīng)用領(lǐng)域的概念、邏輯、物理三層建模,規(guī)范化表述流程描述,提取基本構(gòu)件及原子構(gòu)件,并由流程引擎[4]調(diào)用執(zhí)行。

006.jpg

  其中原子構(gòu)件是業(yè)務(wù)功能實(shí)現(xiàn)不能再細(xì)分的最小單元,具有獨(dú)立性和完備性。獨(dú)立性強(qiáng)調(diào)原子構(gòu)件自身不可再分,也不能由其他原子構(gòu)件組合產(chǎn)生;完備性指出任何一個(gè)流程都可由不同的原子構(gòu)件組合而成。兩者通過(guò)業(yè)務(wù)流程聯(lián)系起來(lái)完成具體的業(yè)務(wù)功能,構(gòu)件模型的實(shí)現(xiàn)不依賴于具體的實(shí)現(xiàn)環(huán)境,只需提供接口機(jī)制即可使用,而且構(gòu)件是高度可擴(kuò)展的,而引入業(yè)務(wù)流程可以實(shí)現(xiàn)系統(tǒng)更加快速、靈活的開(kāi)發(fā),大大增加了系統(tǒng)的可擴(kuò)展性。

2 系統(tǒng)架構(gòu)

  基于動(dòng)態(tài)模型的系統(tǒng)開(kāi)發(fā)方法,本文提出了一種新的系統(tǒng)開(kāi)發(fā)架構(gòu),如圖1所示。

001.jpg

  在該系統(tǒng)中,建模平臺(tái)采用“概念模型+邏輯模型+物理模型”的三層架構(gòu)建模方法[5]針對(duì)具體應(yīng)用領(lǐng)域建模,分別得出具體應(yīng)用的概念層次隸屬劃分、業(yè)務(wù)流程的指令化描述及底層功能實(shí)現(xiàn)的基本構(gòu)件和原子構(gòu)件,其中后兩部分分別作為流程引擎的輸入和基本業(yè)務(wù)庫(kù)及原子業(yè)務(wù)庫(kù)的輸入;界面平臺(tái)提供與用戶的交互,支持將用戶提交內(nèi)容轉(zhuǎn)化為業(yè)務(wù)流程的指令化描述并反饋給流程引擎;引擎接收指令流程,從基本構(gòu)件庫(kù)或原子構(gòu)件庫(kù)調(diào)用基本構(gòu)件或原子構(gòu)件執(zhí)行,通過(guò)報(bào)文的方式與核心數(shù)據(jù)庫(kù)或其他業(yè)務(wù)接口完成數(shù)據(jù)交互。

  該架構(gòu)具有SOA架構(gòu)的特征,符合工作流管理聯(lián)盟WfMC提出的工作流參考模型。業(yè)務(wù)流程作為流程引擎的輸入數(shù)據(jù),業(yè)務(wù)改變時(shí),通過(guò)引入新的流程數(shù)據(jù)并針對(duì)性地對(duì)基本構(gòu)件庫(kù)和原子構(gòu)件庫(kù)進(jìn)行維護(hù)擴(kuò)展,可實(shí)現(xiàn)新流程的快速部署。在該架構(gòu)中,流程引擎和建模平臺(tái)作為系統(tǒng)的運(yùn)行和建模工具,分別進(jìn)行詳細(xì)描述和設(shè)計(jì)實(shí)現(xiàn)。

3 流程引擎

  流程引擎類似于一個(gè)CPU,指令化的業(yè)務(wù)流程相當(dāng)于CPU中執(zhí)行的程序,每一個(gè)業(yè)務(wù)都對(duì)應(yīng)著相應(yīng)的一個(gè)流程。對(duì)于發(fā)起的任何一個(gè)業(yè)務(wù),流程引擎從應(yīng)用服務(wù)器中調(diào)出相對(duì)應(yīng)的業(yè)務(wù)流程驅(qū)動(dòng)執(zhí)行[6]。流程是以構(gòu)件為步驟節(jié)點(diǎn)的業(yè)務(wù)行為序列;執(zhí)行一個(gè)業(yè)務(wù)流程時(shí),流程引擎分析確定該流程執(zhí)行的步驟順序,并分析當(dāng)前的步驟節(jié)點(diǎn),根據(jù)分析結(jié)果從構(gòu)件庫(kù)選出恰當(dāng)?shù)臉?gòu)件執(zhí)行。

  流程引擎確定輸入流程的執(zhí)行順序,具有同CPU的程序控制器相似的結(jié)構(gòu),如圖2所示。

002.jpg

  流程引擎由流程計(jì)數(shù)器、流程隊(duì)列、構(gòu)件計(jì)數(shù)器(Counter)、構(gòu)件隊(duì)列(Queue)、構(gòu)件譯碼器等基本部件組成。流程隊(duì)列存儲(chǔ)流程的ID,流程ID由流程計(jì)數(shù)器確定,每一個(gè)流程ID對(duì)應(yīng)一個(gè)構(gòu)件計(jì)數(shù)器,構(gòu)件計(jì)數(shù)器則指向執(zhí)行系統(tǒng)操作的構(gòu)件隊(duì)列。當(dāng)流程引擎驅(qū)動(dòng)一個(gè)流程執(zhí)行時(shí),流程計(jì)數(shù)器指定流程ID,流程ID對(duì)應(yīng)到構(gòu)件計(jì)數(shù)器并由構(gòu)件計(jì)數(shù)器指針指定當(dāng)前構(gòu)件。該構(gòu)件完成譯碼后提交到服務(wù)總線,同時(shí)構(gòu)件計(jì)數(shù)器指針指向下一個(gè)將要執(zhí)行的操作(構(gòu)件)。針對(duì)流程引擎邏輯結(jié)構(gòu),設(shè)計(jì)其基本物理結(jié)構(gòu)如圖3所示。

003.jpg

  圖中所示的流程引擎實(shí)現(xiàn)主要包括一個(gè)主處理節(jié)點(diǎn)和若干從處理節(jié)點(diǎn),并且由總線將各部分聯(lián)系起來(lái)??偩€由一組上行線、一組下行線和一組狀態(tài)檢測(cè)線構(gòu)成;主處理節(jié)點(diǎn)對(duì)應(yīng)構(gòu)件計(jì)數(shù)器,獨(dú)占一組下行線,通過(guò)該總線向所有從處理節(jié)點(diǎn)發(fā)送通信消息;從處理節(jié)點(diǎn)對(duì)應(yīng)原子構(gòu)件或基本構(gòu)件,根據(jù)給定的特定輸入得到相應(yīng)的需求輸出,所有從處理節(jié)點(diǎn)共享一組上行線,通過(guò)狀態(tài)檢測(cè)線解決數(shù)據(jù)競(jìng)爭(zhēng)沖突問(wèn)題;其中所有節(jié)點(diǎn)通過(guò)統(tǒng)一節(jié)點(diǎn)接口(UNI)掛接在總線上。

4 建模平臺(tái)

  建模平臺(tái)是一個(gè)依照本研究提出的動(dòng)態(tài)模型來(lái)輔助支持應(yīng)用系統(tǒng)建模的軟件系統(tǒng)。建模平臺(tái)通過(guò)對(duì)系統(tǒng)的建模為整個(gè)系統(tǒng)提供需求分析、語(yǔ)義描述并確立對(duì)應(yīng)構(gòu)件集合,在建模平臺(tái)基礎(chǔ)上,系統(tǒng)只需實(shí)現(xiàn)原子構(gòu)件,而基本構(gòu)件和其他所有業(yè)務(wù)步驟均由邏輯模型映射為原子構(gòu)件的工作流程并由流程引擎調(diào)用執(zhí)行。建模平臺(tái)針對(duì)具體應(yīng)用領(lǐng)域的建模是整個(gè)系統(tǒng)實(shí)現(xiàn)的基礎(chǔ),也是重要的組成部分。

  4.1 實(shí)現(xiàn)工具

  建模平臺(tái)使用MVC模式[7]設(shè)計(jì),該模式很好地做到了解耦,使代碼和界面分離,數(shù)據(jù)庫(kù)操作與Servlet操作分開(kāi),這樣能夠方便開(kāi)發(fā)和以后的維護(hù)。開(kāi)發(fā)工具選用Myeclipse,客戶端選用IE瀏覽器,服務(wù)器端選用mysql數(shù)據(jù)庫(kù)和輕量級(jí)WEB應(yīng)用中間件Tomcat(Appach的一個(gè)免費(fèi)、開(kāi)放源碼的項(xiàng)目,它是支持JSP和Servlet技術(shù)的容器)。

  4.2 概念建模

  建模平臺(tái)將概念建模等價(jià)于建立一個(gè)動(dòng)態(tài)樹(shù)形菜單dTree,由JSP頁(yè)面顯示。dTree通過(guò)層次分明的索引確立了概念的外延與內(nèi)涵以及相互之間的隸屬關(guān)系,直到分解為不可再分的業(yè)務(wù)用例場(chǎng)景,從自然語(yǔ)言出發(fā)一步步建立抽象化和形式化的概念模型。dTree的實(shí)現(xiàn)使用了JQuery AJAX,即異步JavaScript和XML技術(shù)。

  $.ajax({

  …

  success: function(xml){

  tree.add(nodeId,parentId,nodeName,hrefAddress,

  "","","","",false);  …

  document.write(tree);

  JQuery Ajax()方法[8]在不重載整個(gè)頁(yè)面的情況下,從后臺(tái)加載數(shù)據(jù)并在頁(yè)面顯示。Success()函數(shù)定義了由jsp頁(yè)面[9]調(diào)用JQuery請(qǐng)求servlet讀取XML數(shù)據(jù)對(duì)象,通過(guò)遍歷XML文件,獲得樹(shù)形菜單節(jié)點(diǎn)的屬性和文本數(shù)據(jù),再循環(huán)添加到dTree的節(jié)點(diǎn)中,形成樹(shù)形菜單的概念模型。

  4.3 邏輯建模

  概念建模確立的動(dòng)態(tài)樹(shù)形菜單中,葉子節(jié)點(diǎn)與某一業(yè)務(wù)文檔(邏輯)相對(duì)應(yīng),邏輯建模通過(guò)為每一個(gè)業(yè)務(wù)步驟標(biāo)記屬性,并通過(guò)序號(hào)、前件集合、后件集合等對(duì)業(yè)務(wù)用例場(chǎng)景流程數(shù)據(jù)進(jìn)行確切表述,并以文檔形式保存管理。

  邏輯建模參照流程引擎結(jié)構(gòu)完成了業(yè)務(wù)流程數(shù)據(jù)結(jié)構(gòu)和流程指令的設(shè)計(jì)。業(yè)務(wù)流程數(shù)據(jù)設(shè)計(jì)將流程數(shù)據(jù)通過(guò)序號(hào)(Number)、業(yè)務(wù)名(BusinessName)、構(gòu)件ID、屬性(Attribute)、類型(Type)、前件集合(FrontSet)、后件集合(NextSet)及數(shù)據(jù)(Data)完整描述了業(yè)務(wù)步驟的各方面信息。流程指令設(shè)計(jì)部分包括通用控制類指令和數(shù)據(jù)搬移類指令,分別舉例如下:

  JMP Number;  //無(wú)條件調(diào)轉(zhuǎn)類指令;

  意指將PC指針指向Number指定的構(gòu)件

  DETZ Attriute Number;  //條件跳轉(zhuǎn)類指令;意指判斷

  Attribute屬性,如為0,則PC調(diào)轉(zhuǎn)至Number

  指定的構(gòu)件;否則順序向下執(zhí)行

  MOV Number NextSet;  //數(shù)據(jù)搬移類指令;

  意指將后件集合中內(nèi)容賦予Number

  邏輯建模實(shí)現(xiàn)從用自然語(yǔ)言描述的業(yè)務(wù)流程到流程核心內(nèi)容的提取,并通過(guò)控制指令及數(shù)據(jù)搬移指令集合形成業(yè)務(wù)流程的完備描述,可通過(guò)流程引擎調(diào)用執(zhí)行。

  4.4 物理建模

  物理建模為每個(gè)具體應(yīng)用確立一個(gè)原子業(yè)務(wù)庫(kù)和一個(gè)基本業(yè)務(wù)庫(kù)。針對(duì)流程文檔中的每一個(gè)步驟節(jié)點(diǎn)確定其屬性分別納入原子業(yè)務(wù)庫(kù)或基本業(yè)務(wù)庫(kù)。構(gòu)件的提取、錄入通過(guò)JSP表單實(shí)現(xiàn),表單通過(guò)編輯javascript函數(shù)控制步驟錄入,利用DAO[10](數(shù)據(jù)訪問(wèn)對(duì)象)模式實(shí)現(xiàn)與mysql數(shù)據(jù)庫(kù)的操作,分別通過(guò)executeUpdate()和executeQuery()執(zhí)行數(shù)據(jù)庫(kù)更新和查詢操作:

  public int executeUpdate(String sql){}

  public ResultSet executeQuery(String sql){}

  所有的步驟節(jié)點(diǎn)全部標(biāo)記錄入完成,以表單的形式存儲(chǔ)在數(shù)據(jù)庫(kù)中。在該結(jié)構(gòu)中,原子業(yè)務(wù)庫(kù)和基本業(yè)務(wù)庫(kù)支持更新和擴(kuò)展,構(gòu)件可由軟件或硬件實(shí)現(xiàn),并且可以為不同的應(yīng)用領(lǐng)域建模,具有很高的靈活性。

  本文使用建模平臺(tái)完成以卡銀行核心業(yè)務(wù)為例的建模,建模平臺(tái)概念建模實(shí)現(xiàn)卡銀行業(yè)務(wù)菜單界面如圖4,數(shù)據(jù)庫(kù)表中原子業(yè)務(wù)及基本業(yè)務(wù)表如圖5。

5 小結(jié)

  本文充分結(jié)合了工作流及SOA思想的特征,以流程引擎和建模平臺(tái)為基礎(chǔ),提出了基于動(dòng)態(tài)模型的應(yīng)用系統(tǒng)架構(gòu),詳細(xì)描述了流程引擎部分并搭建了建模平臺(tái)。采用了“概念模型+邏輯模型+物理模型”的動(dòng)態(tài)架構(gòu)建模方法,有一定的抽象但又利于理解,建立了分層結(jié)構(gòu)但又獨(dú)立于具體技術(shù)?;趧?dòng)態(tài)模型的業(yè)務(wù)系統(tǒng)架構(gòu)為業(yè)務(wù)流程再造提供了便利松弛的環(huán)境,結(jié)合流程引擎特別容易實(shí)現(xiàn)對(duì)新、舊業(yè)務(wù)的平滑過(guò)渡,成為業(yè)務(wù)持續(xù)性管理的理想架構(gòu),可實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)的快速開(kāi)發(fā)和重構(gòu),是一種具有重要實(shí)際意義的系統(tǒng)開(kāi)發(fā)方法。

參考文獻(xiàn)

  [1] 陳儒,肖剛,張?jiān)Q,等.基于事物規(guī)則的面向服務(wù)工作流模型研究[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(6):5-7.

  [2] 管紅杰,王珂,江海峰,等.SOA架構(gòu)的工作流管理系統(tǒng)的研究與應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(5):1654-1657.

  [3] 張功萱,陳瀚,王永利,等.一種消息驅(qū)動(dòng)的SOA系統(tǒng)集成方法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(6):86-90.

  [4] WfMC TC210162X.Workflow management coalition interface 1:Process definition interchange Q&A and examples[S].1999.

  [5] 曾誠(chéng),何克清,李兵.一種用戶驅(qū)動(dòng)的服務(wù)資源建模方法[J].計(jì)算機(jī)應(yīng)用與軟件,2012,29(8):21-23.

  [6] 吳益爾,蔡鴻銘,步豐林,等.基于語(yǔ)義的三維元素的概念關(guān)系建模的研究[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(3):8-12.

  [7] 張婷.基于Extjs+Spring MVC的WEB系統(tǒng)開(kāi)發(fā)架構(gòu)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,1(23):147-149.

  [8] 陳莉莉,張麗,劉正龍.搜索引擎中基于狀態(tài)的Ajax動(dòng)態(tài)網(wǎng)頁(yè)提取研究[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(7):217-220.

  [9] 甘勇.JSP程序設(shè)計(jì)技術(shù)教程[M].北京:清華大學(xué)出版社,2010.

  [10] 陳丹丹,李銀龍.Java開(kāi)發(fā)寶典[M].北京:機(jī)械工業(yè)出版社,2012.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。