码迷,mamicode.com
首页 > 其他好文 > 详细

(10)WSO2 ESB功能——服务编排

时间:2015-02-15 16:38:11      阅读:346      评论:0      收藏:0      [点我收藏+]

标签:wso2


1 BPS官方文档《Quick Start Guide》(WS_NumberAdderCarbon

https://docs.wso2.com/display/BPS320/Quick+Start+Guide

本章将介绍如何设置和启动WSO2 BPS,在WSO2 BPS管理控制台创建、部署和测试一个BPEL流程发布包,该流程实现两个数的相加。

1.1 介绍

实现加法运算,不调用外部服务。

1.2 步骤

1.2.1 启动BPS

1JDK 1.6.* 以上

2、从 http://wso2.com/products/business-process-server/下载wso2 BPS,解压

3<PRODUCT_HOME>\bin 目录运行 wso2server.bat 启动BPS

1.2.2 创建BPEL工程

1、下载安装WSO2 Developer Studio.(http://wso2.com/products/developer-studio)

2、选择 Developer Studio > Open Dashboard

 

3、点击Composite Application ProjectProject 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,工程结构如下图。

Project name BPELNumberAdder

Process Name AdderProcess

Namespace http://NumberAdder.com

Template  Synchronous BPEL Process

 

 

1.2.3 流程设计

现在可以设计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、定义inout接口,打开deploy.xml文件,从给定列表中选择“AdderProcessPort”为inbound地址端口,其他参数选择后将自动填充,outbound接口不需要提供端口因为在我们的业务流程中没有任何外部调用,填充完后如下图所示。

 

1.2.4 流程部署

现在完成BPEL流程的编排,需要部署到WSO2 BPS上。

1、将“BPELNumberAdder”工程的选定文件导出为“File System”,起名为“bpelContent”并打包成“.zip”文件准备部署到BPS系统中zip文件需要的文件至少包括1deploy.xml,2).bpel文件,3.wsdl文件。

 

2、上传。点击WSO2 BPS/Manage/processes/Add,选择上传文件,点击upload

 

上传成功,点击processes/List,出现下图所示界面。注意:上传的流程的状态都是“active”,点击“manage”的“retire”按钮,状态变为“retired”,此时流程不能创建实例,active状态下,一个流程可以创建多个实例

 

流程上传成功后,会作为一个BPEL服务发布到Service中,点击services/list可以查看,如下图所示。

 

1.2.5 流程测试

进入BPSWEB端控制台,将bpelContent.zip上传至服务器后;进入“bpelContent”,点击相应流程的Process ID,如点击bpelContent-3Process ID,结果如下。

 

 

点击WSDL Details部分的try it即可测试刚刚创建好的“bpelContent”流程。出现如下,输入x的值为1y的值为2,得到结果3

 

 

2 Developer Studio开发WS-BPEL步骤(BPELProject1BPELProject2

http://wso2.com/library/tutorials/2011/04/using-carbon-studio-model-wsbpel-process-using-bpel-editor/

2.1 介绍

开发BPEL流程调用单个web服务。该web流程返回两个数字相加的和。BPEL调用一个web服务并从web服务获得结果。Web服务实现两个数相加。Web服务部署在Axis2服务器。

 

2.2 步骤

2.2.1 准备

l WSO2 BPS3.2.0

l Apache-Axis2 1.6

l WSO2 Developer Studio3.6.0 

2.2.2 Step 1: 部署AdderService.aar

1、部署AdderService.aar文件到Apache Axis2 服务器。复制AdderService.aar文件到E:\test\axis2-1.6.2-bin\repository\services目录。

2、运行axis2ServerE:\test\wso2bps-3.2.0\samples\axis2Server目录下运行axis2server.bat。可以从http://localhost:8080/axis2/services/AdderService_0?wsdl查看AdderService.wsdl,保存AdderService_0.wsdl。

2.2.3 Step 2: 创BPEL工程和流程

1、选择 Developer Studio > Open Dashboard

 

4、点击Composite Application ProjectProject 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,工程结构如下图。

Project name BPELNumberAdder1

Process Name AdderProcess1

Namespace http://NumberAdder1.com

Template  Synchronous BPEL Process

 

注意: AdderProcess1Artifacts.wsdl 是用来暴露BPEL流程作为一个服务,它只定义端口类型、消息,为部署BPEL流程到WSO2 BPS,我们需要定义一个绑定(binding)和一个服务(Service),下一部分介绍如何创建BPEL流程的一个绑定和一个服务。

2.2.4 Step 3: 创建AdderProcess1Artifacts.wsdl的绑定和服务

l 先添加一个绑定到AdderProcess1Artifacts.wsdl。

1Developer 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 添加一个服务。

1Developer Studio默认已经为我们创建服务,也可以删除原有AdderProcesser1服务,新建服务。右击编辑空白处,选择“Add Service ”,服务重命名为“NumberAdderService1”。选择port,在property 窗口重命名port名字为“ NumberAdderServicePort”,从下拉菜单选择刚才创建的绑定,完成后AdderProcessArtifacts.wsdl 如下所示。

 

现在我们完成了为我们的BPEL流程定义绑定和和服务。

变量在BPEL流程中表示流程的中间状态,也用作服务调用时的输入参数以及接收服务返回的结果。BPEL中的变量既可以是WSDL消息类型变量也可以是XML Schema所定义的复杂类型或元素。在我们的例子中,变量需要存储发送到伙伴服务或者从伙伴服务接收的消息,所以我们需要初始化变量来调用外部服务,这里使用的是WSDL消息类型变量。WSDL消息类型变量对应于WSDL文件中定义的web服务消息类型。下面看一下如何定义BPEL流程的输入输出变量,首先我们需要修改BPEL流程的服务描述文件。

 

2.2.5 Step 4: 修改服务描述文件AdderProcessArtifacts.wsdl

现在我们开始定义输入输出参数,在本例中我们设计两个数的相加,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流程。

2.2.6 Step 5: 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窗口拖动invokeSequence

 

5、添加另一个“Assign”匹配外部服务响应与我们流程响应的变量。

 

 

2.2.7 Step 6: 为invoke活动设置伙伴链接

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活动创建了一个伙伴链接,下一步为活动分配变量。

2.2.8 Step 7: 分配变量

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 ” 。

 

注意:这里只使用了一种方式定义变量,实际上可以用不同方式初始化变量。从fromto列表可以选择。

2.2.9 Step 8: 创建Deploy.xml

1、打开deploy.xml文件,在这里可以设置BPEL流程的选项,如1)可以指定流程部署后的状态(activateddeactivatedretired),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上运行。

2.2.10 Step 9: 部署到WSO2 BPS

首先将BPEL工程打包为zip文件。打包方法:右击工程名->export->file system,如下图所示。

 

然后将工程打包成zip文件,至少包含wsdl文件、BPEL文件、deploy.xml文件。

 

启动WSO2 BPSProcesses->Add,选择文件,点击upload,即可将工程上传到BPS

 

通过Processes->List列表可以查看部署的流程。

 

点击相应流程Process ID,出现流程详细信息相关界面,点击WSDL details部分的try it,可测试流程,如下图所示。

 

结果如下:

 

3 Eclipse平台BPEL开发(加法运算)

3.1 介绍

开发BPEL流程调用单个web服务。该web流程返回两个数字相加的和。BPEL调用一个web服务并从web服务获得结果。Web服务实现两个数相加。Web服务部署在tomcat服务器。

 

3.2 步骤

3.2.1 准备

l WSO2 BPS3.2.0

l Tomcat7.0

l WSO2 Developer Studio3.6.0 

3.2.2 Step 1:web服务开发部署

1、启动Eclipse,建立一个动态web Projectfile->new->other,查找Dynamic web Project。起名为dynamicwebproject

 

工程下面建立两个包ws.example.addws.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.这也意味着服务发布成功了

3.2.3 Step 2:创BPEL工程和流程

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,工程结构如下图。

Project name CaculatorProj

Process Name CaculatorProcess

Namespace http://www.pku.edu.cn/bpel/sample

Template  Synchronous BPEL Process

 

3.2.4 Step 3:导入服务的WSDL文件

很简单,就是把AddService.wsdl复制到工程目录里。如下图所示,导入addService.wsdl.

 

3.2.5 Step 4:设置伙伴链接

Bpel把涉及其中的所有服务都称之为伙伴链接。Bpel对应的wsdl本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的加法服务,减法服务,应该生成对应的伙伴链接。

在最右边的Partner Links中,增加两个链接:addPLsubPL,分别对应加法服务和减法服务。下面具体讲下addPL的配置。

 

1)点选上addPL,在属性视图中Details页面中点Browser..按钮,打开一个对话框。

2)点Add WSDL把用到的两个WSDLAddService.wsdl加进来,这样会在CaculatorProcessArtifacts.wsdl文件中生成两条对应的<import>语句。加完后这个对话框也会把这两个wsdl文件中的接口都显示出来。

一定要记住,所谓的伙伴链接一定是针对某个wsdl文件的某个接口而言的。选上AddService接口,点Ok,弹出伙伴链接类型定义,把名字取为addPLT,点Next。要求输入Role Name,这里输入“addProvider,Finish完成。同时在属性视图中把ParterRole选为addProvider

 

 

 

 

 

3.2.6 Step 5:修改文件CaculatorProcessArtifacts.wsdl

主要是改输入输出,使之符合我们的要求。

1、打开AdderProcessArtifacts.wsdl,可以看到,默认生成的WSDL很简单,只有一个操作process,该操作有输入input,输出output. 如下图所示。首先设置输入参数。点击“Adder Process Request”旁边的箭头。

 

2、点击后出现如下界面。默认有一个String类型的input变量。

 

重命名为x,类型为int

 

3、现在完成了输入参数的配置,同样的流程配置输出参数,命名为"result" ,类型为  "int" 

 

3.2.7 Step 6:创建调用服务时需要的变量

每次invoke一个服务时都要有对应的变量,同时要进行赋值。我们这里要调用加法服务。因此需要额外加入addRequest,addResponse。加完后的效果如下:

 

Input,output变量都自动配置好了,对应CaculatorProcessArtifacts.wsdl定义的消息。下面以addRequest为例讲解配置过程。

1)点上addRequest变量,属性视图中切换到Details页,点右上角的Browse..按钮,打开类型选择对话框。addRequest是加法服务的输入,因此把它的类型设为加法服务里的输入定义就可以了。一个变量的类型可以是简单类型,也可以是复杂类型,还可以是wsdl中的Message定义。简单起见,我们这里就把addRequest的类型设为AddService服务中的addRequest Message

 

ok即完成变量的定义,同样的方式定义其它变量。至此,准备工作就算是做好了。下一步开始真正的bpel流程设计。

3.2.8 Step 7BPEL流程设计

 

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页面中进行如下配置:

 

3.2.9 Step 8:流程发布

BPEL流程最终的目的也是发布成一个web service,只不过这个web服务自己基本上不实现功能,主要是通过调用别人的功能来完成任务。因此,最后也要把流程对应的WSDL发布出去。默认生成的WSDL只有类型定义,消息定义,和操作定义,缺少绑定信息和服务定义。

CaculatorProcessArtifacts.wsdl文件如下:

 

从图中可以看到,import进来的wsdl也会显示在图形视图中。

 

现在我们完成了BPEL流程的实现,下一步需要部署到WSO2 BPS上运行。

3.2.10 Step 9BPEL运行与测试

首先将BPEL工程打包为zip文件。打包方法:右击工程名->export->file system,如下图所示。

 

然后将工程打包成zip文件,至少包含wsdl文件、BPEL文件、deploy.xml文件。

 

启动WSO2 BPSProcesses->Add,选择文件,点击upload,即可将工程上传到BPS

 

通过Processes->List列表可以查看部署的流程。

 

点击相应流程Process ID,出现流程详细信息相关界面,点击WSDL details部分的try it,可测试流程,如下图所示。

 

结果如下:

 

 

4 Eclipse平台BPEL开发(加减法CaculatorProj3

4.1 介绍

开发BPEL流程调用两个web服务,分别实现两个数字相加相减。BPEL调用一个web服务并从web服务获得结果。Web服务部署在tomcat服务器。

 

4.2 步骤

4.2.1 准备

l WSO2 BPS3.2.0

l Tomcat7.0

l WSO2 Developer Studio3.6.0 

4.2.2 Step 1:web服务开发部署

1、启动Eclipse,建立一个动态web Projectfile->new->other,查找Dynamic web Project。起名为dynamicwebproject

 

工程下面建立两个包ws.example.addws.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.这也意味着服务发布成功了

4.2.3 Step 2:创BPEL工程和流程

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,工程结构如下图。

Project name CaculatorProj3

Process Name CaculatorProc3

Namespace http://www.pku.edu.cn/bpel/sample

Template  Synchronous BPEL Process

 

4.2.4 Step 3:导入服务的WSDL文件

很简单,就是把AddService.wsdl复制到工程目录里。如下图所示,导入addService.wsdl.

 

4.2.5 Step 4:设置伙伴链接

Bpel把涉及其中的所有服务都称之为伙伴链接。Bpel对应的wsdl本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的加法服务,减法服务,应该生成对应的伙伴链接。

在最右边的Partner Links中,增加两个链接:addPLsubPL,分别对应加法服务和减法服务。下面具体讲下addPL的配置。

 

1)点选上addPL,在属性视图中Details页面中点Browser..按钮,打开一个对话框。

2)点Add WSDL把用到的两个WSDLAddService.wsdl加进来,这样会在CaculatorProcessArtifacts.wsdl文件中生成两条对应的<import>语句。加完后这个对话框也会把这两个wsdl文件中的接口都显示出来。

一定要记住,所谓的伙伴链接一定是针对某个wsdl文件的某个接口而言的。选上AddService接口,点Ok,弹出伙伴链接类型定义,把名字取为addPLT,点Next。要求输入Role Name,这里输入“addProvider,Finish完成。同时在属性视图中把ParterRole选为addProvider

 

 

 

 

 

4.2.6 Step 5:修改文件CaculatorProcessArtifacts.wsdl

主要是改输入输出,使之符合我们的要求。

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" 

 

4.2.7 Step 6:创建调用服务时需要的变量

每次invoke一个服务时都要有对应的变量,同时要进行赋值。我们这里要调用加法服务。因此需要额外加入addRequest,addResponse。加完后的效果如下:

 

Input,output变量都自动配置好了,对应CaculatorProc3Artifacts.wsdl定义的消息。下面以addRequest为例讲解配置过程。

1)点上addRequest变量,属性视图中切换到Details页,点右上角的Browse..按钮,打开类型选择对话框。addRequest是加法服务的输入,因此把它的类型设为加法服务里的输入定义就可以了。一个变量的类型可以是简单类型,也可以是复杂类型,还可以是wsdl中的Message定义。简单起见,我们这里就把addRequest的类型设为AddService服务中的addRequest Message

 

2)点ok即完成变量的定义,同样的方式定义其它变量。至此,准备工作就算是做好了。下一步开始真正的bpel流程设计。

4.2.8 Step 7BPEL流程设计

思路应该比较清晰,如果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页面中进行如下配置:

 

4.2.9 Step 8:流程发布

BPEL流程最终的目的也是发布成一个web service,只不过这个web服务自己基本上不实现功能,主要是通过调用别人的功能来完成任务。因此,最后也要把流程对应的WSDL发布出去。默认生成的WSDL只有类型定义,消息定义,和操作定义,缺少绑定信息和服务定义。

CaculatorProcessArtifacts.wsdl文件如下:

 

从图中可以看到,import进来的wsdl也会显示在图形视图中。

 

现在我们完成了BPEL流程的实现,下一步需要部署到WSO2 BPS上运行。

4.2.10 Step 9BPEL运行与测试

首先将BPEL工程打包为zip文件。打包方法:右击工程名->export->file system,如下图所示。

 

然后将工程打包成zip文件,至少包含wsdl文件、BPEL文件、deploy.xml文件。

 

启动WSO2 BPSProcesses->Add,选择文件,点击upload,即可将工程上传到BPS

 

通过Processes->List列表可以查看部署的流程。

 

点击相应流程Process ID,出现流程详细信息相关界面,点击WSDL details部分的try it,可测试流程,如下图所示。

 

结果如下:

 

5 [(x+y)*(x*y)]2(FunctionProcess3

http://wso2.com/library/articles/writing-simple-ws-bpel-process-wso2-bps-apache-ode/

5.1 介绍

开发BPEL流程调用3web服务,实现汽车许可证的更新。Web服务部署在tomcat服务器。

5.1.1 Services

5.1.1.1 AddService

输入:xy

输出:相加结果addResponse

5.1.1.2 MultipleService

输入:xy

输出:相乘结果mulResponse

5.1.1.3 SquareService

输入:相乘结果mulResponse1

输出:平方结果

5.1.2 BPEL流程

 

5.2 步骤

5.2.1 准备

l WSO2 BPS3.2.0

l Tomcat7.0

l WSO2 Developer Studio3.6.0 

5.2.2 Step 1:web服务开发部署

1、启动Eclipse,建立一个动态web Projectfile->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 能打开也意味着服务发布成功了

5.2.3 Step 2:创BPEL工程和流程

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

Project name FunctionProcess3

Process Name FunctionProcess3

Namespace http://wso2.org/bps/FunctionProcess3

Template  Synchronous BPEL Process

5.2.4 Step 3:导入服务的WSDL文件

很简单,就是把3wsdl文件复制到工程目录里。如下图所示:

 

5.2.5 Step 4:设置伙伴链接

Bpel把涉及其中的所有服务都称之为伙伴链接。Bpel对应的wsdl本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的3服务,应该生成对应的伙伴链接。

在最右边的Partner Links中,增加3个链接,分别对应3服务。

 

5.2.6 Step 5:修改WSDL文件FunctionProcess3Artifacts.wsdl

主要是改输入输出,使之符合我们的要求。打开FunctionProcess3Artifacts.wsdl,可以看到,默认生成的WSDL很简单,只有一个操作process,该操作有输入input,输出output. 如下图所示。

1首先设置输入参数。点击“BPELCar1Request”旁边的箭头。

 

2、点击后出现如下界面。默认有一个String类型的input变量。

 

3、点击FunctionProcess3Response旁边的箭头

 

5.2.7 Step 6:创建调用服务时需要的变量

每次invoke一个服务时都要有对应的变量,同时要进行赋值。

 

Input,output变量都自动配置好了,对应FunctionProcess3Artifacts.wsdl定义的消息。

5.2.8 Step 7BPEL流程设计

 

l Assign语句的设置

 

 

l addInvoke1语句的设置

 

l mulInvoke 语句的设置

 

l Assign1语句的设置

 

 

l Mul1Invoke2语句的设置

 

l Assign2语句的设置

 

l squInvoke3语句的设置

 

l Assign3语句的设置

 

5.2.9 Step 8:流程发布

 

5.2.10 Step 9BPEL运行与测试

1、首先将BPEL工程打包为zip文件。打包方法:右击工程名->export->file system将工程打包成zip文件,至少包含wsdl文件、BPEL文件、deploy.xml文件。

2启动WSO2 BPSProcesses->Add,选择文件,点击upload,即可将工程上传到BPS

3通过Processes->List列表可以查看部署的流程。

 

点击相应流程Process ID,出现流程详细信息相关界面,点击WSDL details部分的try it,可测试流程,结果如下:[(1+2)*(1*2)]2=36

 

6 汽车许可证更新(BPELCar1

http://wso2.com/library/articles/2014/02/service-orchestration-with-wso2-esb/

6.1 介绍

开发BPEL流程调用四个web服务,实现汽车许可证的更新。Web服务部署在tomcat服务器。

6.1.1 Services

6.1.1.1 InsuranceService

输入:carID汽车牌号

输出: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>

6.1.1.2 EmissionTestService

输入:carID汽车牌号

输出: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>

6.1.1.3 LicenseService

输入:carID汽车牌号、policyID保单号、emiID汽车废气排放证书号

输出: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/xsdxmlns: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>

6.1.1.4 PaymentService

输入:creditID信用卡号、fee付款金额、flowID流水号

输出:完成与否

Request format

?

1

2

3

4

5

6

7

8

9

<soap:envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelopexmlns: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>

6.1.2 BPEL流程

 

6.2 步骤

6.2.1 准备

l WSO2 BPS3.2.0

l Tomcat7.0

l WSO2 Developer Studio3.6.0 

6.2.2 Step 1:web服务开发部署

1、启动Eclipse,建立一个动态web Projectfile->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 能打开也意味着服务发布成功了

6.2.3 Step 2:创BPEL工程和流程

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

Project name BPELCar1

Process Name BPELCar1

Namespace http://wso2.org/bps/BPELCar1

Template  Synchronous BPEL Process

6.2.4 Step 3:导入服务的WSDL文件

很简单,就是把4wsdl文件复制到工程目录里。如下图所示:

 

6.2.5 Step 4:设置伙伴链接

Bpel把涉及其中的所有服务都称之为伙伴链接。Bpel对应的wsdl本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的4服务,应该生成对应的伙伴链接。

在最右边的Partner Links中,增加4个链接,分别对应4服务。

6.2.6 Step 5:修改WSDL文件BPELCar1Artifacts.wsdl

主要是改输入输出,使之符合我们的要求。打开BPELCar1Artifacts.wsdl,可以看到,默认生成的WSDL很简单,只有一个操作process,该操作有输入input,输出output. 如下图所示。

1首先设置输入参数。点击“BPELCar1Request”旁边的箭头。

 

2、点击后出现如下界面。默认有一个String类型的input变量。

 

4、点击BPELCar1Response旁边的箭头

 

6.2.7 Step 6:创建调用服务时需要的变量

每次invoke一个服务时都要有对应的变量,同时要进行赋值。

 

Input,output变量都自动配置好了,对应CaculatorProc3Artifacts.wsdl定义的消息。

6.2.8 Step 7BPEL流程设计

 

l Assign语句的设置

 

 

l insInvoke语句的设置

 

l emiInvoke1语句的设置

 

l Assign1语句的设置

 

l licInvoke2语句的设置

 

l licInvoke3语句的设置

 

l Assign2语句的设置

 

l payInvoke4语句的设置

 

l Assign3语句的设置

 

6.2.9 Step 8:流程发布

 

6.2.10 Step 9BPEL运行与测试

1、首先将BPEL工程打包为zip文件。打包方法:右击工程名->export->file system将工程打包成zip文件,至少包含wsdl文件、BPEL文件、deploy.xml文件。

2启动WSO2 BPSProcesses->Add,选择文件,点击upload,即可将工程上传到BPS

3通过Processes->List列表可以查看部署的流程。

 

点击相应流程Process ID,出现流程详细信息相关界面,点击WSDL details部分的try it,可测试流程,结果如下:

 

 

7 根据经纬度找医院信息(BPELHospital1

http://wso2.com/library/articles/2012/11/enterprise-service-integration-wso2-esb/

7.1 介绍

开发BPEL流程调用3web服务,根据经纬度找到医院信息。Web服务部署在axis2服务器。这里只调用了前两个服务,后两个服务的namespace相同,无法在BPEL中同时加载。

 

7.1.1 Services

7.1.1.1 GeoService

输入:longitude经度、latitude维度

输出: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>

7.1.1.2 HCFacilityLocatorService

输入:zipcode邮政编码

输出: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>

7.1.1.3 Healthcare Center Information Service

输入:health care center code医院代号

输出: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>

7.1.2 BPEL流程

 

7.2 步骤

7.2.1 准备

l WSO2 BPS3.2.0

l Axis21.6.0

l WSO2 Developer Studio3.6.0 

7.2.2 Step 1:web服务开发部署

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 能打开也意味着服务发布成功了

7.2.3 Step 2:创BPEL工程和流程

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

Project name BPELHospital1

Process Name BPELHospital1

Namespace http://wso2.org/bps/BPELHospital1

Template  Synchronous BPEL Process

7.2.4 Step 3:导入服务的WSDL文件

很简单,就是把3wsdl文件复制到工程目录里。如下图所示:

 

7.2.5 Step 4:设置伙伴链接

Bpel把涉及其中的所有服务都称之为伙伴链接。Bpel对应的wsdl本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的3服务,应该生成对应的伙伴链接。

在最右边的Partner Links中,增加3个链接,分别对应3服务,这里只添加了两个服务,三个服务也是一样的。

 

7.2.6 Step 5:修改WSDL文件BPELCar1Artifacts.wsdl

主要是改输入输出,使之符合我们的要求。打开BPELHospital1Artifacts.wsdl,可以看到,默认生成的WSDL很简单,只有一个操作process,该操作有输入input,输出output. 如下图所示。

1首先设置输入参数。点击“BPELHospital1Request”旁边的箭头。

 

2、点击后出现如下界面。默认有一个String类型的input变量。

 

5、点击BPELHospital1Response旁边的箭头

 

7.2.7 Step 6:创建调用服务时需要的变量

每次invoke一个服务时都要有对应的变量,同时要进行赋值。

 

Input,output变量都自动配置好了,对应BPELHospital1Artifacts.wsdl定义的消息。

7.2.8 Step 7BPEL流程设计

 

l Assign语句的设置

 

 

l geoInvoke语句的设置

 

l Assign1语句的设置

 

l locatorInvoke1语句的设置

 

l Assign2语句的设置

 

7.2.9 Step 8:流程发布

 

7.2.10 Step 9BPEL运行与测试

1、首先将BPEL工程打包为zip文件。打包方法:右击工程名->export->file system将工程打包成zip文件,至少包含wsdl文件、BPEL文件、deploy.xml文件。

2启动WSO2 BPSProcesses->Add,选择文件,点击upload,即可将工程上传到BPS

3通过Processes->List列表可以查看部署的流程。

 

点击相应流程Process ID,出现流程详细信息相关界面,点击WSDL details部分的try it,可测试流程,结果如下:



具体信息参考文档 

 

(10)WSO2 ESB功能——服务编排

标签:wso2

原文地址:http://blog.csdn.net/szh1124/article/details/43835525

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!