天天看點

ActiveBpel部署運作BPEL流程執行個體

    本文接收使用ActiveBpel開發,部署和運作BPEL流程執行個體。

    本文的例子工程和服務工程請見附件。

1. 安裝ActiveBpel5.0.2

    要安裝ActiveBpel5.0.2,需要先安裝JDK1.5,Tomcat。注意這裡是JDK1.5版本的,ActiveBpel5.0.2不支援JDK1.5以上的版本。

    (1) 安裝JDK1.5

    安裝jdk後設定JAVA_HOME= C:\Program Files\Java\jdk1.6.0_07,這是我的jdk的安裝目錄。

    (2) 安裝Tomcat5.5.27

    具體的安裝過程這裡就不再叙述,安裝完成後,設定環境變量CATALINA_HOME= E:\apache-tomcat-5.5.27,這是我的安裝目錄。

    (3) 安裝ActiveBpel5.0.2

    設定完成CATALINA_HOME環境變量後,就可以安裝ActiveBpel5了,解壓rar包後安裝目錄下有install.bat,運作這個檔案,即可安裝成功。

2. 設計BPEL流程

    設計BPEL流程需要安裝BPEL流程設計工具,本文用到的BPEL設計工具是ActiveBpel Designer。

    本文開發一個簡單的流程執行個體,該Bpel流程隻調用一個簡單的echo服務,該服務輸入一個字元串,傳回的結果是同樣的一個字元串。是以整個Bpel流程的結果也是一個這樣的字元串。這個echo服務是mule開發的服務,工程名稱echoService,工程見壓縮包。

    服務實作代碼很簡單,如下。

package cn.xidian.repace.zhaolong;

public class EchoImp implements InterfaceEcho{

        public String echo(String str){

                return str;

        }

}

    要開發BPEL流程,需要有相關的WSDL檔案,該Bpel工程用到兩個wsdl檔案。一個是Bpel檔案本身的wsdl檔案BpelEchoTest.wsdl,一個是被調用服務的wsdl檔案EchoTest.wsdl。

    Bpel本身的wsdl檔案BpelEchoTest.wsdl如下。

<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions targetNamespace="http://zhaolong.repace.xidian.cn" xmlns:impl="http://zhaolong.repace.xidian.cn" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:intf="http://zhaolong.repace.xidian.cn"xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">

    <wsdl:message name="bpelResponse">

        <wsdl:part name="bpelReturn" type="xsd:string"/>

    </wsdl:message>

    <wsdl:message name="bpelRequest">

        <wsdl:part name="in0" type="xsd:string"/>

    <wsdl:portType name="BpelProxy0">

        <wsdl:operation name="bpel" parameterOrder="in0">

            <wsdl:input name="bpelRequest" message="impl:bpelRequest"/>

            <wsdl:output name="bpelResponse" message="impl:bpelResponse"/>

        </wsdl:operation>

    </wsdl:portType>

    <wsdl:binding name="bpelTestSoapBinding" type="impl:BpelProxy0">

        <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"/>

        <wsdl:operation name="bpel">

        <wsdlsoap:operation soapAction="" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"/>

            <wsdl:input name="bpelRequest">

        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://zhaolong.repace.xidian.cn" use="encoded" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"/>

            </wsdl:input>

            <wsdl:output name="bpelResponse">

            </wsdl:output>

    </wsdl:binding>

    <wsdl:service name="bpelTest">

        <wsdl:port name="bpelTest" binding="impl:bpelTestSoapBinding">

        <wsdlsoap:address location="http://202.117.118.183:33002/services/bpelTest" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"/>

        </wsdl:port>

    </wsdl:service>

<plnk:partnerLinkType name="MyBpelPLT" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">

     <plnk:role name="bpel">

            <plnk:portType name="impl:BpelProxy0"/>

     </plnk:role>

</plnk:partnerLinkType>

</wsdl:definitions>

    開發好echoService mule服務後,運作該服務,在浏覽器輸入服務位址,擷取wsdl檔案,另存為EchoTest.wsdl檔案。

    使用ActiveBpel Designer開發流程,工程名是TestBpel,bpel檔案名是mybpel.bpel,圖形如下所示。

    mybpel.bpel代碼如下所示。

<!--

BPEL Process Definition

Edited using ActiveBPEL(tm) Designer Version 2.1.0 (http://www.active-endpoints.com)

-->

<process xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:ns1="http://zhaolong.repace.xidian.cn" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="mybpel" suppressJoinFailure="yes" targetNamespace="http://mybpel">

     <partnerLinks>

            <partnerLink myRole="bpel" name="MyBpelPLT" partnerLinkType="ns1:MyBpelPLT"/>

            <partnerLink name="MyEchoPLT" partnerLinkType="ns1:MyEchoPLT" partnerRole="echo1"/>

     </partnerLinks>

     <variables>

            <variable messageType="ns1:bpelRequest" name="bpelRequest"/>

            <variable messageType="ns1:bpelResponse" name="bpelResponse"/>

            <variable messageType="ns1:echoRequest" name="echoRequest"/>

            <variable messageType="ns1:echoResponse" name="echoResponse"/>

     </variables>

     <sequence>

            <receive createInstance="yes" operation="bpel" partnerLink="MyBpelPLT" portType="ns1:BpelProxy0" variable="bpelRequest"/>

            <assign>

                 <copy>

                        <from part="in0" variable="bpelRequest"/>

                        <to part="in0" variable="echoRequest"/>

                 </copy>

            </assign>

            <invoke inputVariable="echoRequest" operation="echo" outputVariable="echoResponse" partnerLink="MyEchoPLT" portType="ns1:EchoProxy0"/>

                        <from part="echoReturn" variable="echoResponse"/>

                        <to part="bpelReturn" variable="bpelResponse"/>

            <reply operation="bpel" partnerLink="MyBpelPLT" portType="ns1:BpelProxy0" variable="bpelResponse"/>

     </sequence>

</process>

3. 部署流程

    開發完成流程後就可以部署流程了。選擇File/New/Deployment Descriptor,建立流程描述符,選擇該工程下的mybpel.bpel檔案,點選“下一步”。見到下圖,進行如下圖設定。

    然後将該工程export,生成一個bpr檔案,檔案名為TestBpel.bpr,将該檔案放到Tomcat目錄下的bpr檔案夾下,這個檔案夾是安裝activebpel生成的。

在浏覽器中輸入http://localhost:8080/active-bpel/servlet/AxisServlet 即可檢視到該流程服務的項,如下圖所示。

4. 運作流程

    部署完成流程後,就可以運作了。運作有兩種方式,一種是代碼方式,一種是使用soup發送方式,發送soup消息給該流程,傳回結果。

    第一種代碼方式是普通的方式,使用Axis2的服務調用方式調用bpel流程服務即可,這裡就不再較長的描述,請見我的另一篇文章:使用Eclipse+Axis2建構Web Service應用(http://panpan.blog.51cto.com/489034/119204)。

    第二種方式是使用soupui軟體,安裝好soupui軟體後,建立工程,輸入名稱和剛才的bpel流程位址:http://localhost:8080/active-bpel/services/MyBpelPLTService?wsdl,輸入資料。把<in0 xsi:type="xsd:string">?</in0>處的?換為任意一個字元串,右方就會輸出這個字元串。 運作成功。

<a href="http://down.51cto.com/data/2353526" target="_blank">附件:http://down.51cto.com/data/2353526</a>

     本文轉自panpan3210 51CTO部落格,原文連結:http://blog.51cto.com/panpan/185562,如需轉載請自行聯系原作者