Q:什么是 BPEL?
A: BPEL是一門用于自動(dòng)化業(yè)務(wù)流程的形式規(guī)約語言。 用XML文檔寫入BPEL中的流程能在Web 服務(wù)之間以標(biāo)準(zhǔn)化的交互方式得到精心組織。這些流程能夠在任何一個(gè)符合BPEL規(guī)范的平臺(tái)或產(chǎn)品上執(zhí)行。 所以,通過允許顧客們?cè)诟鞣N各樣的創(chuàng)作工具和執(zhí)行平臺(tái)之間移動(dòng)這些流程,BPEL使得他們保護(hù)了他們?cè)诹鞒套詣?dòng)化上的投資。盡管以前想使業(yè)務(wù)流程定義標(biāo)準(zhǔn)化,但BPEL已經(jīng)引起了史無前例的興趣,而且它最早在軟件供應(yīng)商中獲得大量認(rèn)可。
Q: BPEL、WSBPEL和 BPEL4WS之間的區(qū)別是什么?
A: 除了歷史參考文獻(xiàn)不同外,沒有什么其他的不同。這些名字都涉及到相同的未決標(biāo)準(zhǔn)?!癇PEL4WS”是起初規(guī)范的名字,它由BEA、IBM和Microsoft編寫和公布的。“WSBPEL”目前是規(guī)范和未決標(biāo)準(zhǔn)的名稱。當(dāng)這個(gè)規(guī)范提交到OASIS時(shí),出于Web服務(wù)相關(guān)標(biāo)準(zhǔn)的努力,按照OASIS命名方案更換了這個(gè)名字。盡管如此,大部分團(tuán)體仍然簡(jiǎn)單地稱這個(gè)標(biāo)準(zhǔn)為“BPEL”。
Q: 什么是 BPELJ?
A: BPELJ 是BPEL和Java 語言的組合,它允許一起運(yùn)用這兩種編程語言來構(gòu)建完整的業(yè)務(wù)流程應(yīng)用程序。通過允許BPEL和Java一起工作, BPELJ使得每種語言可以做它最擅長(zhǎng)的事。BPELJ優(yōu)于BPEL,但沒有它那么有競(jìng)爭(zhēng)力。
Q:如何把BPELJ和 BPEL聯(lián)系起來,它們之間區(qū)別在哪里?
A: BPEL基本上向編程發(fā)展,它支持業(yè)務(wù)處理流程的邏輯。這些業(yè)務(wù)處理流程是獨(dú)立的應(yīng)用程序,這些應(yīng)用使用Web服務(wù)作為實(shí)現(xiàn)業(yè)務(wù)功能的活動(dòng)。BPEL 不會(huì)成為一門通用的編程語言。然而,有人認(rèn)為BPEL將和用來實(shí)現(xiàn)業(yè)務(wù)功能的其他語言(少部分的編程)結(jié)合起來。為了方便BPEL和Java 結(jié)合起來,BPELJ對(duì)BPEL做了一些小的改動(dòng)并且做了一些擴(kuò)展。
Q: BPEL不是針對(duì)業(yè)務(wù)分析員嗎? 如果是,為什么把Java加進(jìn)來?
A: 有這么一個(gè)普遍的誤解,那就是BPEL想達(dá)到非程序設(shè)計(jì)人員或者所謂的“業(yè)務(wù)分析員”也能使用的程度。這個(gè)錯(cuò)誤的概念部分根源于市場(chǎng)上許多針對(duì)于這組用戶的業(yè)務(wù)流程管理工具這樣的一個(gè)事實(shí)。無可置疑,工具供應(yīng)商為構(gòu)建BPEL和BPELJ流程提供了廣泛的可視化接口,但是語言本身的目的是為了開發(fā)人員。
Q: BPELJ如何工作?
A: 通過允許在BPEL流程定義中包含Java代碼段(稱為Java片斷),BPELJ使得Java 和BPEL能夠相互協(xié)作。
Q: 難道不應(yīng)該考慮允許使用任何語言(C#、JavaScript和Java等)來設(shè)計(jì)代碼片斷嗎?
A: 這個(gè)片斷背后想法是有代表性,我們希望它能用于許多不同的語言。然而,要集成BPEL和一門特定的語言包含的不僅僅是用XML包裝目標(biāo)語言。集成變量綁定、事務(wù)管理、調(diào)用路徑等問題必須周全地定義,然而,每種語言是用不同的方法解決這些問題,對(duì)所有語言進(jìn)行統(tǒng)一的綁定是不現(xiàn)實(shí)的。所以, BPELJ集中解決 BPEL 和 Java的這些集成問題。我們期待著解決其他的語言的集成問題 。
Q: 難道BPELJ 沒違反“ BPEL中活動(dòng)是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ù)是特別有價(jià)值的。那些把業(yè)務(wù)邏輯部署成J2EE組件的人員應(yīng)該能夠在業(yè)務(wù)流程中充分利用這些組件,BPEL是描述這個(gè)過程最好的一門語言。
一些人爭(zhēng)論說在程序片斷中用Java來完成少量計(jì)算和數(shù)據(jù)操作非常合適,但是應(yīng)該通過XML/Web服務(wù)視圖強(qiáng)制所有服務(wù)調(diào)用。這是一個(gè)特別站不住腳的觀點(diǎn)。如果您有一個(gè)用Java代碼片斷寫的流程,很明顯,有一個(gè)Java開發(fā)人員參與創(chuàng)建這個(gè)流程。
這意味著您可能有下面的設(shè)想:有一個(gè)開發(fā)人員熟悉用Java調(diào)用組件,他想用Java操縱組件的輸入和輸出。迫使那個(gè)人把所有的調(diào)用看成好像是調(diào)用Web 服務(wù)一樣,這會(huì)產(chǎn)生一層混亂,阻止考慮業(yè)務(wù)邏輯。
Q: 這意味著現(xiàn)在用在WebLogic Integration 8.1上的流程定義無效了嗎?
A: 根本不會(huì),BEA 在2003年策劃并倡導(dǎo)了JSR 207,把流程定義(命名為“JPD”)提交給 WebLogic Integration 8.1,并把它作為小組工作的初始基礎(chǔ)。 BEA 和 IBM 已經(jīng)提交BPELJ 給 JSR 207 工作小組考慮。BPELJ 和 JPD有很多相同的地方,事實(shí)上它已經(jīng)開始詳細(xì)設(shè)計(jì)使得今后JPD能平穩(wěn)遷移到BPELJ上 。
Q: 如何把BPELJ和 JSR 207聯(lián)系起來?
A: BPELJ已經(jīng)提交給 JSR 207,并建議考慮使用BPELJ作為JSR 工作的基礎(chǔ)。
Q: 這對(duì)BPEL意味著什么?它將會(huì)作為一個(gè)標(biāo)準(zhǔn)分裂出來么? IBM 和 BEA 正在放棄BPEL么?
A: 根本不會(huì)。BPELJ是一個(gè)完全在BPEL標(biāo)準(zhǔn)的核心思想和意圖之內(nèi)的延伸。為了提供一個(gè)完全的流程設(shè)計(jì)環(huán)境,一直以來都希望BPEL能和其他的語言結(jié)合。IBM 和 BEA 都承諾支持BPEL 并且繼續(xù)作為OASIS的主要的貢獻(xiàn)者,正在努力達(dá)到語言的標(biāo)準(zhǔn)化。
Q: BEA對(duì)于BPEL和BPELJ的產(chǎn)品計(jì)劃是什么?
A: 對(duì)于在2004年春季時(shí)間范圍內(nèi)的WebLogic Integration 8.1,BEA將提供一個(gè)BPEL導(dǎo)出工具 ,在下一個(gè)重要的WebLogic Integration發(fā)布中充分支持最終BPEL標(biāo)準(zhǔn)。 BEA 也在下一個(gè)重要的WebLogic Integration發(fā)布中對(duì)BPELJ提供充分的支持。
Q: 如果我現(xiàn)在用WebLogic Integration 8.1會(huì)怎樣呢?我能遷移到BPELJ嗎?
A: 是的,在下一個(gè)重要的WebLogic Integration 發(fā)布中, BEA將為從JPD自動(dòng)遷移到BPEL/BPELJ上提供工具。