BPEL 实例教程(五)

日期: 2007-12-13 作者:Matjaz Juric 来源:TechTarget中国

  如果美国航空公司的机票报价低于达美航空公司的机票报价,则将 FlightResponseAA 变量复制到 TravelResponse 变量(我们最终将此变量返回给客户端)。否则,我们将复制 FlightResponseDA 变量。

  我们已经到达此 BPEL 业务流程的最后一步 — 使用 <invoke> 活动将回调返回给客户端。对于此回调,我们使用客户端合作伙伴链接并对 ClientCallbackPT 端口类型调用 ClientCallback 操作。保存答复消息的变量为 TravelResponse:

<!– Make a callback to the client –>
<invoke partnerLink=”client” 
portType=”trv:ClientCallbackPT” 
operation=”ClientCallback”
inputVariable=”TravelResponse” />
</sequence>
</process>

  到此,我们已经完成了我们的第一个 BPEL 业务流程规范。您可以看到,BPEL 并不是很复杂,并允许相对简单和自然的业务流程规范。

  第 5 步:部署和测试

  我们部署到 Oracle BPEL Process Manager 的每个 BPEL 流程都需要一个流程描述符。BPEL 标准不包括此流程描述符,且它特定于 BPEL 服务器。部署流程描述符是流程在给定平台上的唯一实现部分,必须重写它才能在不同 BPEL 引擎上运行该流程。Oracle 流程描述符是一个 XML 文件,它指定有关 BPEL 流程的以下细节:BPEL 源文件名、BPEL 流程名 (ID)、所有合作伙伴链接 WSDL Web 服务的 WSDL 位置以及可选的配置属性。流程描述符的默认文件名为 bpel.xml,但我们可以使用任何其他名称:

<BPELSuitcase>

<BPELProcess src=”Travel.bpel” id=”TravelProcessCh4″>
<partnerLinkBindings>

<partnerLinkBinding name=”client”>
<property name=”wsdlLocation”>
Travel.wsdl
</property>
</partnerLinkBinding>

<partnerLinkBinding name=”employeeTravelStatus”>
<property name=”wsdlLocation”>
http://localhost:9700/orabpel/default/Employee/Employee?wsdl
</property>
</partnerLinkBinding>

<partnerLinkBinding name=”AmericanAirlines”>
<property name=”wsdlLocation”>
http://localhost:9700/orabpel/default/AmericanAirline/AmericanAirline?wsdl
</property>
</partnerLinkBinding>

<partnerLinkBinding name=”DeltaAirlines”>
<property name=”wsdlLocation”>
http://localhost:9700/orabpel/default/DeltaAirline/DeltaAirline?wsdl
</property>
</partnerLinkBinding>

</partnerLinkBindings>
</BPELProcess>
</BPELSuitcase>
 
  我们现在准备启动 BPEL Process Manager。可以从开始菜单(如果使用 Windows)或通过执行 c:orabpelbin 目录中的 startOraBPEL 脚本(假设 Oracle BPEL Process Manager 已经安装到 c:orabpel 中)来执行此操作。为便于访问,建议将此目录包含在 PATH 中。

  Oracle BPEL Process Manager 包含一个名为 obant 的 Ant 实用程序,用于配置复杂的编译和部署方案。obant 只是一个围绕标准 Ant 的包装程序,用于设置环境,然后调用标准 Ant Java 任务。要使用它,我们必须准备相应的项目文件(通常名为 build.xml)。以下是出差示例流程的项目文件:

<?xml version=”1.0″?>
<project name=”TravelProcessCh4″ default=”main” basedir=”.”>

<property name=”deploy” value=”default”/>
<property name=”rev” value=”1.0″/>
      
<target name=”main”>
<bpelc home=”${home}” rev=”${rev}” deploy=”${deploy}”/>       
</target>

</project>
 
  要编译和部署此 BPEL 流程,我们只需从命令行启动 obant。

  既然我们已经在 Oracle BPEL 服务器上成功部署了 BPEL 流程,那我们就执行它。Oracle BPEL Process Manager 提供了一个 BPEL 控制台,通过它可以在 BPEL 服务器域中执行、监视、管理和调试 BPEL 流程。可以通过 http://localhost:9700/BPELConsole/ 访问 BPEL 控制台。我们必须单击流程名、填写以下表单并按 Post XML Message 按钮:

  图 7:BPEL 控制台

  我们现在看到一个屏幕,通知我们正在异步处理流程实例。我们可以选择执行、实例审计或实例调试的可视化流。实例的可视化流以图形方式显示了 BPEL 流程实例的执行。我们可以监视流程的执行及其状态(正在运行、已完成、已取消或过时):

  图 8:实例流的图形视图

  结论

  现在,您已经熟悉了使用 BPEL 组合 Web 服务的基本概念,您可以更深入地研究更高级的概念。我的下一篇文章将介绍一些高级 BPEL 特性,如故障处理、范围、补偿、并发活动以及事件处理。

 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • SAP收购CallidusCloud 与Salesforce竞争

    一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]

  • API设计如龙生九子 各不相同

    IT咨询管理公司CA Technologies对API产业做了个问卷调查,问卷内容涉及API设计风格以及管理部署的新动向。调查结果表明,JSON与XML可谓两分天下。

  • 保险公司如何能从BPEL中获益

    对于保险业整合不同系统是一件寻常的工作。但保险公司经常会面临监管条例改变和应对不同的顾客需求。为了解决这些系统问题,软件专家正在使用一种强大的工具——BPEL。

  • 从头开始实现领域驱动设计

    领域描述业务;它是驱动企业的概念和逻辑的集合。如果遵循领域驱动设计(DDD)这一本质,那么领域就是应用程序中最重要的组成部分。