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

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

申請免費試用、咨詢電話:400-8352-114

來源:泛普軟件

引言

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

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

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

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

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

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

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

2 服務裝配

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

2.1 裝配原理

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

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

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

2.2 裝配實現(xiàn)設計

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

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

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

2.3 相關問題和解決思路

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

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

3 結(jié)語

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

 

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

泛普泛普博客其他應用

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