監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 簽約案例 | 購(gòu)買價(jià)格 | 在線試用 | 手機(jī)APP | 產(chǎn)品資料
X 關(guān)閉

基于BPEL的業(yè)務(wù)流程集成技術(shù)

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

來(lái)源:泛普軟件

引言

基于WebService,采用SOA(Service Oriented Architecture)架構(gòu)建立企業(yè)業(yè)務(wù)系統(tǒng)解決方案時(shí),分析明晰企業(yè)的業(yè)務(wù)流程并以適合粒度定義出Web服務(wù)。當(dāng)涉及到跨部門、端對(duì)端的業(yè)務(wù)流程動(dòng)態(tài)集成時(shí),需要把這些Web服務(wù)按順序組合以實(shí)現(xiàn)業(yè)務(wù)流程集成的方法和技術(shù)。故在SOA架構(gòu)下,以BPEL作為業(yè)務(wù)流程執(zhí)行語(yǔ)言,對(duì)企業(yè)部門之間業(yè)務(wù)流程動(dòng)態(tài)集成的實(shí)現(xiàn)方法進(jìn)行研究。

1 BPEL和業(yè)務(wù)流程編排

該研究采用IBM關(guān)于SOA的方法論、行業(yè)解決方案和相關(guān)的技術(shù)產(chǎn)品,所以關(guān)于BPEL的研究符合IBM關(guān)于SOA的核心構(gòu)件標(biāo)準(zhǔn)SCA/SDO(Service Component Architecture/Service Data Object)。SDO是一種應(yīng)用程序編程接口(API),可簡(jiǎn)化和統(tǒng)一對(duì)異構(gòu)數(shù)據(jù)的訪問(wèn);SCA是一種全新的、跟語(yǔ)言無(wú)關(guān)的編程模型,提供了一種統(tǒng)一的調(diào)用方式,從而使得客戶可以把不同的組件類型通過(guò)一種標(biāo)準(zhǔn)的接口來(lái)封裝和調(diào)用。結(jié)合SDO的數(shù)據(jù)模型,這種服務(wù)組件的編程模型可簡(jiǎn)化程序員編程,提高應(yīng)用的靈活性。該sCA/sDo標(biāo)準(zhǔn)的分層與關(guān)系如圖1。

其中Business Processes(BPC)是滿足SCA規(guī)范的組件,SCA通過(guò)統(tǒng)一的組件規(guī)范實(shí)現(xiàn)服務(wù)組件層,對(duì)內(nèi)可以是JavaBeans,BPEL—Processes等。  雖然在SCA/SDO標(biāo)準(zhǔn)中,BPC只是其中的一個(gè)SCA組件,但是在構(gòu)建業(yè)務(wù)流程時(shí)不可避免的要和其它SCA組件(如:Human Tasks、Business Rules等)交互,所以不能孤立地研究BPC組件。

標(biāo)準(zhǔn)的BPEL規(guī)范是從傳輸、消息、服務(wù)發(fā)現(xiàn)、QOS(Quality Of Service)和業(yè)務(wù)流程編排(Business Process Choreography)等方面給出定義,主要關(guān)注業(yè)務(wù)流程編排。在進(jìn)行業(yè)務(wù)流程的編排和實(shí)現(xiàn)時(shí),首先需要對(duì)業(yè)務(wù)流程進(jìn)行建模,真實(shí)還原當(dāng)前的業(yè)務(wù)場(chǎng)景(稱為as.is);然后根據(jù)業(yè)務(wù)目標(biāo),實(shí)現(xiàn)業(yè)務(wù)流程的優(yōu)化(稱為to-be),再根據(jù)實(shí)際運(yùn)行的結(jié)果,進(jìn)行下一輪的優(yōu)化。這是一個(gè)循環(huán)迭代的過(guò)程,符合SOA的生命周期:建模(model)一裝配(assemble)一部署(deploy)一管理(manager),而業(yè)務(wù)流程編排完全貫穿于整個(gè)SOA生命周期。

定義BPC組件時(shí),組件接口和引用必須遵循SCA組件規(guī)范,可定義Java Interface/Reference或Interface/Reference,而組件的具體實(shí)現(xiàn)為Business Processes如圖2。

根據(jù)BPEL規(guī)范,實(shí)現(xiàn)BPC組件時(shí),流程的每一步稱為一個(gè)活動(dòng),存在以下基本活動(dòng):調(diào)用某個(gè)Web服務(wù)的操作(invoke);等待一條消息來(lái)響應(yīng)由某人從外部進(jìn)行調(diào)用服務(wù)接口的操作(receive);生成輸入/輸出操作的響應(yīng)(reply);等待一段時(shí)間(wait);把數(shù)據(jù)從一個(gè)地方復(fù)制到另一個(gè)地方(assign);指明某個(gè)地方出錯(cuò)(throw);終止整個(gè)服務(wù)實(shí)例(terminate);或者什么也不做(empty)。通過(guò)使用BPEL語(yǔ)言所提供的結(jié)構(gòu)化活動(dòng),可將這些原語(yǔ)活動(dòng)組合成更復(fù)雜的算法。這些結(jié)構(gòu)化活動(dòng)提供的能力包括:定義一組步驟有序的序列(sequence);使用“case.statement”方法來(lái)產(chǎn)生分支(switch);定義一個(gè)循環(huán)(while);執(zhí)行幾條可選路徑中的一條(pick);指明一組應(yīng)該并行執(zhí)行的步驟(flow);在并行執(zhí)行的一組活動(dòng)中,可通過(guò)使用鏈接(1ink)來(lái)指明執(zhí)行順序的約束,并允許遞歸地組合結(jié)構(gòu)化活動(dòng),以表達(dá)任意復(fù)雜的算法,這些算法表示了服務(wù)的實(shí)現(xiàn)。

2 服務(wù)裝配

使用IBM Websphere Integration Development6.0.1(簡(jiǎn)稱WID)完成SOA Life—style中的服務(wù)裝配(Service Assemble)。上述的基本活動(dòng)、結(jié)構(gòu)化活動(dòng)在WID中得到了一定程度的封裝和細(xì)節(jié)屏蔽,通過(guò)WID提供的圖形化編輯器完成BPEL流程的編排,如圖3。

2.1 裝配原理

由于目前的BPEL標(biāo)準(zhǔn)屬于粗粒度,IBM針對(duì)復(fù)雜業(yè)務(wù)流程的實(shí)現(xiàn)對(duì)該規(guī)范進(jìn)行了擴(kuò)展,主要定制添加了Human Task和Visual snippets節(jié)點(diǎn)。其中Human Task節(jié)點(diǎn)完成與人交互,主要包括3種模式:people to machine(由人調(diào)用service)、machineto people(人是參與者)、people to people(由人員把工作項(xiàng)分配給另一人員)。使得與人的交互變成組件方式,通過(guò)invoke調(diào)用外部的服務(wù)(再通過(guò)回調(diào)完成異步調(diào)用),通過(guò)這種方式完成解耦,外部服務(wù)的更改,不會(huì)影響這個(gè)業(yè)務(wù)流程。Visual snippets節(jié)點(diǎn)使用圖形化的方法寫iava code,在BPEL編輯下可完成對(duì)流程變量的賦值和引用,即完成賦值節(jié)點(diǎn)對(duì)不同消息的匹配。

BPEL流程需要定義Interface Partners、Reference Partners、Variables、Correlation Sets等。其中:Interface Partners指定該BPEL流程對(duì)應(yīng)的接口;Reference Partners指定流程中Invoke節(jié)點(diǎn)需要調(diào)用的WSDLPortType接口;Variables中定義流程變量,屬于BO(Business 0bject--SDO的子集),BO的實(shí)質(zhì)是一個(gè)XML Schema,整個(gè)業(yè)務(wù)員場(chǎng)景中的數(shù)據(jù)流轉(zhuǎn)都是Bo;Correlation Sets是異步消息處理機(jī)制,通過(guò)key值來(lái)唯一標(biāo)識(shí)消息和BO,并唯一定義每個(gè)流程實(shí)例(Business Instance),其初始化是在流程中完成的。

通過(guò)使用LDAP插件完成BPEL流程的認(rèn)證和授權(quán),其中human task的權(quán)限通過(guò)role控制,WlD中默認(rèn)提供5種角色:Starters、Potential owners、Reader、Editors、Administrator,而人員的選擇是通過(guò)human task中的Verbs andParameters完成。

2.2 裝配實(shí)現(xiàn)設(shè)計(jì)

BPEL流程和WebService交互應(yīng)用:首先由客戶端(JSP)通過(guò)消息發(fā)起流程,創(chuàng)建流程實(shí)例并傳入相關(guān)參數(shù);流程在Receive節(jié)點(diǎn)將參數(shù)存入與BPEL流程綁定的WSDL接口的輸入變量BO中;添加invoke節(jié)點(diǎn)調(diào)用外部的WebService,該Web服務(wù)可能是由ERP、CRM或者OA等業(yè)務(wù)系統(tǒng)暴露出的服務(wù)接口,WebService根據(jù)輸入變量BO完成查詢數(shù)據(jù)庫(kù)、啟動(dòng)其他工作流等相關(guān)業(yè)務(wù)處理并返回輸出值給BPEL流程;流程在Reply節(jié)點(diǎn)把輸出值返回給前臺(tái)JSP,至此流程結(jié)束,如圖4。

當(dāng)業(yè)務(wù)流程定義完畢后,通過(guò)JMS、WebService、BPC方式啟動(dòng)流程,這里BPC是WID提供的業(yè)務(wù)流程調(diào)用模板,也可以根據(jù)提供的API自定義流程啟動(dòng)模板。同時(shí)SCA Component調(diào)用SCA Module中定義的SCA Component應(yīng)用時(shí)可通過(guò)Dynamic和Type-Safe方式,對(duì)于調(diào)用者是非SCA組件時(shí),比如:JSP、servlet,可通過(guò)定義的stand—along的reference完成。

BPEL流程分為:微流程(microflow)和長(zhǎng)流程(10ng—running)。微流程是瞬時(shí)流程,所有的活動(dòng)都在一次事務(wù)中完成,不涉及與數(shù)據(jù)庫(kù)或其他業(yè)務(wù)系統(tǒng)交互;長(zhǎng)流程中業(yè)務(wù)上下文則必須被持久化存儲(chǔ),從而確保即使遇上計(jì)劃的或意外的系統(tǒng)失敗,業(yè)務(wù)流程也能正確執(zhí)行,因?yàn)檫@種失敗的可能性隨著業(yè)務(wù)流程運(yùn)行時(shí)間的增加而變大。

2.3 相關(guān)問(wèn)題和解決思路

一個(gè)健壯靈活的BPEL流程不可避免會(huì)涉及到事件處理和出錯(cuò)處理。事件處理的基礎(chǔ)是CEI51(Common Event Infrastructure),CEI是一套框架,實(shí)現(xiàn)事件源、事件的生成、傳輸、持久化存儲(chǔ)和發(fā)布,在業(yè)務(wù)場(chǎng)景中為事件封裝的方式,統(tǒng)一監(jiān)控調(diào)用之間發(fā)生的事件。而CEI又是基于CBE(CommonBase Event),通過(guò)CBE統(tǒng)一描述事件,把事件的屬性用縱表來(lái)描述(平常的數(shù)據(jù)庫(kù)是橫表)。但同時(shí)帶來(lái)的問(wèn)題是:數(shù)據(jù)量太大,一個(gè)事件可能對(duì)應(yīng)多條記錄。對(duì)此可預(yù)定義事件的優(yōu)先級(jí),當(dāng)大于優(yōu)先級(jí)時(shí)生成事件記錄,并定時(shí)清除舊事件記錄。這里對(duì)事件處理再進(jìn)行展開:對(duì)BPEL的定位是整合Web服務(wù)、定義Services的執(zhí)行順序和完成流程與模塊的交互。但是面臨復(fù)雜業(yè)務(wù)流程,特別是人工節(jié)點(diǎn)較多的業(yè)務(wù)流程時(shí),BPEL就顯得相形見絀,為此將狀態(tài)機(jī)(BSM—Business Statement Machine)和BPEL結(jié)合起來(lái)定義業(yè)務(wù)流程,IBM-BSM是基于狀態(tài)完成流程變遷的,其內(nèi)部實(shí)現(xiàn)還是BPEL。事件處理是定義在流程的Scope中,而Scope是不能跨BSM和BPEL的。

針對(duì)該問(wèn)題提出的解決方法: 在每個(gè)事件中植入事件發(fā)生器,通過(guò)CBE對(duì)自定義事件進(jìn)行抓取,統(tǒng)一存放。首先將幾個(gè)活動(dòng)放在同一個(gè)Scope中,當(dāng)某個(gè)活動(dòng)出現(xiàn)異常時(shí),通過(guò)throw或rethrow節(jié)點(diǎn)拋出異常,觸發(fā)相應(yīng)fault handler,然后通過(guò)Compensation補(bǔ)償節(jié)點(diǎn)完成對(duì)事物的補(bǔ)償,從而保證了事物的原子性、一致性和完整性。

3 結(jié)語(yǔ)

未來(lái)的10年是SOA時(shí)代,BPEL作為IBM的WSFL和Microsoft的XLANG的結(jié)合物,其主要定位是成為整合WebService的標(biāo)準(zhǔn)。通過(guò)使用BPEL把Web服務(wù)連接起來(lái)并指定怎樣共同使用Web服務(wù)來(lái)實(shí)現(xiàn)更復(fù)雜的功能,打破了Web服務(wù)孤立且不透明的現(xiàn)狀,使得異構(gòu)、跨域且通信協(xié)議不同的Web服務(wù)能夠交互;另外用BPEL驅(qū)動(dòng)的基于流程的應(yīng)用程序在修改業(yè)務(wù)流程和調(diào)用的Web服務(wù)時(shí)不會(huì)影響程序中的其它Web服務(wù)或業(yè)務(wù)流程所代表的Web服務(wù),為修改應(yīng)用程序提供了靈活性。隨著SOA的廣泛認(rèn)同和快速發(fā)展、Web服務(wù)標(biāo)準(zhǔn)和基礎(chǔ)環(huán)境的逐漸成熟,基于BPEL的業(yè)務(wù)流程動(dòng)態(tài)集成將會(huì)成為分布式工作流引擎未來(lái)發(fā)展的方向。(萬(wàn)方數(shù)據(jù))

 

發(fā)布:2007-04-27 15:48    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:

泛普泛普博客其他應(yīng)用

泛普OA商務(wù)合同 泛普OA需求調(diào)研 泛普OA實(shí)施方案 泛普OA項(xiàng)目啟動(dòng) 泛普網(wǎng)絡(luò)硬件配置 泛普OA部署安裝 泛普流程模板表單 OA系統(tǒng)二次開發(fā) 泛普常見問(wèn)題解決 泛普OA操作手冊(cè) 泛普軟件項(xiàng)目驗(yàn)收 泛普培訓(xùn)推廣上線 泛普OA售后服務(wù) 泛普新聞 泛普期刊 泛普博客