在 SOA 架構下,業務流程建模與執行分離是核心設計原則。BPMN(Business Process Modeling Notation)提供圖形化建模語言,而 BPEL(Business Process Execution Language)則是可在流程引擎(如 Apache ODE)上執行的標準格式。本教程演示如何使用 Eclipse STP BPMN Modeler 建模、利用 ATL 轉換與 BABEL 工具鏈生成 BPEL,最終部署至 Apache ODE 運行環境。
| 組件 | 版本/說明 | 用途 |
|---|---|---|
| Eclipse Classic | 3.3.1 | 基礎 IDE 平台 |
| Eclipse STP All-in-One | I200710300730 | 包含 BPMN Modeler 的 SOA 工具平台 |
| Eclipse ATL Bundle | 2.0 Standard | 模型轉換引擎(STP BPMN → BABEL BPMN) |
| BABEL BPMN2BPEL | JAR 文件 | 命令行工具(BABEL BPMN → BPEL) |
| Apache ODE | 1.1 WAR | BPEL 流程執行引擎 |
| Apache Tomcat | 5.5.25 | Servlet 容器宿主 ODE |
| Java SE | 6 Update 3 | 運行時環境 |
安裝關鍵步驟:
STPbpmn_eclipse。ATL_eclipse。babelBPMNtoBPEL 目錄存放 BABEL JAR。CATALINA_HOME 環境變數;將 ode.war 放入 webapps 目錄。STPbpmn。mybiz_flow.bpmn。

addToyToCart、shippingEstimator)。<flow>。按照業務邏輯拖放元素並連線:
addToyToCart → viewCartwhile 迴區:shippingEstimator 循環直到條件 while_ok=false。checkout 後經 orderCheck 分支:失敗轉 orderFailed,成功進入並行網關。emailInvoice 與 shippingQueue,合流後 End。

STP BPMN 輸出的閘道器類型名稱與 BABEL 元模型不一致,需先手動替換 mybiz_flow.bpmn:
Parallel Gateway → GatewayParallel
Exclusive Data-based Gateway → GatewayDataBasedExclusive
Empty Start Event → EventStartEmpty
Empty End Event → EventEndEmpty
在 ATL 專案中導入 bpmn.ecore、stpmodel.ecore、bpmn2babel.atl,配置 Launch Configuration:Source Model 選 mybiz_flow.bpmn,Target Model 命名為 BABEL_mybiz_flow.bpmn,添加庫文件並運行。生成的中間文件位於 models/ 目錄。

cd babelBPMNtoBPEL
java -jar BPMN2BPEL.jar BABEL_mybiz_flow.bpmn
輸出文件 BPEL_BABEL_mybiz_flow.bpmn.bpel,重命名為 mybiz_flow.bpel 放入 apacheODE_process/mybiz_flow/。注意生成的 <while> 條件語法與手寫版本不同,需後續人工修正。
<deploy xmlns="https://www.apache.org/ode/schemas/dd/2007/03" ...>
<process name="pns:mybiz_flow">
<provide partnerLink="mybiz_flowPartnerLink">...</provide>
<provide partnerLink="mybiz_flow_servicePartnerLink">...</provide>
<invoke partnerLink="mybiz_flow_servicePartnerLink">...</invoke>
</process>
</deploy>
execute 操作)<partnerLinks> 與 <variables>,類型對應 WSDL 定義。<receive createInstance="yes"> 啟動 → assign 複製參數 → 串行/並行 <invoke> 調用支援服務 → <while> 迴圈 → <if> 分支 → <flow> 並行 → 結束。將包含 deploy.xml、兩個 WSDL、mybiz_flow.bpel 的目錄複製至 tomcat/webapps/ode/WEB-INF/processes/,啟動 Tomcat。控制台輸出 Deployment of artifact mybiz_flow successful 即表示部署成功。訪問 https://localhost:8080/ode/services/listServices 可查看已發布服務。

本教程完整演示了「建模 → 轉換 → 生成 → 部署」的端到端流程。下一步可使用 Axis2 根據 WSDL 生成支援服務的 Java 實現,或編寫另一個 BPEL 流程作為服務提供者,進一步構建完整的 SOA 應用鏈路。