`
weihong01267
  • 浏览: 48891 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

(转)BPEL 实例

 
阅读更多

 原文: 使用BPEL创建Web服务组合

 

为简单起见,本例的Web服务组合只调用一个Web Service API。
本文环境是:Eclipse Juno Release + JRE 1.7 + Tomcat 7.0.29 + BPEL + ODE,Eclipse的安装,JRE环境变量配置和Tomcat配置本文就不讲了。BPEL似乎不能运行于MyEclipse,本人在MyEclipse环境下没有成功,可能跟端口争用有关。

网上BPEL入门的文章大都有问题,或比较老而新版本发生了改变,或其中有些在实施中会遇到的问题,本文则是我花两天时间动手摸索出来的,整理下来以备忘,算是BPEL入门基础,大牛就不用看了。

1、Apache ODE安装和配置

http://ode.apache.org/下载ode的war文件,本例下载的文件是apache-ode-war-1.3.5.zip,解压这个文件,找到ode.war,放到Tomcat主目录下的webapps目录,然后到“Tomcat主目录\bin”目录下,启动Tomcat服务器,成功启动后,在浏览器里输入http://localhost:8080/ode,如果浏览器里显示如下页面,则说明ode安装成功:

2、BPEL Visual Designer安装

打开Eclipse,点击菜单“Help->Install New Software...”弹出“Install”对话框,点击“Add…”按钮,在弹出的对话框里,Name框里输入“BPEL”,Location框里输入http://download.eclipse.org/bpel/site/1.0.5,输入完成后点击“OK”按钮。

Eclipse自动列出所有可下载安装的组件,如下图所示:

选中所有三项“BPEL Commons”、“BPEL Visual Designer”和“Runtime Adapter for Apache ODE 1.3”,然后点击“Next”,直到安装完成。

点击Eclipse菜单“File->New->Other”,在Wizards里输入“bpel”,如果出现如下三项,则说明BPEL安装成功:

3、Eclipse ODE服务器配置

尽管可以在创建BPEL工程时创建ODE服务器,但现在仍可以先在Eclipse里配置好ODE服务器,以后使用时更加方便。

Tomcat默认使用的端口号是8080,因此ODE使用8080端口时会有问题,当ODE的宿主服务器Tomcat使用8080端口时,ODE好像也不能使用其它端口而必须使用8080端口。如果服务API和BPEL都在同一台机器上运行,而且都在同一Tomcat目录下,使用ODE部署BPEL时会出现莫明其妙的问题。初步分析,可能是端口号争用,通过很多次尝试,最终找到了解决之道:在另一台机器上使用Tomcat部署服务,在本机上部署BPEL服务组合,另一台机器上的Tomcat和本机的ODE服务器均使用8080端口。

Web Service地址:http://192.168.10.179:8080/Fibonacci/FibonacciPort?WSDL

ODE服务器地址:http://localhost:8080/ode

说明:192.168.10.179不是localhost。

点击Eclipse菜单“Window->Preferences->Server->Runtime Environments”,点击“Add”按钮,在弹出的对话框输入下图所示的内容,其中Tomcat目录为你自己机器上的目录:

点击“Finish”按钮,完成配置。

4、创建BPEL服务组合

第一步,创建 BPEL工程

依次点击“File->New->Other”,在Wizards里输入“bpel”,在出现的工程类型中选择“BPEL Project”,点击“Next”,在弹出的对话框里输入工程名称“BPELFibonacci”,如名称,本文调用的Web Service的功能是生成Fibonacci数列,服务器选择“ODE”,如下图所示:

然后点击“Next”,最后击点“Finish”,一个BPEL工程创建完毕。

第二步,创建BPEL Process

在Eclipse的Package Explorer中,右击BPELFibonacci下的“bpelContent”,在弹出的菜单里选择“New->Other”,在弹出对话框的Wizards文本框里输入“bpel”,然后选择列表中的“BPEL Process File”,点击“Next”。

Process Name输入“BPELFibonacci”,Namespace输入http://bpel.sklse.org,然后点击“Next”,弹出如下的对话框:

更改Template为同步,即下拉列表选择“Synchronous BPEL Process”,把Service Address改为http://localhost:8080/ode/processes/BPELFibonacci,其它不变,点击“Next”按钮,然后点击“Finish”按钮,系统为我们创建了Process文件,并自动打开了流程编辑器。

第三步,将服务的WSDL文件加入工程

不论你用什么方式,请将服务的WSDL文件加入到工程的bpelContent文件夹下,请确保WSDL文件中的地址是可用的,也就是说,可通过浏览器访问到这个WSDL文件。本例中,使用的WSDL文件是FibonacciPort.wsdl。

第四步,编辑Process

不论初始的流程是什么,通过拖拽“Actions”,拖动两个assign和一个invoke,构成如下图所示的流程图:

第四步A,编辑invoke,创建伙伴链接

流程的核心是执行服务,伙伴链接实际上是指定此流程与哪个服务绑定,被绑定的服务将会被执行。一个服务有输入和输出。

此流程只包含最基本的三个部分:输入、执行和输出,分别对应“receiveInput和assignInputToSOAPRequest”、“invokeFibonacci”以及“replyOutput和assignOutputToResult”。

选中“invokeFibonacci”,在Eclipse下方打开“Properties”标签页(如果没有,请点击Eclipse菜单“Window->Show View->Properties”),可看到如下所示的界面:

点击“Details”,在右边的面板中点击“Partner Link”文本框后面的下拉三角,选择“Create Global Partner Link”,打开创建链接对话框,首先输入伙伴链接名称“BPELFibonacciPL”:

点击“OK”按钮,然后选择链接到的Web Service,也就是Fibonacci服务:

选择来源和过滤条件为“From Project”和“Show Port Types”,在“Matches”里选择“FibonacciDelegate”,“FibonacciDelegate”的内容会自动出现在“Partner Link Type Structure”下,在这里也选择“FibonacciDelegate”,然后点击“OK”按钮,进入下一步,输入伙伴链接类型名称:

输入“BPELFibonacciPLT”,名称是任意的,然后点击“Next”按钮,输入角色名称“BPELFibonacciRole”,选中下面的Web服务“FibonacciDelegate”,点击“Next”,弹出的对话框里什么都不输入,再点击一次“Finish”,完成了伙伴链接的创建。

完成后,请选择要执行哪个操作,本例中选择“getFibonacciArray”,也就是获取Fibonacci数列,其设置如下图所示,将输入焦点定位到“Operation”,然后双击右边的“getFibonacciArray”,会自动生成Input和Output变量,这些变量对应的是getFibonacciArray的输入和输入,数据结构与Fibonacci的WSDL中定义的一致。

第四步B,分配输入和输出

Fibonacci有两个Web服务接口,我们选择的是getFibonacciArray,其输入是一个整型(int)数字,大于等于1,表示获取Fibonacci数列的前多少位,输出是字符串(string)类型。

BPEL Project默认的输入类型并不是int而是string,因此我们要将输入类型更改为int,要更改这个类型,必须更改“BPELFibonacciArtifacts.wsdl”文件。

在“Project Explorer”里右击“BPELFibonacciArtifacts.wsdl”,在弹出的菜单里选择“Open With->WSDL Editor”,打开WSDL编辑器,如下图所示:

找到BPELFibonacci下的input,点击右边箭头,在弹出的界面中将input类型string改为int,点击“保存”。由于输出是string类型,所以不用更改。然后,我们就可以分配输入了。

点击“assignInputToSOAPRequest”,展开其属性页,切换到“Details”选项卡,点击“New”新建一个输入分配,“From”选择“input:BPELFibonacciRequestMessage->payload:BPELFibonacciRequest->input:int”,在“To”里选择“BPELFibonacciPLRequest:getFibonacciArray->parameters:getFibonacciArray->arg0:int”,点击保存,会提示是否生成默认的输入,选择是,然后再点击保存,这样就完成了输入的分配。

同样对于输出,要注意的是,从伙伴链接的输出到流程的输出,如下图所示:

注意:

最初创建BPEL Process时输入的Service Address是http://localhost:8080/ode/processes/BPELFibonacci,但是“BPELFibonacciArtifacts.wsdl”文件中最后几行中记录的地址是http://localhost:8080/BPELFibonacci,请以文本方式打开“BPELFibonacciArtifacts.wsdl”,并将这地址改为http://localhost:8080/ode/processes/BPELFibonacci。步骤是:

在“Package Explorer”里右击“BPELFibonacciArtifacts.wsdl”,在弹出的菜单里选择“Open With->Text Editor”,在打开的编辑器里将如下几行代码(通常在最后几行):

1 <service name="BPELFibonacciService">
2 <port binding="tns:BPELFibonacciBinding" name="BPELFibonacciPort">
3 <soap:address location="http://localhost:8080/BPELFibonacci"/>
4 </port>
5 </service>

改为:

1 <service name="BPELFibonacciService">
2 <port binding="tns:BPELFibonacciBinding" name="BPELFibonacciPort">
3 <soap:address location="http://localhost:8080/ode/processes/BPELFibonacci"/>
4 </port>
5 </service>

5、部署

右击“bpelContent”,在弹出的菜单里选择“New->Other->BPEL Deployment Descriptor”,点击“Next”,再点击“Finish”,会自动打开deploy的编辑页面。

在“Inbound Interfaces(Services)”下的“Associated Port”里选择“BPELFibonacciPort”,点击后面的单元格,内容会自动填上。

在“Outbound Interfaces(Invokes)”下的“Associated Port”里选择“FibonacciPort”,点击后面的单元格,内容会自动填上。

点击“保存”。

在“Servers”View里,右键菜单选择“New->Server”,在弹出的对话框里选择“ODE v1.x Server”,然后“Next”,再“Next”,在此对话框里将“BPELFibonacci”通过“Add”按钮加入到右边,点击“Finish”。

启动Ode服务器。

6、测试

在“Package Explorer”里右击“BPELFibonacciArtifacts.wsdl”,在弹出的菜单里选择“Web Services->Test With Web Services Explorer”,此时会打开浏览器,并加载Web服务,点击“process”,输入“6”,期待的结果是“1 1 2 3 5 8”,结果如下图所示:

另一个例子,输入10,结果如下图所示:

分享到:
评论

相关推荐

    BPEL实例教程代码

    BPEL实例教程代码

    在Eclipse下开发BPEL实例分享

    在Eclipse下开发BPEL实例分享

    BPEL 实例教程

    BPEL 实例教程 BPEL 实例教程 BPEL 实例教程 BPEL 实例教程

    BPEL实例开发详细教程-个人实践

    网上有不少BPEL的实例文档,其中最常用的就是加减法BPEL部署。但是有些细节可能未交待清楚,本人当时在实践的时候遇了各种各样的挫折,因此萌生了结合个人实践重写BPEL加减法部署教程的想法。 包含WebService与BPEL...

    bpel完整实例(webservice+bpel)

    bpel完整实例(webservice+bpel) openesb bpel

    BPEL实例 eclipse apache ode

    BPEL实例,Apache-ODE,Eclipse 该教程详细讲述了开发一个BPEL业务流程的详细步骤。先手动写好两个服务,一个是加法服务,一个是减法服务,然后希望构建一个bpel流程,该流程能够根据用户的输入来决定是调用加法服务...

    BPEL实例教程

    BPEL 背景知识  首先,介绍一些背景知识。BPEL 基于 XML 和 Web 服务构建;它使用一种基于 Web 的语言,该语言支持 web 服务技术系列,包括 SOAP、WSDL、UDDI、Web 服务可靠性消息、Web 服务寻址、Web 服务协调以及 ...

    一起学BPEL实例教程

    资源包含一份关于BPEL开发实例的文档,以及开发中的代码。主要包含两个web服务的发布及使用。

    BPEL实例简明教程(20页)

    简单介绍了BPEL的基本构架。有一个实例。利用实例展开。很容易读懂。内容不多。

    bpel2.0实例(可以直接运行)

    这是bpel2.0实例,包含循环结构和判断结构,在tomcat5和axis2可以直接运行!

    一起学BPEL实例教程一(原创)

    在Eclipse环境下开发BPEL的详细教程,基本上是step by step。 教程内容分三部分: 1 环境配置 2 相关服务的开发(加法服务,减法服务) 3 BPEL的开发 详情见附件。希望大家一起学习,共同进步。 有分的就支持下,没...

    bpel入门级实例

    去年写的一个小冬冬,把一个oracle的bpel实例改写后在activeBpel上运行,因为activeBpel是open的,可以研究引擎架构的实现。

    BPEL的基本思想 实例讲解

    BPEL的基本思想 实例讲解 总结 心得 写的很全面 java对比 容易理解和上手 是初次学习的非常好的资源

    Eclipse_BPEL_最新解说(我亲测成功了的案例)

    手动部署bpel服务。此文档一开始是在网上下载的,但是我发现无论怎么按照里面的步骤来做都无法成功部署bpel,很多人也都遇到类似的问题。经过我的不断分析,发现原来是bpel的插件(模拟的服务器)有问题,根本是做不...

    BPEL 入门 实例

    面向 Web 服务的业务流程执行语言(BPEL 或 BPEL4WS)是一种使用 Web 服务定义和执行业务流程的语言。BPEL 使您可以通过组合、编排和协调 Web 服务自上而下地实现面向服务的体系结构 (SOA)。BPEL 提供了一种相对简单...

    bpel入门实例(组合加减法运算)

    环境: bpel: Apache ODE ws: Apache CXF(这里是两个控制台程序,需要cxf库。也可自已根据wsdl写web service)

    BPEL整合WEBService服务的一个完整案例

    BPEL整合WEBService服务的一个完整案例

Global site tag (gtag.js) - Google Analytics