Q:什么是 BPEL?
A: BPEL是一門用于自動化業(yè)務(wù)流程的形式規(guī)約語言。 用XML文檔寫入BPEL中的流程能在Web 服務(wù)之間以標(biāo)準(zhǔn)化的交互方式得到精心組織。這些流程能夠在任何一個符合BPEL規(guī)范的平臺或產(chǎn)品上執(zhí)行。 所以,通過允許顧客們在各種各樣的創(chuàng)作工具和執(zhí)行平臺之間移動這些流程,BPEL使得他們保護了他們在流程自動化上的投資。盡管以前想使業(yè)務(wù)流程定義標(biāo)準(zhǔn)化,但BPEL已經(jīng)引起了史無前例的興趣,而且它最早在軟件供應(yīng)商中獲得大量認(rèn)可。
Q: BPEL、WSBPEL和 BPEL4WS之間的區(qū)別是什么?
A: 除了歷史參考文獻不同外,沒有什么其他的不同。這些名字都涉及到相同的未決標(biāo)準(zhǔn)。“BPEL4WS”是起初規(guī)范的名字,它由BEA、IBM和Microsoft編寫和公布的。“WSBPEL”目前是規(guī)范和未決標(biāo)準(zhǔn)的名稱。當(dāng)這個規(guī)范提交到OASIS時,出于Web服務(wù)相關(guān)標(biāo)準(zhǔn)的努力,按照OASIS命名方案更換了這個名字。盡管如此,大部分團體仍然簡單地稱這個標(biāo)準(zhǔn)為“BPEL”。
Q: 什么是 BPELJ?
A: BPELJ 是BPEL和Java 語言的組合,它允許一起運用這兩種編程語言來構(gòu)建完整的業(yè)務(wù)流程應(yīng)用程序。通過允許BPEL和Java一起工作, BPELJ使得每種語言可以做它最擅長的事。BPELJ優(yōu)于BPEL,但沒有它那么有競爭力。
Q:如何把BPELJ和 BPEL聯(lián)系起來,它們之間區(qū)別在哪里?
A: BPEL基本上向編程發(fā)展,它支持業(yè)務(wù)處理流程的邏輯。這些業(yè)務(wù)處理流程是獨立的應(yīng)用程序,這些應(yīng)用使用Web服務(wù)作為實現(xiàn)業(yè)務(wù)功能的活動。BPEL 不會成為一門通用的編程語言。然而,有人認(rèn)為BPEL將和用來實現(xiàn)業(yè)務(wù)功能的其他語言(少部分的編程)結(jié)合起來。為了方便BPEL和Java 結(jié)合起來,BPELJ對BPEL做了一些小的改動并且做了一些擴展。
Q: BPEL不是針對業(yè)務(wù)分析員嗎? 如果是,為什么把Java加進來?
A: 有這么一個普遍的誤解,那就是BPEL想達到非程序設(shè)計人員或者所謂的“業(yè)務(wù)分析員”也能使用的程度。這個錯誤的概念部分根源于市場上許多針對于這組用戶的業(yè)務(wù)流程管理工具這樣的一個事實。無可置疑,工具供應(yīng)商為構(gòu)建BPEL和BPELJ流程提供了廣泛的可視化接口,但是語言本身的目的是為了開發(fā)人員。
Q: BPELJ如何工作?
A: 通過允許在BPEL流程定義中包含Java代碼段(稱為Java片斷),BPELJ使得Java 和BPEL能夠相互協(xié)作。
Q: 難道不應(yīng)該考慮允許使用任何語言(C#、JavaScript和Java等)來設(shè)計代碼片斷嗎?
A: 這個片斷背后想法是有代表性,我們希望它能用于許多不同的語言。然而,要集成BPEL和一門特定的語言包含的不僅僅是用XML包裝目標(biāo)語言。集成變量綁定、事務(wù)管理、調(diào)用路徑等問題必須周全地定義,然而,每種語言是用不同的方法解決這些問題,對所有語言進行統(tǒng)一的綁定是不現(xiàn)實的。所以, BPELJ集中解決 BPEL 和 Java的這些集成問題。我們期待著解決其他的語言的集成問題 。
Q: 難道BPELJ 沒違反“ BPEL中活動是Web服務(wù),數(shù)據(jù)是XML,數(shù)據(jù)結(jié)構(gòu)用XML架構(gòu)描述”這一原則嗎?
A: 并不是世界上所有的服務(wù)都是Web服務(wù),它們也不應(yīng)該是。用J2EE更適合緊密耦合的系統(tǒng),在這種系統(tǒng)中,容器提供的功能如安全和事務(wù)是特別有價值的。那些把業(yè)務(wù)邏輯部署成J2EE組件的人員應(yīng)該能夠在業(yè)務(wù)流程中充分利用這些組件,BPEL是描述這個過程最好的一門語言。
一些人爭論說在程序片斷中用Java來完成少量計算和數(shù)據(jù)操作非常合適,但是應(yīng)該通過XML/Web服務(wù)視圖強制所有服務(wù)調(diào)用。這是一個特別站不住腳的觀點。如果您有一個用Java代碼片斷寫的流程,很明顯,有一個Java開發(fā)人員參與創(chuàng)建這個流程。
這意味著您可能有下面的設(shè)想:有一個開發(fā)人員熟悉用Java調(diào)用組件,他想用Java操縱組件的輸入和輸出。迫使那個人把所有的調(diào)用看成好像是調(diào)用Web 服務(wù)一樣,這會產(chǎn)生一層混亂,阻止考慮業(yè)務(wù)邏輯。
原文地址:http://dev2dev.bea.com.cn/techdoc/2004120205.html
盡管我知道了bpel的理論,但是仍然覺得寫一個bpel挺麻煩的。盡管有一些圖形化的編輯工具,但是仍然覺得并不好用,可能是我對bpel還是不熟悉的緣故吧
但是,我可以寫一個jave類,在這個類中用各個方法描述出了各個web service的組合調(diào)用關(guān)系。現(xiàn)在我要做的,就是找一個bpel編輯器和一個bpel服務(wù)器來將這個java類的邏輯變成bpel,然后運行之
為什么沒有人將這個步驟作成自動化的呢???是因為沒有必要還是因為別的什么??