999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于REST風格的資源化工作流引擎的研究.

2013-09-17 10:31:18謝凌奇姜麗紅蔡鴻明
微型電腦應用 2013年2期
關鍵詞:引擎定義資源

謝凌奇,姜麗紅,蔡鴻明

0 引言

工作流引擎是企業將其分散的應用連接并整合成一個完整流程應用的調度工具。隨著云應用普及以及企業流程的愈加復雜化,企業不但需要能夠復用的云應用,還需要能夠復用的工作流,也就是說企業需要一個能夠部署在云端,能夠將工作流要素封裝好并提供給客戶使用,并能夠與云端應用順利交互的工作流引擎。

目前工作流引擎結構復雜,與應用耦合度較高,這種架構不利于在云端的部署,難以與不同結構遠端服務進行交互。傳統工作流引擎只能以流程為單位存儲工作流要素,因此也無法以流程子節點的層次提供工作流要素給客戶進行復用,難以滿足客戶對細節定制的需要。

常見的工作流引擎有集中式和分布式工作流引擎,Yang[1]等人利用J2EE分布式對象框架實現分模塊的工作流引擎,但在各模塊之間的交互上消耗過多的時間,也提高了出錯幾率。王明微[2]等人提出了一種“按需分配”的工作流任務分配方法,處理云端工作流引擎的協同處理問題。Bin[3]等人設計了面向SAAS應用的工作流引擎, Barker[4]等人提出了用編排模型優化工作流與服務之間的信息傳輸,但沒有考慮異構數據的轉換問題,Yu-Yen[5]等人設計了一個集成框架以實現 SOAP與 REST服務的轉化,但是消耗過高,Prashant[6]提出了方法資源的概念,很好地解決 REST服務對于復雜操作支持度低的問題。

在此基礎上設計了基于 RESTful風格的資源化工作流引擎,利用RESTful風格架構使其適應云端部署環境,利用RESTful服務中每個資源結點都可以發布并接受訪問的特性,將流程、活動、實例等所有工作流要素都封裝為REST的資源并建立元模型庫,從而能夠以流程節點的層次提供可復用的工作流要素。

1 工作流引擎的資源抽象

一個工作流引擎的實現分為流程設計、流程管理、應用調用和部署4個部分,如圖1所示:

圖1 資源化引擎設計框架

基于REST的資源化工作流引擎的設計思路,分為兩步,第一步是鑒定出工作流中可以抽象為資源的要素,將流程定義、活動、任務、數據、角色等工作流要素歸類為實體資源,把要素之間的關系界定為資源關系,把啟動流程、掛起、終止等需要分多步調用資源的操作抽象為方法資源,然后建立資源元模型,并持久化到數據庫中。第二步是將所有資源封裝,構建為REST服務并以統一的WADL進行描述。

在引擎部署時,一個RESTful服務框架的工作流引擎能夠很好的適應云端環境。能夠以通用的標準接口在遠端發布服務,并為客戶提供調用方式。在流程設計和流程管理部分,封裝為資源的每一個流程要素都能夠獨立的進行發布、創建、修改、復用等操作,客戶可以靈活的操作和管理每個流程要素,且不用擔心流程細節不能復用。在應用調度方面,RSET化的工作流引擎使用標準的HTTP訪問方式,能夠更順暢地與Web服務進行交互。

1.1 工作流建模與實體資源抽象

構建資源化的工作流引擎,首先就是要將工作流中的部分要素抽象并封裝為實體資源,流程的定義、活動、活動關系、邏輯規則等實體資源以及它們之間的關聯。如圖 2所示:

圖2 資源模型

在圖2中,W是工作流的抽象,工作流的所有內容都包含在W之中。PDe為流程定義的抽象,可定義為公式(1)

將 PDe封裝為資源,并分配 URI Http://orips3.com/W/{W_ID}/PDe。

流程定義中包括了流程定義編號(PDe_ID)、活動(A)、活動關聯(C)、邏輯節點(R)和流程狀態(State)。其中A為所有活動的集合,A可定義為公式(2)

其中A_ID為活動的標識,A_Task為該活動需完成的任務的抽象,包含了指向待操作的Web服務的鏈接。A_Role是該活動中被分配任務的角色的抽象,A_Data是該任務將要處理的數據對象的抽象。最后將活動 A抽象為資源,并分配 URI即 Http://orips3.com/W/{W_ID}/PDe/{PDe_ID}/A/{A_ID},將 A_Task、A_Role、A_Data同樣抽象為資源,URI則按照層級規則放置在PDe之下,如A_Task的URI為Http://orips3.com/W/{W_ID}/PDe/{PDe_ID}/A/{A_ID}/A_Task。

R為流程定義中的邏輯節點抽象,可形式化表述為公式(3)

其中R_ID是邏輯節點的標識,R_Rout是邏輯節點類型,Rout∈(Sequence,Choice,Fork,Merge,Synchronization),R_Rule存儲了邏輯節點的判斷規則,R_Data存儲了需要判斷的數據。R的 URI為 Http://orips3.com/W/{W_ID}/PDe/{PDe_ID}/R。

流程定義中的C是對流程中活動之間的關聯抽象,可形式化表述為公式(4)

其中C_Link存儲了節點間的連接關系。C_rule描述了連接關系需要遵循的規則,State記錄了流程的狀態,具體有Pre,Runing,Hang-up,Stop, Terminated五種值。

1.2 資源關系建模

傳統工作流引擎使用流程描述文檔存儲工作流要素之間的關系,資源化工作流引擎用資源元模型存儲。圖2中以流程定義以及其關聯資源為例,解釋了工作流中資源之間的關系以及其描述方式,具體的流程描述以一個流程定義的資源實例展示:

流程定義資源擁有ID、流程狀態、活動、活動鏈接和邏輯節點5個個屬性,后3個屬性在引擎中已經被封裝為實體資源,因此該資源實例在描述后3個屬性時直接建立對這3個實體資源的引用鏈接,而活動節點資源會引用任務資源、角色資源和數據資源,任務資源又將引用需處理的Web服務。通過資源模型的層層引用,以及活動鏈接資源描述的節點順序關系,描述了流程所需的一切信息,為資源建立了符合層次和語義的資源關系體系。

1.3 方法資源

對于工作流引擎中的實體操作,HTTP協議中規定的接口能夠順利完成,但是對于一些需要多步操作的復雜功能,標準接口就不能支持。為了解決這個問題,采用了定義方法資源,并將操作步驟記錄在動作資源的屬性中,由解析器解析后逐步執行的方式來解決問題的方式。

以掛起流程這個復雜操作作為范例闡述復雜資源的運作方式,如圖3所示:

圖3 方法資源模型

掛起操作被封裝為一個方法資源,擁有 URI、參數和接口,參數中以偽代碼定義了掛起的幾個步驟以及涉及到的資源。在被訪問時,解析器讀取 Hug資源的參數,解析出對資源操作的多個步驟,然后按照順序調用先以訪問流程實例資源,獲取其狀態,判斷該狀態是否是RUNNING,如果是則繼續用PUT方法調用流程實例資源,修改狀態為HUG。

工作流引擎的其他操作也以同樣方式抽象為方法資源并通過解析器運作,具體包括了流程的啟動、掛起、終止、恢復、完成任務等流程調度操作。

1.4 資源持久化

在定義完工作流引擎的所有資源后,最后一步便是將這些資源持久化到數據庫中。一個資源的持久化分為兩部分,第一是保存資源元模型,每個資源只有一份,以XML文檔形式存儲在數據庫中。第二是資源的數據持久化,每個資源匹配一張數據表,數據表的項與資源元模型的屬性一一對應,每個資源可以創建無數條的數據,每條數據對應一個資源實例。

獲取一個資源的持久化數據時,首先先查詢該資源匹配的數據表,然后查找到該資源的元模型,并按照對應關系把數據的每一項填入元模型的屬性中,若該元模型有關聯其他資源,則會抽取多個相關數據表的數據,填入各自對應的元模型中,最終組成一個大的實例模型作為該資源的持久化數據。

2 REST服務封裝

2.1 接口封裝

按照 RESTful風格,將所有接口和訪問方法限制在HTTP規范中,所有資源的擁有統一的接口,URI也按照統一層級定義了描述規范,外界通過URI以及HTTP標準接口對封裝好的工作流引擎服務進行操作。

接口封裝定義的重點在于對關聯資源的接口關系處理,以及對方法資源接口的處理。以流程定義和其關聯資源為例展示了關聯接口的運作方式,如圖4所示:

圖4 關聯接口模型

當流程定義資源接到GET訪問時,解析器會查詢流程定義的資源元模型,獲取其中對于關聯資源的描述,根據描述中關聯資源的 URI以及關系信息,解析器會將其分解為多步操作,分別訪問其他資源的接口,最后將獲取到的信息打包并返回流程定義資源。而對于方法接口則以圖3為例,由解析器讀取方法資源中的動作描述,同樣分解為多步操作并調用相關資源,最終將信息打包返回方法資源。封裝好REST接口后,通過元模型的描述以及接口定義,以REST框架建立 WADL并對資源化的工作流引擎進行描述和發布。

2.2 資源解析器

資源解析器負責對 URI、資源關聯、方法資源進行解析,并調用核心引擎進行實際處理,是REST服務接口與后臺之間的連接器。

資源解析器能夠讀取所有的資源模型并對其進行解析。在圖3和圖4有所提及資源解析器的運作方式,當外界訪問某個資源的 URI以及接口時,由資源解析器讀取該資源的元模型,然后判斷該資源類型,如果是方法資源,則解析元模型中的命令,分多步反應到后臺核心引擎進行操作。如果是實體資源則讀取與其相關聯的其他資源,并解析為多個命令反應到核心引擎。

另外,資源解析器擁有一張注冊表,里面記錄了 URI與后臺操作模塊的對應關系,當外界訪問資源接口時,由資源解析器調用后臺核心引擎進行具體操作。

2.3 異構信息轉換器

資源化工作流引擎主要針對Web端的應用訪問,而此類應用多為SOAP Web Service以及REST Web Service兩種格式,因此需要對傳輸的信息進行格式的判斷和轉換。

轉換器首先創建一個REST資源信息包,然后將SOAP服務的請求封裝,將其存儲在REST資源的屬性中,最后以REST資源信息包的形式發送至工作流引擎,與其進行交互。而返回信息則是逆轉,將REST消息中的SOAP消息提取,并以SOAP消息格式發送至服務中,從而實現了工作流引擎對不同格式服務的調用。

2.4 核心引擎

核心引擎負責實現流程調度、服務調度、數據持久化等核心功能,一切訪問在經過資源解析器的解析后都在核心引擎中運行。這里以啟動流程這個方法資源的運行過程來展示核心引擎的功能。

資源解析器解析啟動流程這個方法資源后,列出 4個操作步驟,分別為查詢流程、修改流程狀態、獲取流程起始活動、獲取活動中任務與角色并分配。核心引擎被調用后,首先查詢流程資源的持久化表格,找到需要啟動的流程資源數據,修改流程狀態數據為運行,然后根據流程資源所引用的活動連接資源找到起始節點,根據活動資源中引用的任務資源、數據資源和角色資源找到數據庫中對應的各表格,并取得其對于服務的引用地址、數據格式、對應的角色數據。根據獲取的信息由核心引擎建立與服務的連接,將服務對應的界面提供給角色進行操作,將操作結果根據數據格式打包后發送至服務,從而完成流程的啟動過程。

3 系統實現與驗證

3.1 系統實現

系統架構,如圖5所示:

圖5 系統架構

分為界面層、REST接口層、資源解析器、核心引擎、元模型庫和數據存儲層。用戶界面層采用HTML5和EXTJS搭建了流程設計器,具體包括了界面上的要素控件、控件拖拽、任務角色定義、資源導入界面以及將可視化流程編譯為XML文檔的流程轉換器。另外搭建了流程管理監控工具,用于監控流程運行狀態以及控制流程調度。REST接口層和資源解析器中,搭建了HTTP服務器進行消息的收發,建立了 URI注冊表和資源元模型庫為資源解析器提供支持,解析器負責訪問消息的解析以及通過 Spring框架調用核心引擎處理具體內容。核心引擎負責實現流程、服務、數據的操作和調度,包括一個異構服務消息轉換器。數據存儲層由XML文件管理和數據庫管理組成,XML文件管理負責存儲資源元模型,數據庫中存儲了資源匹配的數據表。

3.2 系統驗證

將以較為典型的訂單創建流程為例,實現工作流要素的復用并調用Web服務完成流程的運行。

假設用戶原有流程中已經擁有訂單創建節點,現在需要新增成品庫房、零件清單、庫存清單、采購清單的管理。操作界面,如圖6所示:

圖6 流程設計器

用戶進入流程設計器界面,打開資源導入窗口,此時前臺界面將訪問活動資源的 URI即 Http://www.orips3.com/W/PDe/A,解析器解析請求后將所有資源返回前臺。用戶選擇成品庫房資源、零件清單資源、庫存清單資源、采購清單資源導入流程中形成可視化控件,然后連接所有控件形成新的流程。核心引擎將創建該資源元模型并存儲為XML文檔。用戶啟動流程,則該方法資源被訪問,核心引擎解析流程信息找到訂單創建活動元模型并獲取待操作的Web服務引用和任務角色,然后將服務界面發送給用戶操作,核心引擎負責與服務的連接,若是SOAP服務則用異構信息轉換器將報文包裝為REST格式。用戶完成任務后,該方法資源被訪問,核心引擎記錄流程進度并將下一個任務服務發送給用戶,最終用戶完成所有任務,該流程資源實例改狀態為終止,如圖7所示:

圖7 流程監控工具

通過流程管理監控工具可查看流程運行的各個步驟以及對應的狀態,通過對監控結果的查詢證明了流程在引擎中的順利運行,確保資源化的工作流引擎達到了要求。

3.3 評估對比

在對資源化的工作流引擎與傳統工作流引擎進行測試和對比之后,驗證了資源化工作流引擎在云端部署與工作流資源復用時有著明顯優勢,表1為傳統工作流引擎和資源化的工作流引擎的對比圖表,如表1所示:

表1 資源化工作流引擎與傳統引擎的對比

4 結論

針對企業對工作流復用的需求以及傳統工作流引擎對云端部署不適應的問題,提出了一個面向資源架構(ROA)的工作流引擎,該引擎能夠輕松在云端部署并提供服務,能夠靈活發布和復用工作流資源?;趯γ嫦蛸Y源架構以及工作流結構的研究,將工作流細分為眾多獨立模塊,將引擎中的工作流要素、操作、關聯抽象為資源,賦予其URI,并進行元模型描述。然后以REST框架將所有資源封裝為一個服務,以統一接口對外提供調用,封裝后可以作為一個平臺為客戶提供工作流引擎服務,同時收集客戶定制的各種工作流要素并封裝為資源,形成資源庫以提供給客戶進行復用。整個資源化的工作流引擎擁有很好的云環境適應力,以及強大的工作流要素發布與復用的功能。

[1]Yang Liu,Yan Ma,et al. Design and Implementation of Distributed Workflow Engine Based [C]on Java EE Platform,Wuhan, pp.1-4, Dec.25-26 2010.

[2]王明微, 周競濤. 敬石開面向云制造的按需工作流任務分配方法, [J]計算機輔助設計與圖形學學報, Vol 24,No.3, Mar.2012

[3]D-OSyRIS: A Self-Healing Distributed Workflow Engine Based on Java EE Platform,Information Engineering and Computer Science (ICIECS), [C]Cluj Napoca,pp.1-4,July.6-8 2011.

[4]Bin Wu, Shuiguang Deng,et al. Reference Models for Saas Oriented Business Workflow Management Systems,Services Computing (SCC), [c]Washington, DC,pp.242-249, July 4-9 2011.

[5]Barker, A., Weissman, J.B.,et al. Reducing Data Transfer in Service-Oriented Architectures: The Circulate Approach,IEEE Transactions [J]on Services Computing,Vol.5, No.3, pp.437-449, Aug.2012.

[6]Yu-Yen Peng,Shang-Pin Ma,et al. REST2SOAP: A framework to integrate SOAP services and RESTful services,Service-Oriented Computing and Applications [J](SOCA),Taipei,pp.1-4,Feb.08 2010.

[7]Haibo Zhao;Prashant Doshi, Towards Automated REST-ful WebService Composition, Service-Oriented Computing and Applications (SOCA), [C]Los Angeles, CA,pp.189-196,July.31 2009.

猜你喜歡
引擎定義資源
基礎教育資源展示
一樣的資源,不一樣的收獲
資源回收
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
山的定義
公務員文萃(2013年5期)2013-03-11 16:08:37
主站蜘蛛池模板: 国内熟女少妇一线天| 日本一区二区不卡视频| 久久中文字幕不卡一二区| 国产大片喷水在线在线视频| 91福利免费视频| 999精品色在线观看| 国产精品福利社| 精品成人一区二区| 免费在线不卡视频| 日本不卡在线播放| 欧美h在线观看| 激情综合图区| 久久精品娱乐亚洲领先| 欧洲av毛片| 伊人精品成人久久综合| 国产成人精品视频一区视频二区| AV在线天堂进入| 91午夜福利在线观看| 亚洲欧美在线精品一区二区| 日韩黄色精品| 亚洲中文字幕无码爆乳| 国产午夜无码片在线观看网站| 中文字幕欧美成人免费| 国产在线欧美| 国产呦精品一区二区三区下载| 99在线观看视频免费| 91日本在线观看亚洲精品| 在线无码九区| 无码国产偷倩在线播放老年人| 久久人人97超碰人人澡爱香蕉| 日韩午夜伦| 国产精品99久久久久久董美香| 一级毛片免费观看不卡视频| www.日韩三级| 欧美国产日产一区二区| 中文字幕乱码中文乱码51精品| 99久久精品免费看国产免费软件 | 亚洲欧美精品在线| 亚洲精品另类| 久久黄色免费电影| 欧美性猛交xxxx乱大交极品| 男女精品视频| 人妻丰满熟妇av五码区| 国产h视频在线观看视频| 国产人妖视频一区在线观看| 日韩天堂网| 国产激爽大片高清在线观看| 日韩在线播放欧美字幕| 色网在线视频| 国产色爱av资源综合区| 亚洲国产精品一区二区第一页免| 精品视频福利| 亚洲黄色网站视频| 亚洲三级影院| 国产又黄又硬又粗| 国产精品女熟高潮视频| a级毛片免费网站| 精品亚洲麻豆1区2区3区| 国产精品99久久久| 国产极品粉嫩小泬免费看| 亚洲男人天堂久久| 久久伊伊香蕉综合精品| 69视频国产| 国产高清无码麻豆精品| 亚洲欧美日韩成人在线| 呦系列视频一区二区三区| 日韩精品一区二区三区视频免费看| 亚洲欧州色色免费AV| 亚洲精品在线观看91| 亚洲第一香蕉视频| 久久这里只精品国产99热8| 久久亚洲国产视频| 国产一区二区三区免费观看| 欧美日韩激情| 日日噜噜夜夜狠狠视频| jijzzizz老师出水喷水喷出| 欧洲亚洲欧美国产日本高清| 国产精品人成在线播放| 亚洲福利网址| 精品无码一区二区三区在线视频| аⅴ资源中文在线天堂| 国产香蕉97碰碰视频VA碰碰看 |