`
weihong01267
  • 浏览: 51650 次
  • 性别: 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,结果如下图所示:

分享到:
评论

相关推荐

    在Eclipse下开发BPEL实例分享

    ### 在Eclipse下开发BPEL实例的知识点详解 #### 一、环境准备 **1.1 预置环境** - **JDK版本:** 需要安装JDK 1.6版本,这是BPEL开发的基本要求之一。 - **Tomcat版本:** 使用的是Tomcat 6.0,作为Web应用服务器...

    BPEL实例教程代码

    BPEL实例教程代码

    BPEL实例简明教程(20页)

    【BPEL实例简明教程】是一篇关于Web服务业务流程执行语言(Business Process Execution Language,简称BPEL)的教程,旨在通过实例讲解BPEL的基础架构和使用方法。BPEL是一种用于构建和执行基于Web服务的业务流程的...

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

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

    一起学BPEL实例教程

    在"一起学BPEL实例教程一V1.0"中,你可以学习到如何通过实际操作理解上述概念,逐步掌握BPEL的开发技巧。这个教程不仅包含了理论讲解,还提供了代码实例,使学习更加直观和深入。通过实践,你将能够熟练地使用BPEL来...

    bpel完整实例(webservice+bpel)

    **BPel 完整实例(WebService + BPEL)** **一、BPel简介** Business Process Execution Language(BPEL)是一种用于编排Web服务的业务流程执行语言,它是基于XML的,专为实现企业服务总线(ESB)上的复杂业务流程...

    BPEL实例 eclipse apache ode

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

    BPEL 实例教程

    ### BPEL实例教程知识点详解 #### 一、BPEL概述 **BPEL**(Business Process Execution Language),即业务流程执行语言,是一种基于Web服务的技术,用于定义和执行复杂的业务流程。它允许用户通过组合现有的Web服务...

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

    下面我们将深入探讨这个"组合加减法运算"的BPEL实例。 1. **BPEL 流程设计** BPEL流程通常由一系列活动组成,这些活动可以是服务调用、数据处理、条件判断等。在这个实例中,流程可能包含两个主要部分:一个用于...

    BPEL实例教程

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

    BPEL流程编排发布实例

    **BPEL流程编排发布实例** BPEL(Business Process Execution Language)是一种用于描述企业服务编排和服务导向架构(SOA)中的业务流程的XML规范。它允许开发者定义复杂的业务流程,这些流程可以调用Web服务和其他...

    BPEL 入门 实例

    ### BPEL 入门实例详解 #### 一、BPEL 概念与背景 BPEL(Business Process Execution Language)是一种专为Web服务设计的业务流程执行语言,也被称作BPEL4WS。它允许开发人员通过组合、编排和协调Web服务来自上而...

    bpel入门级实例

    在“BPEL实例教程1.1.pdf”文档中,你可能会找到以下关键知识点: 1. **BPEL基本结构**:BPEL流程通常由一系列活动(Activities)组成,如Receive、Invoke、Assign、If、While等,这些活动定义了流程的逻辑顺序和...

    BPEL的基本思想 实例讲解

    BPEL实例讲解** 在实际应用中,BPEL流程通常包含以下步骤: 1. **初始化(Initialize)**:设置流程所需的初始变量和状态。 2. **服务调用(Invoke)**:调用外部服务,可以是同步或异步的。 3. **数据处理(Assign...

    BPEL的一个运行实例

    ### BPEL的一个运行实例 #### 1. 前言 ##### 1.1. 前提条件 本文档假设读者已经具备基本的Java编程基础、了解Web服务的基本概念以及熟悉Eclipse IDE的使用。 ##### 1.2. 目标 本教程旨在通过一个具体的例子来介绍...

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

    本文档详细介绍了如何在Eclipse环境中手动部署并测试BPEL服务,包括环境配置、工具安装、Web服务开发部署以及BPEL实例的开发与部署等关键步骤。通过对原有文档的改进,确保了整个流程的成功实施,有助于读者更好地...

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

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

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

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

Global site tag (gtag.js) - Google Analytics