WSO2 Business Process Server(BPS)詳細教程:結合Application Server服務(附源碼下載)

來源:互聯網
上載者:User

-------------- 本欄目由ChiChi同學特約播映 -------------

======= 同時鳴謝115網盤提供的下載空間 =======


************* 看完之後請點擊頁面下方的"頂" ************

一.配置BPEL開發環境

需要在Eclipse EE中安裝BPEL外掛程式
參考: http://blog.csdn.net/xiaoanian/article/details/7080015

二.BPEL工程配置

1.建立BPEL工程



2.添加BPEL檔案

注意Template一定要選擇Synchronous BPEL Process

Service Address是將來要部署到BPS上之後的地址(......因為這個屬性是用在單獨啟動並執行時候,而咱們是在BPS中用,不知道可不可以隨便填)

3.添加Application Server中的HelloService的WSDL

為了使用HelloService,我們要用到它的WSDL檔案

開啟HelloService的WSDL1.1(不能用WSDL2),另存新檔HelloService.wsdl

複製HelloService.wsdl到工程bpelContent目錄下

 

在HelloServiceProcess.bpel中添加<bpel:import>標籤,將HelloService.wsdl 匯入進來,
注意其名空間是HelloService.wsdl 中指定targetNamespace

三.添加名空間

1.在HelloService.wsdl中添加xmlns:plnk名空間,從HelloServiceProcessArtifacts.wsdl拷過來

2.在HelloServiceProcess.bpel中添加xmln:ns名空間,從HelloService.wsdl拷過來.

這個名空間其實是HelloService.wsdl中指定的 targetNamespace.

拷到bpel中是為了能引用HelloService.wsdl的定義元素 (跟java的import差不多).
如果要添加更多的wsdl,這一步也不可少,並且要保證名空間首碼唯一,比如不能在不同的wsdl中
都出現xmln:ns而指向不同的名空間.

鑒於xxx,lcx,cy,gg等戰鬥在抗擊chichi一線的勞動婦女對名空間甚為疑惑, 並且考慮到恐怖的run豐肯定也會confused,專門貼一張圖

來解釋一下名空間.

四.添加代碼


1.在HelloService.wsdl中添加<plnk:partnerLinkType>,這就是剛才我們添加xmlns:plnk名空間的原因

下面我們轉到HelloServiceProcess.bpel中

2.在<bpel:partnerLinks>中添加<bpel:partnerLink>,指向HelloService.wsdl中的partnerLinkType

注意是partnerRole而非myRole.

3.在<bpel:variables>添加中間變數,做為HelloService的輸入輸出

4.在<bpel:sequence>添加<bpel:invoke>,添加到<bpel:receive>和<bpel:reply>之間

這一步就是調用App Server的HelloService服務

5.點擊編輯視窗左下方的Design,我們看到如下的流程

6.再回到Source,還要添加訊息類型轉換模組.因為整個process輸入的變數是"input"(類型是tns:HelloServiceProcessRequestMessage,在HelloServiceProcessArtifacts.wsdl中定義),而我們調用的HelloService服務的輸入是"service_input"(類型是ns:greetRequest,在HelloService.wsdl中定義),因此必須要進行類型轉換.類型的轉換要用到<bpel:assign>.該過程相對複雜,不宜手動編寫代碼,需要自動產生.我們先在<bpel:invoke>前後分別添加<bpel:assign>,取名為assignInput和assignOutput,不填任何內容,現在我們看到報錯,不要緊,往下看

7.點擊Design,進行如下操作

編輯assignInput

 

編輯assignOutput

8.添加deploy.xml
右鍵bpelContent檔案夾->new->others->BPEL2.0->Apache ODE Deployment Descriptor, next->finish

雙擊開啟,
在client 那行的 Associated Port 列選擇HelloServiceProcessPort,其他列自動完成
在helloServiceBpelLink那行的Associated Port列選擇HelloServiceHttpSoap11Endpoint,其他列自動完成
儲存.

好了,整個BPEL就部署好了

注意,如果你更改了bpel,wsdl檔案,一定要同步更新deploy.xml, 如下:點擊右上方連結Associated BPEL ........update!

五.打包並上傳

1.進入工程檔案夾的 beplContent 下,將5個檔案打包成 zip 檔案

 

2.進入BPS,進入main/Business Process/Add BPEL,上傳檔案

注意,如果已經部署過服務名相同的服務,先要進入main/Business Process/Deployed Packages,把以前的服務Undepoly掉.

 

3.好了,我們看到 Web Services/list 列表中多了一個HelloServiceProcess

六.手動wsdl2java


因為BPS裡Generate Client報錯(不信你隨便選一個bepl service試試),所以我們必須手動產生java檔案.
需要用到axis-1.6.1包,

http://axis.apache.org/axis2/java/core/download.cgi

如果你以前用Client的話多半已經下過了.
解壓後我們進入到其bin目錄下

輸入如下命令: 

wsdl2java.bat -uri http://192.168.10.111:9766/services/HelloServiceProcess?wsdl -o ./temp -t

uri是你的BPS的HelloServiceProcess的wsdl1.1的地址. "-o ./temp"表示將產生的程式碼到temp檔案夾下(先建立)
產生成功之後,就可以將兩個java檔案複製到Client的工程中使用了

 

七.使用Client

假設我們的名字叫 KongBuDeRunFeng, 運行結果是這樣的

 


八.源碼下載

HelloServiceProcess BPEL工程, 可直接匯入到Eclipse中. (需要BPEL外掛程式)

http://115.com/file/e6p3ybm8#HelloServiceProcess_EclipseEE_Project.rar

HelloServiceProcesClient工程,可直接匯入到Eclipse中

http://115.com/file/e6p3yo2b#HelloServiceProcessClient_EclipseEE_Project.rar

九.總結

BPS可以用來串連各種服務,並定義流程 ,操作方法大同小異.

需要注意的一點是名空間的引用.還有 用<bpel:invoke>調用其他服務時比較麻煩的一點是要用<bepl:assign>進行類型轉換和賦值,這一步最好讓程式自動產生

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.