ActiveBpel部署运行BPEL流程实例
生活随笔
收集整理的這篇文章主要介紹了
ActiveBpel部署运行BPEL流程实例
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本文接收使用ActiveBpel開(kāi)發(fā),部署和運(yùn)行BPEL流程實(shí)例。
??? 本文的例子工程和服務(wù)工程請(qǐng)見(jiàn)附件。
1. 安裝ActiveBpel5.0.2
??? 要安裝ActiveBpel5.0.2,需要先安裝JDK1.5,Tomcat。注意這里是JDK1.5版本的,ActiveBpel5.0.2不支持JDK1.5以上的版本。
??? (1) 安裝JDK1.5
??? 安裝jdk后設(shè)置JAVA_HOME= C:\Program Files\Java\jdk1.6.0_07,這是我的jdk的安裝目錄。
??? (2) 安裝Tomcat5.5.27
??? 具體的安裝過(guò)程這里就不再敘述,安裝完成后,設(shè)置環(huán)境變量CATALINA_HOME= E:\apache-tomcat-5.5.27,這是我的安裝目錄。
??? (3) 安裝ActiveBpel5.0.2
??? 設(shè)置完成CATALINA_HOME環(huán)境變量后,就可以安裝ActiveBpel5了,解壓rar包后安裝目錄下有install.bat,運(yùn)行這個(gè)文件,即可安裝成功。
2. 設(shè)計(jì)BPEL流程
??? 設(shè)計(jì)BPEL流程需要安裝BPEL流程設(shè)計(jì)工具,本文用到的BPEL設(shè)計(jì)工具是ActiveBpel Designer。
??? 本文開(kāi)發(fā)一個(gè)簡(jiǎn)單的流程實(shí)例,該Bpel流程只調(diào)用一個(gè)簡(jiǎn)單的echo服務(wù),該服務(wù)輸入一個(gè)字符串,返回的結(jié)果是同樣的一個(gè)字符串。因此整個(gè)Bpel流程的結(jié)果也是一個(gè)這樣的字符串。這個(gè)echo服務(wù)是mule開(kāi)發(fā)的服務(wù),工程名稱(chēng)echoService,工程見(jiàn)壓縮包。
??? 服務(wù)實(shí)現(xiàn)代碼很簡(jiǎn)單,如下。
package cn.xidian.repace.zhaolong;
public class EchoImp implements InterfaceEcho{
????????public String echo(String str){
????????????????return str;
????????}
}
??? 要開(kāi)發(fā)BPEL流程,需要有相關(guān)的WSDL文件,該Bpel工程用到兩個(gè)wsdl文件。一個(gè)是Bpel文件本身的wsdl文件BpelEchoTest.wsdl,一個(gè)是被調(diào)用服務(wù)的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>
??? 開(kāi)發(fā)好echoService mule服務(wù)后,運(yùn)行該服務(wù),在瀏覽器輸入服務(wù)地址,獲取wsdl文件,另存為EchoTest.wsdl文件。
??? 使用ActiveBpel Designer開(kāi)發(fā)流程,工程名是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. 部署流程
??? 開(kāi)發(fā)完成流程后就可以部署流程了。選擇File/New/Deployment Descriptor,新建流程描述符,選擇該工程下的mybpel.bpel文件,點(diǎn)擊“下一步”。見(jiàn)到下圖,進(jìn)行如下圖設(shè)置。
??? 然后將該工程export,生成一個(gè)bpr文件,文件名為T(mén)estBpel.bpr,將該文件放到Tomcat目錄下的bpr文件夾下,這個(gè)文件夾是安裝activebpel生成的。
在瀏覽器中輸入http://localhost:8080/active-bpel/servlet/AxisServlet 即可查看到該流程服務(wù)的項(xiàng),如下圖所示。
4. 運(yùn)行流程
??? 部署完成流程后,就可以運(yùn)行了。運(yùn)行有兩種方式,一種是代碼方式,一種是使用soup發(fā)送方式,發(fā)送soup消息給該流程,返回結(jié)果。
??? 第一種代碼方式是普通的方式,使用Axis2的服務(wù)調(diào)用方式調(diào)用bpel流程服務(wù)即可,這里就不再詳細(xì)描述,請(qǐng)見(jiàn)我的另一篇文章:使用Eclipse+Axis2構(gòu)建Web Service應(yīng)用(http://panpan.blog.51cto.com/489034/119204)。
??? 第二種方式是使用soupui軟件,安裝好soupui軟件后,新建工程,輸入名稱(chēng)和剛才的bpel流程地址:http://localhost:8080/active-bpel/services/MyBpelPLTService?wsdl,輸入數(shù)據(jù)。把<in0 xsi:type="xsd:string">?</in0>處的?換為任意一個(gè)字符串,右方就會(huì)輸出這個(gè)字符串。 運(yùn)行成功。
??? 本文的例子工程和服務(wù)工程請(qǐng)見(jiàn)附件。
1. 安裝ActiveBpel5.0.2
??? 要安裝ActiveBpel5.0.2,需要先安裝JDK1.5,Tomcat。注意這里是JDK1.5版本的,ActiveBpel5.0.2不支持JDK1.5以上的版本。
??? (1) 安裝JDK1.5
??? 安裝jdk后設(shè)置JAVA_HOME= C:\Program Files\Java\jdk1.6.0_07,這是我的jdk的安裝目錄。
??? (2) 安裝Tomcat5.5.27
??? 具體的安裝過(guò)程這里就不再敘述,安裝完成后,設(shè)置環(huán)境變量CATALINA_HOME= E:\apache-tomcat-5.5.27,這是我的安裝目錄。
??? (3) 安裝ActiveBpel5.0.2
??? 設(shè)置完成CATALINA_HOME環(huán)境變量后,就可以安裝ActiveBpel5了,解壓rar包后安裝目錄下有install.bat,運(yùn)行這個(gè)文件,即可安裝成功。
2. 設(shè)計(jì)BPEL流程
??? 設(shè)計(jì)BPEL流程需要安裝BPEL流程設(shè)計(jì)工具,本文用到的BPEL設(shè)計(jì)工具是ActiveBpel Designer。
??? 本文開(kāi)發(fā)一個(gè)簡(jiǎn)單的流程實(shí)例,該Bpel流程只調(diào)用一個(gè)簡(jiǎn)單的echo服務(wù),該服務(wù)輸入一個(gè)字符串,返回的結(jié)果是同樣的一個(gè)字符串。因此整個(gè)Bpel流程的結(jié)果也是一個(gè)這樣的字符串。這個(gè)echo服務(wù)是mule開(kāi)發(fā)的服務(wù),工程名稱(chēng)echoService,工程見(jiàn)壓縮包。
??? 服務(wù)實(shí)現(xiàn)代碼很簡(jiǎn)單,如下。
package cn.xidian.repace.zhaolong;
public class EchoImp implements InterfaceEcho{
????????public String echo(String str){
????????????????return str;
????????}
}
??? 要開(kāi)發(fā)BPEL流程,需要有相關(guān)的WSDL文件,該Bpel工程用到兩個(gè)wsdl文件。一個(gè)是Bpel文件本身的wsdl文件BpelEchoTest.wsdl,一個(gè)是被調(diào)用服務(wù)的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>
??? 開(kāi)發(fā)好echoService mule服務(wù)后,運(yùn)行該服務(wù),在瀏覽器輸入服務(wù)地址,獲取wsdl文件,另存為EchoTest.wsdl文件。
??? 使用ActiveBpel Designer開(kāi)發(fā)流程,工程名是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. 部署流程
??? 開(kāi)發(fā)完成流程后就可以部署流程了。選擇File/New/Deployment Descriptor,新建流程描述符,選擇該工程下的mybpel.bpel文件,點(diǎn)擊“下一步”。見(jiàn)到下圖,進(jìn)行如下圖設(shè)置。
??? 然后將該工程export,生成一個(gè)bpr文件,文件名為T(mén)estBpel.bpr,將該文件放到Tomcat目錄下的bpr文件夾下,這個(gè)文件夾是安裝activebpel生成的。
在瀏覽器中輸入http://localhost:8080/active-bpel/servlet/AxisServlet 即可查看到該流程服務(wù)的項(xiàng),如下圖所示。
4. 運(yùn)行流程
??? 部署完成流程后,就可以運(yùn)行了。運(yùn)行有兩種方式,一種是代碼方式,一種是使用soup發(fā)送方式,發(fā)送soup消息給該流程,返回結(jié)果。
??? 第一種代碼方式是普通的方式,使用Axis2的服務(wù)調(diào)用方式調(diào)用bpel流程服務(wù)即可,這里就不再詳細(xì)描述,請(qǐng)見(jiàn)我的另一篇文章:使用Eclipse+Axis2構(gòu)建Web Service應(yīng)用(http://panpan.blog.51cto.com/489034/119204)。
??? 第二種方式是使用soupui軟件,安裝好soupui軟件后,新建工程,輸入名稱(chēng)和剛才的bpel流程地址:http://localhost:8080/active-bpel/services/MyBpelPLTService?wsdl,輸入數(shù)據(jù)。把<in0 xsi:type="xsd:string">?</in0>處的?換為任意一個(gè)字符串,右方就會(huì)輸出這個(gè)字符串。 運(yùn)行成功。
轉(zhuǎn)載于:https://blog.51cto.com/panpan/185562
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的ActiveBpel部署运行BPEL流程实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Asp.net基础概念之 事件
- 下一篇: 搜索引擎指令站长常用搜索引擎命令汇总