WS-BPEL(Web Services Business Process Execution Language)由 OASIS 制定,廠商中立規範,將業務流程定義為 Web 服務間互動集合。兩種描述方式:
Apache ODE (Orchestration Director Engine) 為 WS-BPEL 2.0 實現,執行流程、與 Web 服務通訊。Eclipse BPEL 專案提供可視化開發插件。本文基於 ODE 1.1 與 Eclipse BPEL M3 示範完整流程。
Apache ODE 安裝:下載 ODE,啟動 Tomcat,用 Tomcat Manager (https://localhost:8080/manager/html) 部署 ode.war。驗證:https://localhost:8080/ode/ 顯示狀態。
Eclipse BPEL 安裝:Help > Software Updates > Find and Install > New Remote Site,添加 https://download.eclipse.org/technology/bpel/update-site/,選擇 BPEL Designer for Eclipse 安裝,重啟 Eclipse。
HelloWorld 專案。HelloWorld。input/output,序列含 receiveInput、replyOutput。在 receiveInput 與 replyOutput 間拖放 Assign,設定兩步賦值:
Fixed Value,輸入 XML 結構 <tns:HelloWorldResponse xmlns:tns="..."><tns:result/></tns:HelloWorldResponse>,To 選 output/payload。Expression,輸入 XPath 1.0 運算式 concat("Hello ", $input.payload/tns:input),To 選 output/payload/tns:result。Eclipse BPEL 提供 XPath 高亮與自動完成。嚮導生成的 WSDL 僅含連接埠型別,需手動添加:
HelloWorldBinding,選連接埠型別 HelloWorld,Generate Binding Content > 選 SOAP 協議、document-literal 樣式。HelloWorldService,連接埠 HelloWorldPort,地址 https://localhost:8080/ode/processes/HelloWorld,綁定選 HelloWorldBinding。在 BPEL/WSDL 目錄建立 deploy.xml:
<?xml version="1.0" encoding="UTF-8"?>
<deploy xmlns="https://ode.fivesight.com/schemas/2006/06/27/dd"
xmlns:pns="https://www.ibm.com/wd2/ode/HelloWorld"
xmlns:wns="https://www.ibm.com/wd2/ode/HelloWorld">
<process name="pns:HelloWorld">
<active>true</active>
<provide partnerLink="client">
<service name="wns:HelloWorldService" port="HelloWorldPort"/>
</provide>
</process>
</deploy>
熱部署:將流程資料夾複製至 Tomcat webapps/ode/WEB-INF/processes,監控 logs/catalina.out。測試:右鍵 WSDL > Web Services > Test with Web Services Explorer,輸入文字呼叫 process 操作,獲取問候語回應。
用 Eclipse WTP 產生 Axis 基礎用戶端:
HelloWorldServiceLocator locator = new HelloWorldServiceLocator();
HelloWorldRequest hwRequest = new HelloWorldRequest();
hwRequest.setInput("developerWorks!");
HelloWorldResponse hwResponse = locator.getHelloWorldPort().process(hwRequest);
String output = hwResponse.getResult();
pmapi.wsdl(RPC 風格,難用 Web Services Explorer)。建議用 Axis2 ServiceClientUtil(ode-axis2 庫)調用,範例展示列出所有流程實例狀態。org.apache.ode.bpel.iapi.BpelEventListener,覆寫 onEvent、startup、shutdown。JAR 放入 webapps/ode/WEB-INF/lib,在 ode-axis2.properties 註冊 ode-axis2.event.listeners=全類名。BPEL 2.0 以圖形化方式建模長期運行工作流,結合 Eclipse BPEL(開發)與 Apache ODE(執行)開源組合,可構建複雜應用。簡單流程驗證成功,但實際業務應用前建議深入評估優缺點。