BPEL
BPEL(發音為'bipple'或'bee-pell')是Business Process Execution Language的縮寫,意為業務過程執行語言,是一種基於XML的,用來描寫業務過程的編程語言,被描寫的業務過程的每個單一步驟則由Web服務來實現。
2002年IBM、BEA和微軟一起開發和引入了BPEL作為描寫協調Web服務的語言。這個描寫的本身也由Web服務提供,並可以當作Web服務來使用。
通過BPEL可以描寫一個參加一個Web服務過程的Web服務的接口,比如信息需要按照怎樣的順序被輸入,但是BPEL無法用來描寫一個業務過程的調諧。
綜述
WS-BPEL原名BPEL4WS,是基於WSDL建立的,除WSDL外它還使用XML模式定義、XPath和WS-Addressing等標準。
BPEL的目的在於大規模編程,值得注意的是BPEL不直接支持人機對話,BPEL所描寫的過程僅與Web服務通信,而這些Web服務卻可以提供與用戶的信息交換,但它們不是用戶本身。
BPEL本身提供一個基礎,在這個基礎上可以發展支撐新的應用的「支柱」。比如在BPEL本身的設置中就已經包括了「抽象業務過程」和「可執行業務過程」。其它的支柱包括BPELJ([1](頁面存檔備份,存於網際網路檔案館))和BPEL4People([2](頁面存檔備份,存於網際網路檔案館))。
BPELJ的目標在於將Java語言結合到BPEL中來加速其操作過程,缺點是它與Java息息相關,不能沒有Java運行。IBM和SAP公司一起發表了一份名為BPEL4people的白皮書,其目的是將BPEL擴展為能夠直接與人交換信息。
BPEL使用塊狀結構,在定義局部環境時可以定義適用於這個環境範圍內的變數(變數)。此外故障處理、補償處理和事故處理也可以與局部環境相連。
BPEL本身沒有定義描寫過程模型的圖像表達,但是BPMN標準可以用來描寫BPEL的模型。
抽象的和可執行的過程
可執行的過程是一個可以在一個計算機上執行的過程。抽象過程是用來描述一個過程的反應的。它被用在一個可執行過程的表面來將這個過程的內部行為掩飾起來不讓業務對象看到。
下級過程
BPEL本身沒有對下級過程的定義,因此假如一個主過程結束了的話,要結束其下級過程不總是可行。通過專門使用一個起這個作用的Web服務可以達到這個目的,但這個解決方法在BPEL的標準中並沒有提到。
IBM和SAP公司發表了一個名為《WS-BPEL 2.0,下級過程延展》的白皮書([3](頁面存檔備份,存於網際網路檔案館))來討論將BPEL延展為可以控制下級過程的問題。
發展狀況
目前的版本是2.0,這個版本是OASIS於2007年4月11日推出的。
語言組成部分
基本活動,這些是最基礎的,也就是說不基於其它活動的活動:
- assign——賦值
- invoke——同步或非同步地呼叫一個Web服務
- receive/reply——提供一個同步或者非同步呼叫一個Web服務的接口
- throw——提示一個錯誤,一個故障處理可以處理這樣的錯誤。假如一個錯誤不被處理的話它最終到達最高層後導致過程的終止
- wait——等候一個時機或者一段時間
- empty——無所事事,比如在一個錯誤發生後可以不做反應來消除這個錯誤
結構性活動,這些活動包括其它活動,可以以此建立複雜的過程:
- sequence——按照一個序列處理一系列活動
- while——在一個條件滿足的情況下處理一個活動
- switch——按照不同條件處理不同活動
- flow——平行或者按照隨意順序處理活動
- pick——按照外部事件從過程的角度不定值地選擇
scopes——使用這個結構可以將一組活動組織在一起作為一個處理單位。通過這個組織方法多個活動可以使用同一個故障處理、事故處理和補償處理。通過補償處理BPEL可以處理長時間的處理。
BPEL引擎
使用BPEL引擎可以執行BPEL程序。
- Oracle BPEL Process Manager——甲骨文公司的BPEL標準的執行,帶有JDeveloper和Eclipse的圖像式模型和調配工具
- Twister——一個開放源代碼的BPEL標準的執行,支持面向服務架構和人機界面,現名Agila
- ActiveBPEL——一個開放源代碼的BPEL4WS 1.1的執行
- BPWS4J(頁面存檔備份,存於網際網路檔案館)——IBM的BPEL執行
- Apache ODE(頁面存檔備份,存於網際網路檔案館)——Apache ODE引擎(還支持versioning)
- RiftSaw(頁面存檔備份,存於網際網路檔案館)——基於ODE,並針對JBOSS Server優化的BPEL引擎