BPEL基础总结

资料来自
1 使用bpel4ws的业务流程
http://www-900.ibm.com/developerWorks/cn/webservices/ws-bpelcol/index.shtml
  2 Web服务:BPEL4WS专题
http://www-900.ibm.com/developerWorks/cn/webservices/ws-theme/ws-bpel.shtml
 
什么是BPEL4WS ?
商业流程执行语言BPEL4WS ( Business Process Execution Language For Web Services ) 是专为整合Web Services而制定的一项规范标准。它从本质上来说是IBM的WSFL(IBM Web Services Flow Language)和Microsoft的XLANG的结合物,目前已经成为业界标准。WSFL 支持图形化的流程,而XLANG在结构化构造方面有独到的方法,而BPEL4WS正是吸取了两者的优点,同时摒弃了一些复杂繁琐的部分,形成了一种较为自然的描述商业活动的抽象高级语言
 
p.s
这里一般会有两个说法:流程和整合!
一个“将Web服务链接在一起形成的流程”和一个“Web服务的整合”概念是一样的!
 
BPEL4WS提供了一种XML注释和语义,用于指定基于Web服务的业务流程行为。使用合作伙伴的交互方式,定义了该BPEL4WS流程。合作伙伴可以将服务提供给流程,也可以向流程请求服务,或者参与到流程的双向交互中。BPEL通过指定顺序来编排Web服务,这对服务集合的调用来说意义深远。BPEL还针对每个服务分配了合作伙伴的责任。您可以使用它来指定合作伙伴的公共接口和可执行流程的描述。
BPEL4WS的定位是成为整合方面的 Web 服务标准。您可以创建能够如完成 Web 服务调用、操纵数据、抛出故障或终止一个流程等工作的不同活动,然后将它们连接起来,从而创建出复杂的流程。这些活动可以嵌套到结构化活动中,结构化活动定义了其中的活动的运行方式,如是串行或是并行还是取决于某些条件。
 
p.s
BPWS4J(Business Processes in Web Services for Java)是 BPEL4WS 规范的一个实现,它包括一个运行时引擎以及一个用于创建 BPEL4WS 流程的编辑器(它是一个 Eclipse 插件)。
 
BPEL4WS的特点
1、BPEL4WS的文法是完全基于XML规范的,如果不考虑它的程序语言特性,大家完全可以把它理解为普通的XML文档规范,也就是说可以把BPEL4WS中的所有节点对应到一个虚拟的DTD文件中。如果不考虑它的程序特性,大家在编写BPEL文件的时候就只是按照这个DTD所定义的规范在编写普通的XML文件罢了。BPEL4WS主要基于以下几个XML规范的,WSDL 1.1、XML Schema 1.0 和XPath1.0。WSDL消息和XML Schema类型定义提供了BPEL4WS流程所需要的所有数据模型,所有需要的外部资源和伙伴都被描述为WSDL服务。
如果对BPEL4WS语言的语法做较深入的研究,你就会发现它其实只是对原有编程语言思想的继承和发展。bpel继承了(拥有)传统编程语言的一些基本特性同时结合了商业处理特点的语言!比如它也有赋值、循环、错误捕捉等操作,同时它提供了远程调用的同步与异步处理、提供了并行操作、提供了补偿操作等
2、BPEL4WS虽然定义为一门商业执行语言,但实际上它并不执行商业流程中的任何细节,也就是说它一点也不涉及到商业数据的存储和处理。BPEL4WS语言从本质上来说应该是一门描述性语言,它只是描述了什么时候?以什么顺序?到哪儿?去调用那些Web服务?怎样组织这些调用?
3、bpel4ws是真正的分布式系统。比起传统的分布式系统来说,利用BPEL4WS实现的分布式系统具有更高的灵活性,这主要体现在以下几个方面:
(1) 各个节点机可以为异构系统
(2) 可以在运行时动态选择节点机进行处理
(3) 可以采用各种通信协议进行通信,只要符合SOAP协议。
 
BPEL4WS 的基本概念
BPEL4WS 支持两种截然不同的使用情形:
1.        实现可执行的业务流程。
2.        描述不可执行的抽象流程。
 
作为可执行流程的描述语言,BPEL4WS 的作用是将一组现有的服务整合起来,从而定义一个新的 Web 服务。
 
图 1. 作为 BPEL4WS 流程实现的 Web 服务的视图
 
实现服务
 
BPEL4WS 流程本身基本上就是一个流程图,类似于用来表达算法的流程图。流程的每一步称为一个活动。
 
基本活动是与外界进行交互最简单的形式。它们是无序的个别步骤,与服务进行交互、操作传输数据或者处理异常。存在以下一些基本活动:
 
调用某个 Web 服务上的操作(<invoke>)
等待一条消息来响应由某人从外部进行调用的服务接口的操作(<receive>)
生成输入/输出操作的响应(<reply>)
等待一段时间(<wait>)
把数据从一个地方复制到另一个地方(<assign>)
指明某个地方出错了(<throw>)
终止整个服务实例(<terminate>)
或者什么也不做(<empty>)。
 
通过使用语言所提供的任何结构化活动,可以将这些原语活动组合成更复杂的算法。结构化活动规定了一组活动发生的顺序。结构化活动通过将业务流程执行的基本活动整合到结构中来描述业务流程是如何被创建的,这些结构表达了业务协议中所涉及的控制模式、数据流、故障和外部事件的处理以及在流程实例之间进行消息交换的协调。
 
这些结构化活动提供的能力有:
 
定义一组步骤的有序序列(<sequence>)
使用现在常见的“case-statement”办法来产生分支(<switch>)
定义一个循环(<while>)
执行几条可选路径中的一条(<pick>)
为嵌套在其中的活动提供故障处理功能和补偿处理功能(<scope>)
以及指明一组步骤应该并行地执行(<flow>)
在并行地执行的一组活动中,您可以通过使用链接(link)来指明执行顺序方面的约束。
 
BPEL4WS 允许您递归地组合结构化活动,以表达任意复杂的算法,这些算法表示了服务的实现。
 
伙伴
作为一种用来将一组服务组合在一起以形成一个新的服务的语言,BPEL4WS 流程由向其它服务提出调用和/或接收来自客户机(图1中服务的用户 )的调用组成。前者通过使用 <invoke> 活动来做到,后者则通过使用 <receive> 和 <reply> 活动来做到。BPEL4WS 把与流程交互的其它服务称伙伴(partner)。这样,伙伴或者是流程将其作为算法的一个主要部分进行调用的服务(被调用的伙伴),或者是那些调用流程的服务(客户机伙伴)。
 
伙伴可以分为以下几种:
1.        只由流程调用的服务。
2.        只调用流程的服务。
3.        或者既由流程调用又调用流程的服务(首先出现哪种情况都有可能)。
 
服务链接类型
为第三种类型的伙伴建模时引出了服务链接类型。服务链接类型是一种第三方声明,用这个声明来说明了两个(也可能是更多个)服务之间的关系。服务链接类型定义了一组角色,其中每个角色指明一组 portType。其思想是,当两个服务彼此交互时,服务链接类型就是对这两个服务如何交互-----各方本质上提供了什么------的声明。
BPEL4WS 用服务链接类型来定义伙伴。基本上,伙伴是这样来定义的:给伙伴一个名称,然后指明服务链接类型的名称,确定流程在这个服务链接类型中将充当什么角色,确定伙伴将充当什么角色。对于纯被调用的伙伴和纯客户机伙伴的情况,服务链接类型中将只有一个角色,因而在定义伙伴时只指明了一个角色。伙伴名称随后将在 <receive>、<reply> 和 <invoke> 中用来指明所期望的伙伴。
 
服务引用
伙伴在运行时是如何工作的呢?为了能够在运行时工作,伙伴必须解析成实际的 Web 服务。这样,伙伴实际上最后就是一个有类型的服务引用而已,其类型信息来自服务链接类型和角色。BPEL4WS 流程本身不指定伙伴如何绑定到特定服务;人们认为这是一个部署时或运行时的绑定步骤,这个绑定步骤必须被 BPEL4WS 实现支持。
 
处理问题
BPEL4WS 通过 <throw> 和 <catch> 构造在语言中内置了异常(故障)。BPEL4WS 的故障概念建立在 WSDL 的故障概念的基础上。此外,BPEL4WS 支持补偿这个概念,这是一种允许流程设计者为某些不可逆的动作实现一些补偿动作的技术。BPEL4WS 引入了作用域这个概念,从而递归地支持了故障处理和补偿,作用域本质上是故障处理和/或补偿的单元。
 
服务的生命周期
作为 BPEL4WS 流程实现的 Web 服务有一个实例生命周期模型。也就是说,这些服务的客户机总是与服务(流程)的某个特定实例交互。
与传统的分布式对象系统不同,BPEL4WS 实例不是通过工厂模式创建的。相反,BPEL4WS 中的实例是在服务的消息到达时隐式地创建的。也就是说,实例不是用显式的“实例标识(instance ID)”来标识,而是用数据消息中的一些关键字域来标识。举例来说,如果流程表示一个订单实现系统,则发票号码可能就是用来标识交互所涉及的某个特定实例的“关键字”域。这样,如果当消息到达流程的“启动”点时没有可用的匹配实例,那么就会自动创建一个新的实例并与消息中的关键字数据关联起来。在定位到了合适的实例之后,只能在流程的非启动点接受消息;也就是说,在这些情况下,消息事实上总是被传送到特定实例。在 BPEL4WS 中,找到一个合适的实例或者创建一个合适的实例(如有必要的话)的流程称为消息相关性(message correlation)。消息相关性要解决的问题是确定一条消息属于那个对话,在BPEL4WS中就是定位/实例化一个实例。
 
The End
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值