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

一種基于反射的BPEL業務過程動態演化方法

2007-01-01 00:00:00賈向陽
計算機應用研究 2007年5期

摘要:提出了一種基于反射的BPEL業務過程動態演化方法。該方法基于可反射的BPEL業務過程的動態演化框架,擴展了現有BPEL引擎,并對演化元過程建模,使其在BPEL引擎中實例化執行,來實現對業務過程的動態演化。

關鍵詞:業務過程;業務過程執行語言;工作流

中圖分類號:TP311文獻標志碼:A

文章編號:1001-3695(2007)05-0031-04

Web Service是一種設計和實現SOA的方法和技術,它給用戶提供了粗粒度、獨立于定位和連接的業務服務[1,2]。Web服務的業務過程執行語言(WS-BPEL)是一種基于XML的、平臺無關的業務過程建模和執行語言[3]。它提供了一種簡單的、基于標準的方法,以描述現實世界中的業務過程[4]。WS-BPEL 支持兩種截然不同的使用情形,即可執行業務過程和抽象的業務過程。可執行的業務過程可在一個運行環境(即BPEL引擎)中實例化執行[5]。

業務過程的復雜多變和因特網資源固有的不確定性使得對BPEL業務過程的建模無法避免不斷的后期修改。針對上述問題,目前所用的傳統方法一般是中止源程序的運行,待新程序編譯、部署完成后運行新程序[6]。然而對于一個部署和運行在BPEL引擎中的業務過程而言,不能簡單終止其某個正在運行的實例。例如,若終止有較長生存期的業務過程,那么該業務過程的長期工作必須重新實施。又如,若終止某業務過程實例的運行,那么需將其所完成操作進行反向補償,然而并非所有業務過程均可補償。因此,傳統方法不能很好地支持業務過程的動態演化。與此同時,當前的BPEL語言規范和相應的BPEL執行引擎亦不能較好地支持業務過程的動態演化。

根據上述分析,本文提出了一種基于反射的BPEL業務過程的動態演化方法。本文將該框架中向外提供演化功能的Web服務稱為演化元服務。同時,為了完成某次演化,用戶可依次組合多個不同的演化元服務的調用,以形成演化元過程。由于該演化元過程是標準的BPEL過程,其可在BPEL引擎中實例化執行,從而依次調用演化元服務,完成BPEL業務過程的動態演化。

1反射與反射體系結構

所謂反射是指系統能夠通過修改對自身狀態和行為的描述(簡稱自述)來調整自己的能力。系統實際的狀態和行為始終與自述保持一致,即對自述的改變能反映到系統實際的狀態和行為中,而系統的實際狀態和行為改變亦能在自述中得到反映[7]。如圖1所示,一個面向對象的可反射系統在邏輯上可以分為兩層或者更多層(組成一個反射塔)[8]。

相鄰兩層中的下層稱為基本級,描述系統本身想要做的計算;上層稱為元級,負責建立和維護系統自述。工作在基本級的對象稱為基本級對象,工作在元級的對象稱為元級對象。元級和基本級是因果關聯的(Causally Connected),即元級和基本級任何一方的改變均會引起另一方作相應的改變。基本級的任何改變都會自動地在其自述中得到體現——這個過程叫做具體化;而元級的任何改變都會自動地在其基本級中得到體現——這個過程叫做反射。反射提供了一種運行時刻系統修改自身的能力。因此可以很好地實現系統自適應性、動態配置以及系統的動態演化。

2基于反射的BPEL業務過程的動態演化方法

為了使BPEL引擎可以向外提供演化元服務,需要對現有的BPEL引擎作相應的擴展,使之能支持BPEL業務過程的動態演化。為此,提出了一種基于反射的BPEL業務過程的動態演化框架。應用該框架以實現對BPEL引擎的擴充,從而提供對BPEL業務過程動態演化的支持。

2.1基于反射的BPEL業務過程的動態演化框架

基于一個兩層的反射體系結構,圖2描述了本文提出的BPEL業務過程的動態演化框架。其中,基本級定義了需動態修改的對象,即過程定義和過程實例。同時,為了能對過程定義和過程實例進行修改,擴展了BPEL引擎中原有過程定義和過程實例的類庫,使之具有可反射的特性。

相應地,該框架的元級集中實現了提供演化功能的主要模塊,分別定義如下:

(1)演化控制器。接收外部的演化請求,與BPEL引擎的過程管理器、持久化機制通信,并控制整個演化過程的執行。具體化操作和反射操作均在演化控制器中被顯式調用。

(2)過程結構演化模塊。完成對業務過程結構的演化操作。該模塊僅修改過程的結構元信息,不考慮這些修改后的結構元信息如何反射到下面的BPEL過程定義和過程實例中。

(3)過程狀態演化模塊。完成對業務過程狀態的演化操作。該模塊修改過程的結構元信息,不考慮這些修改后的結構元信息如何反射到下面的BPEL過程定義和過程實例中。

(4)過程結構元信息對象。對業務過程結構方面的信息進行描述。

(5)過程狀態元信息對象。對業務過程狀態方面的信息進行描述。

2.2演化元服務

演化元服務是該演化框架與外部交互的接口。演化元過程調用演化元服務以完成演化操作;演化元服務將接收到的請求轉發給演化控制器,并在其控制下完成相應的演化操作。

(1)InitEvolution操作

當演化元過程調用演化元服務的InitEvolution操作時,演化控制器將會完成以下工作:①與BPEL引擎的過程管理器交互,獲得被演化的業務過程實例列表,并將這些過程實例掛起、加鎖;②執行具體化操作,從過程定義中獲得過程結構元信息,從各個過程實例中獲得過程狀態元信息。

(2)修改過程結構的操作

修改業務過程結構的操作分為三類操作,即添加、刪除和修改。相應地,本文定義了如下操作:①對合作伙伴鏈接的操作。AddPartnerLink、RemovePartnerLink、ModifyPartnerLink。②對變量的操作。AddVariable、 RemoveVariable、ModifyVariable。③對相關集的操作。AddCorrelationSet、RemoveCorrelationSet、ModifyCorrelationSet。④對活動的操作。分為對基本活動的操作和對結構化活動的操作兩類。基本活動的操作包括AddBasicActivity、RemoveBasicActivity、ModifyBasicActivity三個;而結構化活動相對較復雜,對其進行操作會具體到每一類活動,包括AddSequence、AddWhile、AddSwitch、AddFlow、AddPick、RemoveSequence、RemoveWhile、RemoveSwitch、RemoveFlow、RemovePick、ModifySequence、ModifyWhile、ModifySwitch、ModifyFlow、ModifyPick共15個操作。

當演化元過程調用這些操作時,演化控制器首先會將相應的操作委托給過程結構演化模塊;過程結構演化模塊會對過程結構元信息進行相應的修改;然后,演化控制器委托過程狀態演化模塊,對過程狀態元信息進行相應的修改。

(3)CommitEvolution操作

當演化元過程調用該操作時,演化控制器會做以下工作:①進行演化的正確性驗證。正確性是指過程定義的結構和數據的正確性(3.6節)。如果驗證失敗,系統拋出“正確性驗證失敗”異常,通知用戶進行修改,同時,取消演化,繼續執行原來的業務過程;如果驗證通過,則做下面的操作。②執行反射操作,用過程結構元信息修改過程定義和過程實例的結構;用過程狀態元信息修改過程實例的狀態。③繼續執行(Resume)相關的過程實例。④記錄日志。

2.3過程結構演化模塊

過程結構演化模塊負責對業務過程的結構部分進行演化。此模塊并不關心如何修改具體的過程定義和過程實例,而只是對過程結構元信息進行操作。例如,在演化元過程中調用一個添加Invoke活動的操作:

scope name=\"AddActivityInvokeScope\" 

variableAccessSerializable=\"no\"

sequence

assign

copy

form

aBasicActivity

xmlns=\"http://www.sklse.edu.cn/BPELEvolution\"

nameThirdLoanService/name

parentActivity

//scope[@name=\"GetLoanOffer\"]/sequence/flow/sequence[3]

/parentActivity

preActivity /

activityTypeinvoke

properties

property name=\"partnerLink\" value=\"ThirdLoanService\"/

property name=\"portType\" value=\"services:LoanService\"/

property name=\"operation\" value=\"initiate\"/

property name=\"inputVariable\" value=\"loanApplication\"/

/properties

/aBasicActivity

/form

to variable=\"AddActivityInput\"/

/copy

/assign

invoke name=\"AddActivityInvoke\"

partnerLink=\"EvolutionService\"

portType=\"tns:EvolutionServicePT\"

operation=\"AddBasicActivity\"

inputVariable=\"AddBasicActivityInput\"/

/sequence

/scope

這里傳入了name、ParentActivity、PreActivity、ActivityType和properties等幾個參數。在過程結構演化模塊中,執行流程如下:

(1)新建一個BasicActivityDef對象。

(2)按照傳入的參數。

①設置其name為“ThirdLoanService”;

②設置其Type為“invoke”;

③設置其ParentActivity:找到xpath為“//scope[@name=\"GetLoanOffer\"]/sequence/flow/sequence[3]”的活動對象,將其設為本對象的父活動;

④設置其PreActivity為1;

⑤設置其XPath為“//scope[@name=\"GetLoanOffer\"]/sequence/ flow/sequence[3]/invoke[@name=\"AddActivityInvoke\"]”;

⑥將傳入的properties依次添加到Properties Map中。

(3)修改它的ParentActivity對象,將該對象添加到父活動對象的子活動列表中。

(4)修改它的后繼活動對象的PreActivity為該對象。

2.4過程狀態演化模塊

當過程定義發生改變后,需要同時修改過程實例的狀態,使之能夠符合新過程定義的執行要求,同時不出現運行時錯誤。過程狀態演化模塊的主要功能就是對過程狀態元信息進行相應的修改以達到上述要求。

修改某個過程實例的狀態時,系統遵循以下方法:

(1)添加修改或刪除某活動時,系統首先檢查要添加的活動是否會造成系統的不一致。

①若不能保持系統的一致性,系統會拋出一個“一致性校驗失敗”異常,通知用戶不一致性發生的原因,請示用戶是否進行相應的修改,或是否允許不演化該過程實例,而讓該實例按照之前的過程定義運行下去。

②若可保持系統的一致性,那么系統會對變化后的活動進行相應的設置:新加入的活動被置為NOT_ACTIVATE,修改后的活動會保持之前的狀態不變。

(2)當對變量、相關集及合作伙伴鏈接進行相應的添加、修改或刪除時,需在相應的變量狀態元信息、相關集狀態元信息和合作伙伴狀態元信息中作相應的增刪操作。

①新加入的變量或修改后的變量需設置初始值。若這些變量與某些消息相關,則按消息內容設置;若這些變量與消息無關,則將其初始化為空值。

②新加入的相關集或修改后的相關集也需要設置初始值。相關集的值亦與消息相關。若已有相應消息,則用消息的數據初始化相關集;否則設為空值。

③新加入的合作伙伴鏈接或修改后的合作伙伴鏈接需設置其Endpoint Reference。通過訪問WSDL文檔,可得其Endpoint Reference的值。

2.5因果關聯的實現

元級和基本級是因果關聯的,基本級對象的信息可在元級對象中得到相應描述,而元級對象的改變亦會影響基本級對象。系統獲得基本級的信息,在元級生成元信息對象的過程稱為具體化;而當元信息發生改變后,基本級對象相應地修改自身結構和行為的過程稱為反射。在本文提出的框架中,基本級對象是BPEL引擎中的過程定義和過程實例,但是BPEL中的過程定義和過程實例的類庫并不能提供可反射的特性。因此,對BPEL引擎中的過程定義和過程實例的類庫進行了相應的擴展。

在本文的框架中定義了一個名為IReflectiveObject的接口,接口中定義了兩個主要的方法,即Reify和Reflect方法。BPEL引擎中的所有Process類、Activity類、PartnerLink類、Variable類、ProcessDef類、ActivityDef類、PartnerLinkDef類和VariableDef類等均需要實現這兩個方法以提供可反射的特性。

具體化——獲得業務過程的結構和狀態元信息。具體化操作是通過調用ProcessDef類和Process類的Reify方法來實現的。在這兩個類中的Reify方法被實現為一個遞歸的調用形式。調用這兩個類的Reify方法會遞歸地生成相應的子活動的元信息、變量的元信息、合作伙伴鏈接的元信息、相關集的元信息。

反射——根據元信息修改過程定義和過程實例。反射操作是通過調用ProcessDef類和Process類的Reflect方法來實現的。Reflect方法也是一種遞歸的實現,父活動的Reflect方法中會調用子活動的Reflect方法。這樣,調用這兩個類的Reflect方法就可以遞歸地利用元信息修改相應的子活動、變量、合作伙伴鏈接和相關集。

2.6案例研究

本文使用WS-BPEL規范中定義的貸款審批的案例來闡明文中方法的使用情況。首先,對演化元過程進行建模。與原業務過程相比,假定新業務過程需要在風險評估的活動之前,添加一個信用度評估的活動。該活動調用某外部的新Web服務,即涉及對新合作伙伴鏈接的定義和變量的定義。同時,需修改原活動Link的Source和Target。

以AddInvoke這個活動為例,說明如何用BPEL進行建模。其他元服務調用均為大致相同的方式。但對不同的演化元服務,需傳入的參數屬性不同。如下所示,使用一個Assign活動來初始化調用AddInvoke元服務所需要的輸入參數。為了使演化元服務知道要添加的Invoke活動的位置,使用ParentActivity和PreActivity兩個屬性來定位。這兩個屬性均使用XPath進行描述。然后,調用演化元服務AddInvoke來完成添加Invoke活動的操作。

scope name=\"AddInvokeScope\"

sequence

assign

copy

from expression=\"‘ CreditRating’\"/

to variable=\"AddInvokeInput\"part=\"name\"/

from expression=\"‘//flow[1]’\"/

to variable=\"AddInvokeInput\"part=\"parentActivity\"/

from expression=\"‘//flow[1] //receive[1]’\"/

to variable=\"AddInvokeInput\"part=\"preActivity\"/

from expression=\"‘CreditRator’\"/

to variable=\"AddInvokeInput\"part=\" partnerLink \"/

from expression=\"‘CreditRatingPT’\"/

to variable=\"AddInvokeInput\"part=\" portType \"/

from expression=\"‘check’\"/

to variable=\"AddInvokeInput\"part=\" operation \"/

from expression=\"‘request’\" part=\"PersonalInfo\"/

to variable=\"AddInvokeInput\"part=\" inputVariable \"/

/copy

/assign

invoke name=\"AddInvoke\"

partnerLink=\"EvolutionService\"

portType=\"tns:EvolutionServicePT\"

operation=\"AddInvoke\"

inputVariable=\"AddInvokeInput\"/

/sequence

/scope

用BPEL建模工具編寫的演化元過程也是一個標準的BPEL過程。因此,需要將其部署到BPEL引擎中,并啟動它來完成演化。演化元過程首先調用InitEvolution元服務來對演化過程進行初始化。演化框架中的演化控制器模塊將準備演化的過程實例掛起、加鎖,并執行具體化操作生成過程結構和過程狀態元信息。然后演化元過程調用一系列對過程的修改活動。這些活動也是調用相應元服務來完成的。這些元服務的實現是由演化控制器分別委托結構演化模塊和狀態演化模塊完成的。最后,演化元過程調用CommitEvolution元服務提交所做的演化,即對過程進行正確性驗證、執行反射操作修改過程定義和過程實例、設置過程實例的狀態為running。這樣就完成了一次演化活動,過程定義和過程實例都演化到了新版本。

3結束語

本文提出了一種基于反射的BPEL業務過程動態演化方法。從兩個層面支持演化,在用戶層面上,用戶可通過對演化元過程建模并將其在BPEL引擎中實例化執行來完成演化。這個層面上,只對“做什么”進行定義,用戶無須關心BPEL引擎內部的實現細節。在系統層面上,文中方法通過一個可反射的框架向外提供演化元服務。這個層面上解決“怎么做”的問題,任何一個BPEL引擎可將該框架集成到系統中以支持系統動態演化。當然,尚有某些方面的問題有待作進一步研究。例如對業務過程元信息和演化框架的進一步研究和改進,添加異常、事務等方面的處理。同時,對業務過程的演化元過程建模、部署、執行、監控、調試,對審計工具的開發和研究,對BPEL業務過程演化中的一致性和正確性分析,及其驗證工具的開發等問題均為進一步工作的內容。

參考文獻:

[1]CHAMPION M,RERRIS C, NEWCOMER E,et al.Web service architecture, W3C working draft[EB/OL].[2002].http://www.w3.org/TR/2002/WD-ws-arch-2002 1114/.

[2]ALONSO G,CASATI F,KUNO H, et al.Web services:concepts,architectures, and applications[M].[S.l.]:Springer,2004.

[3]ARKIN A. Business process modeling language-bpml1.0 last call working draft[EB/OL].[2002].http://www.bpmi.org.

[4]OASIS. Web services business process execution language working Draft[EB/OL].[2005-02-27].http://www.oasis-open.org/apps/org/workgroup/wsbpel/.

[5]WFMC. Workflow management coalition terminology glossary[EB/OL].[1999-02].http://www.wfmc.org/standards/docs/TC-1011_term_glossary_v3.pdf.

[6]CASATI F,CERI S,PERNICI B,et al.Workflow evolution[J].Data and Knowledge Engrg,1998,24(3) :211-238.

[7]MAES P. Concepts and experiments in computational reflection:proceedings of ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA’87)[C].Orlando:[s.n.],1987:147-155.

[8]CAZZOLA W,GHONEIM A,SAAKE G. Reflective analysis and design for adapting object run-time behavior:proceedings of the 8th International Conference on Object-Oriented Information Systems[C].[S.l.]:[s.n.],2002:242 -254.

注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”

主站蜘蛛池模板: 国产福利免费观看| 亚洲女人在线| 亚洲天堂网视频| 国产精品浪潮Av| 丰满少妇αⅴ无码区| 2021精品国产自在现线看| 欧美在线网| 精品无码一区二区在线观看| 欧美亚洲激情| 天天色天天综合网| 国产视频一二三区| 国产人人乐人人爱| 国产乱人视频免费观看| 欧美视频在线播放观看免费福利资源| 天天色天天综合网| 欧美日韩精品在线播放| 亚洲永久免费网站| 99精品视频播放| 国产精品人成在线播放| 99ri精品视频在线观看播放| 伊人天堂网| 2020最新国产精品视频| 四虎精品黑人视频| 国产精欧美一区二区三区| 啦啦啦网站在线观看a毛片| 97亚洲色综久久精品| av在线人妻熟妇| 99精品国产电影| 中国一级特黄视频| 国产精品对白刺激| 福利国产微拍广场一区视频在线| 国产成人艳妇AA视频在线| 久久精品国产精品青草app| 91午夜福利在线观看| 欧美精品在线免费| 国产女人18毛片水真多1| 欧美全免费aaaaaa特黄在线| 国产在线精品网址你懂的| aaa国产一级毛片| 欧美黑人欧美精品刺激| 亚洲视频四区| 无码国内精品人妻少妇蜜桃视频 | 精品国产免费观看一区| 亚洲婷婷六月| 国产一区二区三区在线观看视频| 亚洲国产中文欧美在线人成大黄瓜| 手机在线免费不卡一区二| 女人一级毛片| 国产超碰一区二区三区| 五月天福利视频| 五月婷婷亚洲综合| 激情六月丁香婷婷四房播| 天天综合亚洲| www.精品国产| 亚洲人成高清| 亚洲男人的天堂久久香蕉网| 国产免费好大好硬视频| 亚洲国产精品人久久电影| 激情影院内射美女| 伦精品一区二区三区视频| 国产农村妇女精品一二区| 四虎永久免费地址| 亚洲中文字幕av无码区| 欧美国产精品拍自| 亚洲天堂福利视频| 精品成人一区二区三区电影 | 中文纯内无码H| 热思思久久免费视频| 67194亚洲无码| 色播五月婷婷| 99这里精品| 国内精品伊人久久久久7777人| 国产一二三区视频| 99热这里只有精品2| 毛片一级在线| 久久9966精品国产免费| 久久精品亚洲专区| 国产手机在线观看| 国产成人福利在线视老湿机| 精品99在线观看| 男人天堂亚洲天堂| 国产区91|