BPEL研究(1):BPEL語言的基本特點

來源:互聯網
上載者:User
面向 Web 服務的商務程序執行語言(BPEL 或 BPEL4WS)是一種使用 Web 服務定義和執行商務程序的語言。BPEL 使您可以通過組合、編排和協調 Web 服務自上而下地實現服務導向架構 (SOA)。BPEL 提供了一種相對簡單易懂的方法,可將多個 Web 服務組合到一個新的複合服務(稱作商務程序)中。 (1)、 BPEL 規範Web 服務的商務程序執行語言(Business Process Execution Language for Web Services,BPEL4WS)規範,其定位是成為整合方面的 Web 服務標準。您可以建立能夠完成 Web 服務調用、拋出故障或終止一個流程等工作的不同活動,然後將它們串連起來,從而建立出複雜的流程。這些活動可以嵌套到結構化活動中,結構化活動定義了其中的活動的運行方式,如串列或並行還是取決於某些條件。它從本質上來說是IBM的WSFL和Microsoft的XLANG的結合物,目前已經成為業界標準。WSFL 支援圖形化的流程,而XLANG在結構化構造方面有獨到的方法,而BPEL4WS正是吸取了兩者的優點,同時摒棄了一些複雜繁瑣的部分,形成了一種較為自然的描述商務工作的抽象進階語言。 (2)、BPEL語言特點BPEL4WS語言從誕生到現在還不到一年的時間,我們可以說它是一門新的語言,但是它又不完全獨立於現在已經存在的各種程式設計語言,從各方面進行總結,可以得出以下三個突出的特點:
〈一〉 BPEL4WS並不"新":
   為什麼說它並不新呢?這主要是因為光就BPEL4WS語言本身的文法結構以及編程的思想來說,它是被廣大程式員所熟悉的(當然,你得熟悉XML語言和基本的程式設計思想,還有就是得有分布式系統的概念,如DCOM,CORBA等)。BPEL4WS的文法是完全基於XML規範的,如果不考慮它的程式語言特性,大家完全可以把它理解為普通的XML文檔規範,也就是說可以把BPEL4WS中的所有節點對應到一個虛擬DTD檔案中。如果不考慮它的程式特性,大家在編寫BPEL檔案的時候就只是按照這個DTD所定義的規範在編寫普通的XML檔案罷了。BPEL4WS主要基於以下幾個XML規範的,WSDL 1.1、XML Schema 1.0 和XPath1.0。WSDL訊息和XML Schema類型定義提供了BPEL4WS流程所需要的所有資料模型,所有需要的外部資源和夥伴都被描述為WSDL服務。
   如果對BPEL4WS語言的文法做較深入的研究,你就會發現它其實只是對原有程式設計語言思想的繼承和發展。
(1)、關於繼承,BPEL4WS語言擁有傳統程式設計語言的一些基本特性,如:
賦值操作(由對〈assign〉的操作完成);
迴圈操作(由〈while〉操作完成);
選擇操作(由〈switch〉和〈case〉操作完成);
遠程叫用作業(由〈invoke〉操作完成);
錯誤捕捉操作(由〈catchfault〉和〈catchall〉操作完成);
錯誤拋出操作(由〈throw〉操作完成)
Java,C#語言中的try操作(由〈scope〉操作完成)
(2)、關於發展,BPEL4WS語言是一門結合了商業處理特點的語言;
由於BPEL4WS語言是專為商業流程的執行所服務的,因此它也就自然而然的具有一門商業處理語言的特點,這體現在以下幾個方面:
²提供了對於遠程調用(〈invoke〉)的同步和非同步處理;
這主要是由商業處理的特點決定的,就拿民航訂票來說吧,當你向民航訂票系統的訂票Web Service發出訂票請求後,你不可能期望馬上得到結果(同步),因為民航系統必須要首先要進行複雜的身份識別以確定你的系統是否有預訂機票的許可權,接著還要查詢航班情況以確定是否你定的航班還有空座,然後才會給你回覆,而你不可能一直等待得到回覆,就算你願意你的伺服器恐怕也受不了這個負擔。因此你必須選擇非同步方式,也就是發出請求後繼續執行其他的操作,在這一點上有一點類似於TCP/IP協議和UDP協議的關係。 
²提供了並行的操作(由〈flow〉操作支援); 
對於普通的程式設計語言來說,並行的概念只是用於表面。打個比方,也許有人會說,利用windows系統(或者unix, linux系統)的多任務執行能力,我可以讓一個程式一邊在後台執行計算而前台卻進行複雜的人機互動工作,這不也是一種並行嗎。的確,這也是一種並行,但它只是cpu層級的並行,而BPEL4WS語言所體現的並行性是一種更廣範圍的並行,是基於INTERNET的並行,在某些方面,類似於傳統的平行處理系統(利用機群進行大規模複雜並行計算)。通過BPEL4WS,可以同時調用位於不同地方(不同城市甚至是國家)的Web Services進行處理(如計算,訂貨等)。 
²提供了補償的操作(由〈compensate〉操作支援); 
任何程式的執行都可能會出錯,而後果也是不同的。有的操作出錯並不會產生什麼直接的後果,而有的操作出錯的結果就必須被糾正,也就是必須執行一些補償的操作。比如拿民航訂票來說吧,假如顧客A在系統中預訂一張機票,當民航系統的Web Services完成所有訂票操作後,提交給顧客A請求確認時,顧客A由於其他原因取消了訂票操作或者系統出現故障,那麼就必須要執行補償操作,取消所有已執行的操作,恢複資料庫資訊。從某個方面來說,這很類似於DBMS中的ROLLBACK操作,只不過在資料庫系統中是微觀執行的,而在BPEL4WS中是宏觀執行的。  〈二〉 BPEL4WS並不"可執行":
BPEL4WS雖然定義為一門商業執行語言,但實際上它並不執行商業流程中的任何細節,也就是說它一點也不涉及到商業資料的儲存和處理。BPEL4WS語言從本質上來說應該是一門描述性語言,它只是描述了什麼時候?以什麼順序?到哪兒?去調用那些Web服務?怎樣組織這些調用?罷了。因此,在BPEL4WS中並沒有出現複雜的資料結構和資料類型,也沒有關於資料存放區和持久化的操作,唯一涉及顯式資料操作的地方就是〈Assign〉的使用了,但資料只是一些臨時資料,一旦商業處理的流程結束,這些資料也就消失了,這些資料就好像是傳統程式語言中的變數一樣,但又沒有那麼複雜的資料類型。說BPEL4WS語言是商業流程執行語言是因為從宏觀上看,所有的操作都由BPEL4WS來完成,而其背後的操作,如Web服務的調用等是不可見的,也就是說是不透明的。這就好比軟體測試中的黑箱測試一樣,使用者只看到了自己應該看到的使用者介面,而不用去關心這些功能到底是怎樣實現的。
〈三〉 BPEL4WS是真正的分布式系統:
隨著INTERNET的迅速發展,在分布式技術領域也不斷湧現出新技術新思想。SOAP,XML以及基於它們的Web Services,這些新技術的出現為新的分散式處理模型提供了堅實的基礎,而BPEL4WS的誕生,才是分布式技術的真正升華。比起傳統的分布式系統來說,利用BPEL4WS實現的分布式系統具有更高的靈活性,這主要體現在以下幾個方面:
1〉各個節點機可以為異構系統;
2〉可以在運行時動態選擇節點機進行處理;
3〉可以採用各種通訊協定進行通訊,只要符合SOAP協議。==============================================================WS-BPEL 2.0規範參見http://www.oasis-open.org

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.