标签:wso2
https://docs.wso2.com/display/BPS320/Quick+Start+Guide
本章将介绍如何设置和启动WSO2 BPS,在WSO2 BPS管理控制台创建、部署和测试一个BPEL流程发布包,该流程实现两个数的相加。
实现加法运算,不调用外部服务。
1、JDK 1.6.* 以上
2、从 http://wso2.com/products/business-process-server/下载wso2 BPS,解压
3、<PRODUCT_HOME>\bin 目录运行 wso2server.bat 启动BPS
1、下载安装WSO2 Developer Studio.(http://wso2.com/products/developer-studio)
2、选择 Developer Studio > Open Dashboard。
3、点击Composite Application Project,Project Name输入WS_NumberAdderCarbon,点击finish。
4、选中工程WS_NumberAdderCarbon,点击Developer Studio Dashboard中的BPEL workflow。
点击BPEL workflow出现如下界面
5、在“Create New BPEL Project” ,选择Create New BPEL workflow ,点击 Next 。
6、为BPEL流程输入相应的信息,例如输入以下信息,点击finish,将自动产生 AdderProcess1Artifacts.wsdl and AdderProcess1.bpel,工程结构如下图。
l Project name :BPELNumberAdder
l Process Name :AdderProcess
l Namespace :http://NumberAdder.com
l Template : Synchronous BPEL Process
现在可以设计BPEL流程了,在本例中我们设计两个数据相加。
1、打开AdderProcessArtifacts.wsdl,点击“Adder Process Request”旁边的箭头。
点击后出现“Inline Schema of AdderProcess1Artifacts.wsdl”选项卡,如下界面。默认有一个String类型的input变量。
重命名为x,类型为int。
添加另一个元素。右击 "AdderProcessRequestType" ,点击 “add element”, 命名为"y" ,类型为 "int". ,如下所示。
2、现在开始设计一个简单的业务流程,打开“AdderProcess.bpel”,删除“FIX_ME-Add_Business_Logic_Here”元素。右击元素/delete,删除后如下图所示。
3、现在需要在“receiveInput” 和“replyOutput” 活动间添加“Assign”活动,添加方法:从“Actions”中拖动“Assign”到“receiveInput” 和“replyOutput” 之间;另一种方法是右击“replyOutput”活动,在“insert before”选择“Assign”,结果如下。
4、配置“Assign”活动,点击BPEL流程中的“Assign”,点击“Property”窗口的“Details”,点击new,出现如下窗口。
我们使用Xpath表达式计算两个变量,并将结果分配给output变量。从“From”下拉列表选择“Expression”,从“To”下拉列表选择“Variable”。
“Xpath Expression”输入“ $input.payload/tns:x + $input.payload/tns:y ”,“To”选择“result:string”作为分配的变量。
当配置变量时,编辑器将发送一条消息请求初始化,点击yes。它将自动生成一个XML字符串完成变量初始化。
完成后如下图所示:
5、定义in和out接口,打开deploy.xml文件,从给定列表中选择“AdderProcessPort”为inbound地址端口,其他参数选择后将自动填充,outbound接口不需要提供端口因为在我们的业务流程中没有任何外部调用,填充完后如下图所示。
现在完成BPEL流程的编排,需要部署到WSO2 BPS上。
1、将“BPELNumberAdder”工程的选定文件导出为“File System”,起名为“bpelContent”并打包成“.zip”文件准备部署到BPS系统中。zip文件需要的文件至少包括1)deploy.xml,2).bpel文件,3).wsdl文件。
2、上传。点击WSO2 BPS/Manage/processes/Add,选择上传文件,点击upload。
上传成功,点击processes/List,出现下图所示界面。注意:上传的流程的状态都是“active”,点击“manage”的“retire”按钮,状态变为“retired”,此时流程不能创建实例,active状态下,一个流程可以创建多个实例。
流程上传成功后,会作为一个BPEL服务发布到Service中,点击services/list可以查看,如下图所示。
进入BPS的WEB端控制台,将bpelContent.zip上传至服务器后;进入“bpelContent”,点击相应流程的Process ID,如点击bpelContent-3的Process ID,结果如下。
点击WSDL Details部分的try it,即可测试刚刚创建好的“bpelContent”流程。出现如下,输入x的值为1,y的值为2,得到结果3。
开发BPEL流程调用单个web服务。该web流程返回两个数字相加的和。BPEL调用一个web服务并从web服务获得结果。Web服务实现两个数相加。Web服务部署在Axis2服务器。
l WSO2 BPS3.2.0
l Apache-Axis2 1.6
l WSO2 Developer Studio3.6.0
1、部署AdderService.aar文件到Apache Axis2 服务器。复制AdderService.aar文件到E:\test\axis2-1.6.2-bin\repository\services目录。
2、运行axis2Server。E:\test\wso2bps-3.2.0\samples\axis2Server目录下运行axis2server.bat。可以从http://localhost:8080/axis2/services/AdderService_0?wsdl查看AdderService.wsdl,保存AdderService_0.wsdl。
1、选择 Developer Studio > Open Dashboard。
4、点击Composite Application Project,Project Name输入WS_NumberAdderCarbon1,点击finish。
4、选中工程WS_NumberAdderCarbon1,点击Developer Studio Dashboard中的BPEL workflow。
点击BPEL workflow出现如下界面
5、在“Create New BPEL Project” ,选择Create New BPEL workflow ,点击 Next 。
6、为BPEL流程输入相应的信息,例如输入以下信息,点击finish,将自动产生 AdderProcess1Artifacts.wsdl and AdderProcess1.bpel,工程结构如下图。
l Project name :BPELNumberAdder1
l Process Name :AdderProcess1
l Namespace :http://NumberAdder1.com
l Template : Synchronous BPEL Process
注意: AdderProcess1Artifacts.wsdl 是用来暴露BPEL流程作为一个服务,它只定义端口类型、消息,为部署BPEL流程到WSO2 BPS,我们需要定义一个绑定(binding)和一个服务(Service),下一部分介绍如何创建BPEL流程的一个绑定和一个服务。
l 先添加一个绑定到AdderProcess1Artifacts.wsdl。
1、Developer Studio默认已经为我们创建binding,点击可以看到Properties选项卡提示的binding相关信息。
2、点击Generate Binding Content,出现如下所示界面,protocal 选择“SOAP” 然后点击Finish。
注意有三种SOAP绑定选项:Document Literal , rpc literal and rpc encoded,WSO2 BPS使用Axis2集成层,Axis2不支持rpc encoded 的SOAP绑定。所以不要选择rpc encoded 的SOAP绑定。
l 添加一个服务。
1、Developer Studio默认已经为我们创建服务,也可以删除原有AdderProcesser1服务,新建服务。右击编辑空白处,选择“Add Service ”,服务重命名为“NumberAdderService1”。选择port,在property 窗口重命名port名字为“ NumberAdderServicePort”,从下拉菜单选择刚才创建的绑定,完成后AdderProcessArtifacts.wsdl 如下所示。
现在我们完成了为我们的BPEL流程定义绑定和和服务。
变量在BPEL流程中表示流程的中间状态,也用作服务调用时的输入参数以及接收服务返回的结果。BPEL中的变量既可以是WSDL消息类型变量也可以是XML Schema所定义的复杂类型或元素。在我们的例子中,变量需要存储发送到伙伴服务或者从伙伴服务接收的消息,所以我们需要初始化变量来调用外部服务,这里使用的是WSDL消息类型变量。WSDL消息类型变量对应于WSDL文件中定义的web服务消息类型。下面看一下如何定义BPEL流程的输入输出变量,首先我们需要修改BPEL流程的服务描述文件。
现在我们开始定义输入输出参数,在本例中我们设计两个数的相加,BPEL编辑器自动帮我们创建好了输入输出参数,但是我们需要修改参数符合我们的服务。
1、打开AdderProcessArtifacts.wsdl,首先设置输入参数。点击“Adder Process Request”旁边的箭头。
2、点击后出现“Inline Schema of AdderProcess1Artifacts.wsdl ”选项卡,如下界面。默认有一个String类型的input变量。
重命名为x,类型为int。
3、添加另一个元素。右击 "AdderProcessRequestType" ,点击 “add element”, 命名为"y" ,类型为 "int" ,如下所示。
4、现在完成了输入参数的配置,同样的流程配置输出参数,命名为"result" ,类型为 "int" 。
提示:我们也可以通过Outline窗口添加元素,AdderProcessRequest → local type → sequence,可以看到我们创建的元素。
现在完成了WSDL的配置,开始设计BPEL流程。
1、打开“AdderProcess.bpel”,可以看到业务流程的模板,BPEL编辑器自动生成了“receiveInput”“replyOutput”活动,而且也产生了在这两个变量中使用的partnerLink 和variables ,删除“FIX_ME-Add_Business_Logic_Here”元素。右击元素/delete,删除后如下图所示。
注意:我们的BPEL流程需要调用外部服务(Adder Service),为调用服务我们需要分配input变量到外部服务的input,分配外部服务的响应到我们的BPEL流程的output,所以我们的场景需要两个assign活动和一个invoke活动。
2、在“receiveInput” 和“replyOutput” 活动间添加“Assign”活动,添加方法:从“Actions”中拖动“Assign”到“receiveInput” 和“replyOutput” 之间;另一种方法是右击“replyOutput”活动,在“insert before”选择“Assign”,结果如下。
3、添加“invoke”活动。添加invoke活动前需要添加一个Sequence。添加方法:从“Control2”中拖动“Sequence”到“assign”和“replyOutput”之间。
4、在Sequence,添加“invoke”活动,从action窗口拖动invoke到Sequence。
5、添加另一个“Assign”匹配外部服务响应与我们流程响应的变量。
1、导入“AdderService.wsdl”到我们的BPEL工程文件夹。右击BPEL工程选择Import,选择General ->“File System” .
完成后,点击finish。
2、点击“invoke”活动,点击“Property”窗口的“Details”。在“Partner Link” 下拉框选择“Create Global Partner Link” 起名为AdderServricePL.
3、然后弹出Partner-link类型对话框,类型来自于AdderService.wsdl。为添加伙伴链接类型,点击“Add WSDL”从Import Source部分选择Resources ,从项目文件夹选择AdderService.wsdl ,点击Ok。
4、然后点击“choose partner link type”的“ok”,提示输入伙伴类型名称,输入“AddPLT ”,点击“next”,输入角色1名称“AdderRole”,点击“finish”。
从quick pick选择add操作。
现在已经为invoke活动创建了一个伙伴链接,下一步为活动分配变量。
1、点击“AssignInputVaraiabes”,点击properties选显卡的的Details。初始化Input变量,点击New,从“from”列表选择“Input”->“payload:adderPorcessRequest” ,“to”列表选择“AdderServicePLRequest”->“parameters: add”
当配置变量时,编辑器将发送一条消息请求初始化,点击yes。它将自动生成一个XML字符串代码完成变量初始化。
完成后如下图所示:
现在我们的设计中有两个assign活动,一个““Fixed Value to Variable ”一个“variable to variable ”,现在配置它们。
2、点击 “Variable to Variable”,“From ”列表的“payload of the input” 设置为“x: int”,“To”列表的 “parameters: add of the AdderServicePLRequest”设置为“args0: int” 。
3、再添加一个“Variable to Variable”,From ”列表的“payload of the input” 设置为“y: int”,“To”列表的 “parameters: add of the AdderServicePLRequest”设置为“args1: int” 。
4、然后点击“Fixed Value to Variable”,检查Input变量
args0和 args1是否初始化,未初始化进行初始化。
5、相同的步骤设置“AssignOutputVaraiabes”。“from”列表的“parameter of AdderServicePLResponse”中的“return:int” 到“to”列表的“payload of the output”中的“result : int ” 。
注意:这里只使用了一种方式定义变量,实际上可以用不同方式初始化变量。从from和to列表可以选择。
1、打开deploy.xml文件,在这里可以设置BPEL流程的选项,如1)可以指定流程部署后的状态(activated,deactivated,retired),2)可以设置流程只在内存中运行,3) Inbound Interfaces (Service) and Outbound Interfaces (Invokes) 。 Inbound Interfaces (Service) 代表流程提供的服务,对每一个伙伴链接必须指定你想使用的服务、端口和绑定。Outbound Interfaces (Invokes)代表流程调用的接口。
2、定义Inbound 接口。Client伙伴链接对应于我们的BPEL流程,点击“Associate Port”,选择“NumberAdderServicePort1”,其他参数选择后将自动填充。
3、定义Outbound接口。在我们的例子中只有一个外部调用,所以需要指定AdderServicePL伙伴链接的服务、端口和绑定。填充完后如下图所示。
现在我们完成了BPEL流程的实现,下一步需要部署到WSO2 BPS上运行。
首先将BPEL工程打包为zip文件。打包方法:右击工程名->export->file system,如下图所示。
然后将工程打包成zip文件,至少包含wsdl文件、BPEL文件、deploy.xml文件。
启动WSO2 BPS,Processes->Add,选择文件,点击upload,即可将工程上传到BPS。
通过Processes->List列表可以查看部署的流程。
点击相应流程Process ID,出现流程详细信息相关界面,点击WSDL details部分的try it,可测试流程,如下图所示。
结果如下:
开发BPEL流程调用单个web服务。该web流程返回两个数字相加的和。BPEL调用一个web服务并从web服务获得结果。Web服务实现两个数相加。Web服务部署在tomcat服务器。
l WSO2 BPS3.2.0
l Tomcat7.0
l WSO2 Developer Studio3.6.0
1、启动Eclipse,建立一个动态web Project。file->new->other,查找Dynamic web Project。起名为dynamicwebproject。
工程下面建立两个包ws.example.add和ws.example.sub,建完后如下图所示。
部署。选择 AddService.java,右键WebService选项,选择 Create WebService。如图所示。
点击finish 就会生成java类对应的wsdl和配置文件,并发布到tomcat中,同时会生成调用服务的客户端。这里的WebService是为BPEL调用WebService实现流程做准备。
要想把生成的服务放到Tomcat目录下,把这个工程Export成一个war包即可。File->Export Web WAR File,选择保存位置,则会生成war包,把生成的war包复制到Tomcat_Home/webapps目录下,重启Tomcat,则完成服务的发布。
6、测试服务是否发布成功。在浏览器里输入http://localhost:8080/dynamicwebproject/services/AddService?wsdl 则能打开加法服务对应的wsdl.这也意味着服务发布成功了。
1、选择 Developer Studio > Open Dashboard。
2、点击Developer Studio Dashboard中的BPEL workflow。
点击BPEL workflow出现如下界面
3、在“Create New BPEL Project” ,选择Create New BPEL workflow ,点击 Next 。
4、为BPEL流程输入相应的信息,例如输入以下信息,点击finish,工程结构如下图。
l Project name :CaculatorProj
l Process Name :CaculatorProcess
l Namespace :http://www.pku.edu.cn/bpel/sample
l Template : Synchronous BPEL Process
很简单,就是把AddService.wsdl复制到工程目录里。如下图所示,导入addService.wsdl.
Bpel把涉及其中的所有服务都称之为伙伴链接。Bpel对应的wsdl本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的加法服务,减法服务,应该生成对应的伙伴链接。
在最右边的Partner Links中,增加两个链接:addPL,subPL,分别对应加法服务和减法服务。下面具体讲下addPL的配置。
1)点选上addPL,在属性视图中Details页面中点Browser..按钮,打开一个对话框。
2)点Add WSDL把用到的两个WSDL即AddService.wsdl加进来,这样会在CaculatorProcessArtifacts.wsdl文件中生成两条对应的<import>语句。加完后这个对话框也会把这两个wsdl文件中的接口都显示出来。
一定要记住,所谓的伙伴链接一定是针对某个wsdl文件的某个接口而言的。选上AddService接口,点Ok,弹出伙伴链接类型定义,把名字取为addPLT,点Next。要求输入Role Name,这里输入“addProvider”,点Finish完成。同时在属性视图中把ParterRole选为addProvider
主要是改输入输出,使之符合我们的要求。
1、打开AdderProcessArtifacts.wsdl,可以看到,默认生成的WSDL很简单,只有一个操作process,该操作有输入input,输出output. 如下图所示。首先设置输入参数。点击“Adder Process Request”旁边的箭头。
2、点击后出现如下界面。默认有一个String类型的input变量。
重命名为x,类型为int。
3、现在完成了输入参数的配置,同样的流程配置输出参数,命名为"result" ,类型为 "int" 。
每次invoke一个服务时都要有对应的变量,同时要进行赋值。我们这里要调用加法服务。因此需要额外加入addRequest,addResponse。加完后的效果如下:
Input,output变量都自动配置好了,对应CaculatorProcessArtifacts.wsdl定义的消息。下面以addRequest为例讲解配置过程。
1)点上addRequest变量,属性视图中切换到Details页,点右上角的Browse..按钮,打开类型选择对话框。addRequest是加法服务的输入,因此把它的类型设为加法服务里的输入定义就可以了。一个变量的类型可以是简单类型,也可以是复杂类型,还可以是wsdl中的Message定义。简单起见,我们这里就把addRequest的类型设为AddService服务中的addRequest Message。
点ok即完成变量的定义,同样的方式定义其它变量。至此,准备工作就算是做好了。下一步开始真正的bpel流程设计。
l Assign语句的设置
两个Assign语句的配置过程都一样,这里讲解下第一个Assign的配置。
第一个Assign的作用是把输入变量input中的前两个参数传给addRequest变量。需要注意的是,BEPL中的变量赋值只能是一个一个的赋,不能直接把input赋给addRequest(当然这里也不匹配,即使匹配也不行),而只能把input下的参数挨个赋给addRequest.
意思应该很明了,把input下的x赋给addRequest下的x. 然后会弹出一个对话框,问是否需要初始化addRequest,你点Yes就是了。再次点New,把input下的y赋给addRequest下的y。
l Assign1语句的设置
对于Assign1,它的作用是把addResponse的值传给流程的输出变量output.如图:
l Invoke语句的设置
Invoke的作用是调用伙伴链接对应接口下的对应操作,还需要指定输入输出变量。选上Invoke,同样在属性视图的Details页面中进行如下配置:
BPEL流程最终的目的也是发布成一个web service,只不过这个web服务自己基本上不实现功能,主要是通过调用别人的功能来完成任务。因此,最后也要把流程对应的WSDL发布出去。默认生成的WSDL只有类型定义,消息定义,和操作定义,缺少绑定信息和服务定义。
CaculatorProcessArtifacts.wsdl文件如下:
从图中可以看到,import进来的wsdl也会显示在图形视图中。
现在我们完成了BPEL流程的实现,下一步需要部署到WSO2 BPS上运行。
首先将BPEL工程打包为zip文件。打包方法:右击工程名->export->file system,如下图所示。
然后将工程打包成zip文件,至少包含wsdl文件、BPEL文件、deploy.xml文件。
启动WSO2 BPS,Processes->Add,选择文件,点击upload,即可将工程上传到BPS。
通过Processes->List列表可以查看部署的流程。
点击相应流程Process ID,出现流程详细信息相关界面,点击WSDL details部分的try it,可测试流程,如下图所示。
结果如下:
开发BPEL流程调用两个web服务,分别实现两个数字相加相减。BPEL调用一个web服务并从web服务获得结果。Web服务部署在tomcat服务器。
l WSO2 BPS3.2.0
l Tomcat7.0
l WSO2 Developer Studio3.6.0
1、启动Eclipse,建立一个动态web Project。file->new->other,查找Dynamic web Project。起名为dynamicwebproject。
工程下面建立两个包ws.example.add和ws.example.sub,建完后如下图所示。
部署。选择 AddService.java,右键WebService选项,选择 Create WebService。如图所示。
点击finish 就会生成java类对应的wsdl和配置文件,并发布到tomcat中,同时会生成调用服务的客户端。这里的WebService是为BPEL调用WebService实现流程做准备。
要想把生成的服务放到Tomcat目录下,把这个工程Export成一个war包即可。File->Export Web WAR File,选择保存位置,则会生成war包,把生成的war包复制到Tomcat_Home/webapps目录下,重启Tomcat,则完成服务的发布。
6、测试服务是否发布成功。在浏览器里输入http://localhost:8080/dynamicwebproject/services/AddService?wsdl 则能打开加法服务对应的wsdl.这也意味着服务发布成功了。
1、选择 Developer Studio > Open Dashboard。
2、点击Developer Studio Dashboard中的BPEL workflow。
点击BPEL workflow出现如下界面
3、在“Create New BPEL Project” ,选择Create New BPEL workflow ,点击 Next 。
4、为BPEL流程输入相应的信息,例如输入以下信息,点击finish,工程结构如下图。
l Project name :CaculatorProj3
l Process Name :CaculatorProc3
l Namespace :http://www.pku.edu.cn/bpel/sample
l Template : Synchronous BPEL Process
很简单,就是把AddService.wsdl复制到工程目录里。如下图所示,导入addService.wsdl.
Bpel把涉及其中的所有服务都称之为伙伴链接。Bpel对应的wsdl本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的加法服务,减法服务,应该生成对应的伙伴链接。
在最右边的Partner Links中,增加两个链接:addPL,subPL,分别对应加法服务和减法服务。下面具体讲下addPL的配置。
1)点选上addPL,在属性视图中Details页面中点Browser..按钮,打开一个对话框。
2)点Add WSDL把用到的两个WSDL即AddService.wsdl加进来,这样会在CaculatorProcessArtifacts.wsdl文件中生成两条对应的<import>语句。加完后这个对话框也会把这两个wsdl文件中的接口都显示出来。
一定要记住,所谓的伙伴链接一定是针对某个wsdl文件的某个接口而言的。选上AddService接口,点Ok,弹出伙伴链接类型定义,把名字取为addPLT,点Next。要求输入Role Name,这里输入“addProvider”,点Finish完成。同时在属性视图中把ParterRole选为addProvider
主要是改输入输出,使之符合我们的要求。
1、打开AdderProcessArtifacts.wsdl,可以看到,默认生成的WSDL很简单,只有一个操作process,该操作有输入input,输出output. 如下图所示。首先设置输入参数。点击“Adder Process Request”旁边的箭头。
2、点击后出现如下界面。默认有一个String类型的input变量。
可以看到该输入消息只有一个元素input,和我们的要求是不符合的,点击右下角的Open In New Editor,打开一个新的Editor对输入消息进行配置。进去后选中类型,右键,就可以增加元素,并设置元素的类型,结果如下。
咱们要做的流程是接受三个参数,前两个是int型数据,第三个表示是调用加法服务还是减法服务,当type=’add’,时,调用加法服务,当type=’sub’时调用减法服务。同样的方法,改一下输出,把类型改为double。
3、现在完成了输入参数的配置,同样的流程配置输出参数,命名为"result" ,类型为 "int" 。
每次invoke一个服务时都要有对应的变量,同时要进行赋值。我们这里要调用加法服务。因此需要额外加入addRequest,addResponse。加完后的效果如下:
Input,output变量都自动配置好了,对应CaculatorProc3Artifacts.wsdl定义的消息。下面以addRequest为例讲解配置过程。
1)点上addRequest变量,属性视图中切换到Details页,点右上角的Browse..按钮,打开类型选择对话框。addRequest是加法服务的输入,因此把它的类型设为加法服务里的输入定义就可以了。一个变量的类型可以是简单类型,也可以是复杂类型,还可以是wsdl中的Message定义。简单起见,我们这里就把addRequest的类型设为AddService服务中的addRequest Message。
2)点ok即完成变量的定义,同样的方式定义其它变量。至此,准备工作就算是做好了。下一步开始真正的bpel流程设计。
思路应该比较清晰,如果type=’add’,则调用加法服务,如果type=’sub’则调用减法服务。进一步完善后,如下。
l if语句的设置
选择If,在属性视图中点开Details页,做如下配置: 输入条件语句:
$input.payload/tns:type=‘add‘
同样,选择Else If
l Assign语句的设置
两个Assign语句的配置过程都一样,这里讲解下第一个Assign的配置。
第一个Assign的作用是把输入变量input中的前两个参数传给addRequest变量。需要注意的是,BEPL中的变量赋值只能是一个一个的赋,不能直接把input赋给addRequest(当然这里也不匹配,即使匹配也不行),而只能把input下的参数挨个赋给addRequest.
意思应该很明了,把input下的x赋给addRequest下的x. 然后会弹出一个对话框,问是否需要初始化addRequest,你点Yes就是了。再次点New,把input下的y赋给addRequest下的y。
l Assign1语句的设置
对于Assign1,它的作用是把addResponse的值传给流程的输出变量output.如图:
l Invoke语句的设置
Invoke的作用是调用伙伴链接对应接口下的对应操作,还需要指定输入输出变量。选上Invoke,同样在属性视图的Details页面中进行如下配置:
BPEL流程最终的目的也是发布成一个web service,只不过这个web服务自己基本上不实现功能,主要是通过调用别人的功能来完成任务。因此,最后也要把流程对应的WSDL发布出去。默认生成的WSDL只有类型定义,消息定义,和操作定义,缺少绑定信息和服务定义。
CaculatorProcessArtifacts.wsdl文件如下:
从图中可以看到,import进来的wsdl也会显示在图形视图中。
现在我们完成了BPEL流程的实现,下一步需要部署到WSO2 BPS上运行。
首先将BPEL工程打包为zip文件。打包方法:右击工程名->export->file system,如下图所示。
然后将工程打包成zip文件,至少包含wsdl文件、BPEL文件、deploy.xml文件。
启动WSO2 BPS,Processes->Add,选择文件,点击upload,即可将工程上传到BPS。
通过Processes->List列表可以查看部署的流程。
点击相应流程Process ID,出现流程详细信息相关界面,点击WSDL details部分的try it,可测试流程,如下图所示。
结果如下:
http://wso2.com/library/articles/writing-simple-ws-bpel-process-wso2-bps-apache-ode/
开发BPEL流程调用3个web服务,实现汽车许可证的更新。Web服务部署在tomcat服务器。
l 输入:x、y
l 输出:相加结果addResponse
l 输入:x、y
l 输出:相乘结果mulResponse
l 输入:相乘结果mulResponse1
l 输出:平方结果
l WSO2 BPS3.2.0
l Tomcat7.0
l WSO2 Developer Studio3.6.0
1、启动Eclipse,建立一个动态web Project。file->new->other,查找Dynamic web Project。起名为dynamicwebproject。
2、工程下面建立3个包,建完后如下图所示。
3、部署。选择 AddService.java,右键WebService选项,选择 Create WebService。如图所示。
4、点击finish 就会生成java类对应的wsdl和配置文件,并发布到tomcat中,同时会生成调用服务的客户端。这里的WebService是为BPEL调用WebService实现流程做准备。
5、要想把生成的服务放到Tomcat目录下,把这个工程Export成一个war包即可。File->Export Web WAR File,选择保存位置,则会生成war包,把生成的war包复制到Tomcat_Home/webapps目录下,重启Tomcat,则完成服务的发布。
6、测试服务是否发布成功。在浏览器里输入http://localhost:8080/dynamicwebproject/services/AddService?wsdl 能打开也意味着服务发布成功了。
1、选择 Developer Studio > Open Dashboard。
2、点击Developer Studio Dashboard中的BPEL workflow。
点击BPEL workflow出现如下界面
3、在“Create New BPEL Project” ,选择Create New BPEL workflow ,点击 Next 。
4、为BPEL流程输入相应的信息,例如输入以下信息,点击finish。
l Project name :FunctionProcess3
l Process Name :FunctionProcess3
l Namespace :http://wso2.org/bps/FunctionProcess3
l Template : Synchronous BPEL Process
很简单,就是把3个wsdl文件复制到工程目录里。如下图所示:
Bpel把涉及其中的所有服务都称之为伙伴链接。Bpel对应的wsdl本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的3个服务,应该生成对应的伙伴链接。
在最右边的Partner Links中,增加3个链接,分别对应3个服务。
主要是改输入输出,使之符合我们的要求。打开FunctionProcess3Artifacts.wsdl,可以看到,默认生成的WSDL很简单,只有一个操作process,该操作有输入input,输出output. 如下图所示。
1、首先设置输入参数。点击“BPELCar1Request”旁边的箭头。
2、点击后出现如下界面。默认有一个String类型的input变量。
3、点击FunctionProcess3Response旁边的箭头。
每次invoke一个服务时都要有对应的变量,同时要进行赋值。
Input,output变量都自动配置好了,对应FunctionProcess3Artifacts.wsdl定义的消息。
l Assign语句的设置
l addInvoke1语句的设置
l mulInvoke 语句的设置
l Assign1语句的设置
l Mul1Invoke2语句的设置
l Assign2语句的设置
l squInvoke3语句的设置
l Assign3语句的设置
1、首先将BPEL工程打包为zip文件。打包方法:右击工程名->export->file system,将工程打包成zip文件,至少包含wsdl文件、BPEL文件、deploy.xml文件。
2、启动WSO2 BPS,Processes->Add,选择文件,点击upload,即可将工程上传到BPS。
3、通过Processes->List列表可以查看部署的流程。
点击相应流程Process ID,出现流程详细信息相关界面,点击WSDL details部分的try it,可测试流程,结果如下:[(1+2)*(1*2)]2=36
http://wso2.com/library/articles/2014/02/service-orchestration-with-wso2-esb/
开发BPEL流程调用四个web服务,实现汽车许可证的更新。Web服务部署在tomcat服务器。
l 输入:carID汽车牌号
l 输出:policyID保单号
Request format
1 2 3 4 5 6 7 |
<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://sample.esb.org"> <soapenv:body> <sam:getpolicyid> <sam:vehiclenumber>SPKP-6531</sam:vehiclenumber> </sam:getpolicyid> </soapenv:body> </soapenv:envelope> |
Response format
1 2 3 4 5 6 7 |
<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:body> <ns:getpolicyidresponse xmlns:ns="http://sample.esb.org"> <ns:return>869864462</ns:return> </ns:getpolicyidresponse> </soapenv:body> </soapenv:envelope> |
l 输入:carID汽车牌号
l 输出:emiID汽车废气排放证书号
Request format
1 2 3 4 5 6 7 |
<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://sample.esb.org"> <soapenv:body> <sam:getcertificateid> <sam:vehiclenumber>SPKP-6531</sam:vehiclenumber> </sam:getcertificateid> </soapenv:body> </soapenv:envelope> |
Response format
1 2 3 4 5 6 7 |
<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:body> <ns:getcertificateidresponse xmlns:ns="http://sample.esb.org"> <ns:return>1250719063</ns:return> </ns:getcertificateidresponse> </soapenv:body> </soapenv:envelope> |
l 输入:carID汽车牌号、policyID保单号、emiID汽车废气排放证书号
l 输出:fee付款金额、flowID流水号、时间戳
Request format
1 2 3 4 5 6 7 8 9 |
<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://sample.esb.org"> <soapenv:body> <sam:renewlicense> <sam:vehiclenumber>SPKP-6531</sam:vehiclenumber> <sam:insurancepolicy>869864462</sam:insurancepolicy> <sam:ecocert>1250719063</sam:ecocert> </sam:renewlicense> </soapenv:body> </soapenv:envelope> |
Response format
1 2 3 4 5 6 7 8 9 10 11 |
<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:body> <ns:renewlicenseresponse xmlns:ns="http://sample.esb.org"> <ns:return xsi:type="ax2461:LicenseServiceResponse" xmlns:ax2461="http://sample.esb.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ax2461:fee>30</ax2461:fee> <ax2461:referenceno>f0a6c76d-87dc-4d8e-8168-b99a46a9ee50</ax2461:referenceno> <ax2461:timestamp>Sun Feb 09 23:38:58 IST 2014</ax2461:timestamp> </ns:return> </ns:renewlicenseresponse> </soapenv:body> </soapenv:envelope> |
l 输入:creditID信用卡号、fee付款金额、flowID流水号
l 输出:完成与否
Request format
1 2 3 4 5 6 7 8 9 |
<soap:envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:sam="http://sample.esb.org"> <soap:body> <sam:dopayment> <sam:cardno>xxxx-xxxx-xxxx-xxxx</sam:cardno> <sam:referenceno>f0a6c76d-87dc-4d8e-8168-b99a46a9ee50</sam:referenceno> <sam:amount>30</sam:amount> </sam:dopayment> </soap:body> </soap:envelope> |
Response format
1 2 3 4 5 6 7 |
<soapenv:envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:body> <ns:dopaymentresponse xmlns:ns="http://sample.esb.org"> <ns:return>Transaction Completed</ns:return> </ns:dopaymentresponse> </soapenv:body> </soapenv:envelope> |
l WSO2 BPS3.2.0
l Tomcat7.0
l WSO2 Developer Studio3.6.0
1、启动Eclipse,建立一个动态web Project。file->new->other,查找Dynamic web Project。起名为dynamicwebproject。
2、工程下面建立四个包,建完后如下图所示。
3、部署。选择 Insurance.java,右键WebService选项,选择 Create WebService。如图所示。
4、点击finish 就会生成java类对应的wsdl和配置文件,并发布到tomcat中,同时会生成调用服务的客户端。这里的WebService是为BPEL调用WebService实现流程做准备。
5、要想把生成的服务放到Tomcat目录下,把这个工程Export成一个war包即可。File->Export Web WAR File,选择保存位置,则会生成war包,把生成的war包复制到Tomcat_Home/webapps目录下,重启Tomcat,则完成服务的发布。
6、测试服务是否发布成功。在浏览器里输入http://localhost:8080/dynamicwebproject/services/Insurance?wsdl 能打开也意味着服务发布成功了。
1、选择 Developer Studio > Open Dashboard。
2、点击Developer Studio Dashboard中的BPEL workflow。
点击BPEL workflow出现如下界面
3、在“Create New BPEL Project” ,选择Create New BPEL workflow ,点击 Next 。
4、为BPEL流程输入相应的信息,例如输入以下信息,点击finish。
l Project name :BPELCar1
l Process Name :BPELCar1
l Namespace :http://wso2.org/bps/BPELCar1
l Template : Synchronous BPEL Process
很简单,就是把4个wsdl文件复制到工程目录里。如下图所示:
Bpel把涉及其中的所有服务都称之为伙伴链接。Bpel对应的wsdl本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的4个服务,应该生成对应的伙伴链接。
在最右边的Partner Links中,增加4个链接,分别对应4个服务。
主要是改输入输出,使之符合我们的要求。打开BPELCar1Artifacts.wsdl,可以看到,默认生成的WSDL很简单,只有一个操作process,该操作有输入input,输出output. 如下图所示。
1、首先设置输入参数。点击“BPELCar1Request”旁边的箭头。
2、点击后出现如下界面。默认有一个String类型的input变量。
4、点击BPELCar1Response旁边的箭头。
每次invoke一个服务时都要有对应的变量,同时要进行赋值。
Input,output变量都自动配置好了,对应CaculatorProc3Artifacts.wsdl定义的消息。
l Assign语句的设置
l insInvoke语句的设置
l emiInvoke1语句的设置
l Assign1语句的设置
l licInvoke2语句的设置
l licInvoke3语句的设置
l Assign2语句的设置
l payInvoke4语句的设置
l Assign3语句的设置
1、首先将BPEL工程打包为zip文件。打包方法:右击工程名->export->file system,将工程打包成zip文件,至少包含wsdl文件、BPEL文件、deploy.xml文件。
2、启动WSO2 BPS,Processes->Add,选择文件,点击upload,即可将工程上传到BPS。
3、通过Processes->List列表可以查看部署的流程。
点击相应流程Process ID,出现流程详细信息相关界面,点击WSDL details部分的try it,可测试流程,结果如下:
http://wso2.com/library/articles/2012/11/enterprise-service-integration-wso2-esb/
开发BPEL流程调用3个web服务,根据经纬度找到医院信息。Web服务部署在axis2服务器。这里只调用了前两个服务,后两个服务的namespace相同,无法在BPEL中同时加载。
l 输入:longitude经度、latitude维度
l 输出:zipcode邮政编码
Request format
1 2 3 4 5 6 7 |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:geo="http://geo.wso2"> <soapenv:Header/> <soapenv:Body> <geo:getZipCode> <geo:longitude>1.0</geo:longitude> <geo:latitude>2.0</geo:latitude> </geo:getZipCode> </soapenv:Body> </soapenv:Envelope> |
Response format
1 2 3 4 5 6 7 |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns:getZipCodeResponse xmlns:ns="http://geo.wso2"> <ns:return>32746</ns:return> </ns:getZipCodeResponse> </soapenv:Body> </soapenv:Envelope> |
l 输入:zipcode邮政编码
l 输出:health care center code医院代号
Request format
1 2 3 4 5 6 7 |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:heal="http://healthcare.wso2"> <soapenv:Header/> <soapenv:Body> <heal:getHCCenters> <heal:postalCode>32746</heal:postalCode> </heal:getHCCenters> </soapenv:Body> </soapenv:Envelope> |
Response format
1 2 3 4 5 6 7 |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns:getHCCentersResponse xmlns:ns="http://healthcare.wso2"> <ns:return>2583</ns:return> <ns:return>5201</ns:return> <ns:return>5575</ns:return> <ns:return>805</ns:return> <ns:return>2285</ns:return> </ns:getHCCentersResponse> </soapenv:Body> </soapenv:Envelope> |
l 输入:health care center code医院代号
l 输出:info医院详细信息
Request format
1 2 3 4 5 6 7 8 9 |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:heal="http://healthcare.wso2"> <soapenv:Header/> <soapenv:Body> <heal:getHCCenterInfo> <heal:hcCenterCode>2583</heal:hcCenterCode> </heal:getHCCenterInfo> </soapenv:Body> </soapenv:Envelope> |
Response format
1 2 3 4 5 6 7 8 9 10 11 |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns:getHCCenterInfoResponse xmlns:ns="http://healthcare.wso2"> <ns:return xsi:type="ax2494:HCInfo" xmlns:ax2494="http://healthcare.wso2/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ax2494:address>2583 South Volusia Ave (17-92), Suite 300</ax2494:address> <ax2494:approxDistance>13.1</ax2494:approxDistance> <ax2494:city>Orange City, FL</ax2494:city> <ax2494:hcCenterName>Orange City CBOC</ax2494:hcCenterName> <ax2494:phone>386-456-2080 Or 386-456-2082</ax2494:phone> </ns:return> </ns:getHCCenterInfoResponse> </soapenv:Body> </soapenv:Envelope> |
l WSO2 BPS3.2.0
l Axis21.6.0
l WSO2 Developer Studio3.6.0
http://wso2.com/library/articles/2012/11/enterprise-service-integration-wso2-esb/下载Service_Integration_Artifacts.zip,解压后将geows-SNAPSHOT.aar 等三个aar文件放到E:\test\axis2-1.6.2-bin\repository\services目录下,启动axis2服务器。
在浏览器里输入http://localhost:8080/axis2/services/GeoService?wsdl 能打开也意味着服务发布成功了。
1、选择 Developer Studio > Open Dashboard。
2、点击Developer Studio Dashboard中的BPEL workflow。
点击BPEL workflow出现如下界面
3、在“Create New BPEL Project” ,选择Create New BPEL workflow ,点击 Next 。
4、为BPEL流程输入相应的信息,例如输入以下信息,点击finish。
l Project name :BPELHospital1
l Process Name :BPELHospital1
l Namespace :http://wso2.org/bps/BPELHospital1
l Template : Synchronous BPEL Process
很简单,就是把3个wsdl文件复制到工程目录里。如下图所示:
Bpel把涉及其中的所有服务都称之为伙伴链接。Bpel对应的wsdl本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的3个服务,应该生成对应的伙伴链接。
在最右边的Partner Links中,增加3个链接,分别对应3个服务,这里只添加了两个服务,三个服务也是一样的。
主要是改输入输出,使之符合我们的要求。打开BPELHospital1Artifacts.wsdl,可以看到,默认生成的WSDL很简单,只有一个操作process,该操作有输入input,输出output. 如下图所示。
1、首先设置输入参数。点击“BPELHospital1Request”旁边的箭头。
2、点击后出现如下界面。默认有一个String类型的input变量。
5、点击BPELHospital1Response旁边的箭头。
每次invoke一个服务时都要有对应的变量,同时要进行赋值。
Input,output变量都自动配置好了,对应BPELHospital1Artifacts.wsdl定义的消息。
l Assign语句的设置
l geoInvoke语句的设置
l Assign1语句的设置
l locatorInvoke1语句的设置
l Assign2语句的设置
1、首先将BPEL工程打包为zip文件。打包方法:右击工程名->export->file system,将工程打包成zip文件,至少包含wsdl文件、BPEL文件、deploy.xml文件。
2、启动WSO2 BPS,Processes->Add,选择文件,点击upload,即可将工程上传到BPS。
3、通过Processes->List列表可以查看部署的流程。
点击相应流程Process ID,出现流程详细信息相关界面,点击WSDL details部分的try it,可测试流程,结果如下:
具体信息参考文档
标签:wso2
原文地址:http://blog.csdn.net/szh1124/article/details/43835525