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:message>
    <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">
        <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:output>
        </wsdl:operation>
    </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代碼如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<!--
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"/>
            <assign>
                 <copy>
                        <from part="echoReturn" variable="echoResponse"/>
                        <to part="bpelReturn" variable="bpelResponse"/>
                 </copy>
            </assign>
            <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>處的?換爲任意一個字符串,右方就會輸出這個字符串。 運行成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章