http://tech.it168.com/soadocument/2008-01-03/200801031332376.shtml

WS-BPEL是为组合Web服务而制定的一项规范。它的前身是由IBM、Microsoft共同推出的Web服务业务流程执行语言BPEL4WS,2003年4月6日交由OASIS组织审查,正式公布1.0版本,并且成立BPEL4WS技术委员会,决定未来规范的发展方向。该委员会致力于产生一种用于编写Web服务控制逻辑的、独立于平台的、基于XML的编程语言。2003年5月3日,由BEA、IBM、Microsoft、SAP及Siebel Systems五家公司完成BPEL4WS 1.1版本。BPEL4WS 1.1版本推出后,技术委员会又对BPEL4WS 1.1做了大量修改工作,使之得到全面提高。随后,推出Web服务业务流程执行语言2.0规范草案,把BPEL4WS语言改称为WS-BPEL(Web Services Business Process Execution Language),除此之外还增加了对人员任务(WS-BPEL Extension for People)、Java语言(BPELJ)和子业务流程(WS-BPEL 2.0:Extensions for Sub-Processes)等的扩展支持。虽然除BPEL之外还有其他业务流程规范,但是到目前为止,BPEL是最为成熟和被广泛支持的技术。
    WS-BPEL是IBM的WSFL和Microsoft的XLANG相结合的产物。WSFL和XLANG分别基于Petri网和Pi-calculus,因此BPEL吸收和借鉴Petri网和Pi-calculus的优点,是一种高级的、抽象的、可执行建模语言,它不仅实现Web服务间的交互和流程编排,也将流程自身暴露为Web服务。
    BEPL产生的动机源于以下三个方面:
    1. 面向业务的整合

  • 企业内部的整合(Enterprise Application Integration)
  • 合作伙伴间的集成(Business-to-Business Integration)
  • 企业间跨行业整合(Syndication)

2. Web Services到面向服务的计算(Service-Oriented Computing)的演进

  • 应用被看作服务(Service)
  • 松耦合(Loosely Coupled),动态交互
  • 异构平台(Heterogeneous Platforms)

3. 服务组合
    域中服务如何组合?

WS-BPEL的技术特征

作为当前基于流程的Web服务编排(Service Choreography)最常使用的技术,BPEL提供了一个描述基于流程及其合作伙伴之间Web服务交互的业务流程行为模型。使用BPEL可以实现两种不同类型的流程:可执行流程和抽象流程。可执行流程描述了服务的内部实现,抽象流程则定义了服务的外部行为。
    服务编排是BPEL设计的核心概念。BPEL提供序列和规则来描述Partner Services被调用的顺序。这种功能我们可以使用Java、C或C#等语言,通过在应用中硬编码的方式来实现,但却牺牲了业务和应用变更的灵活性,也造成整个体系结构的紧耦合。通过BPEL来描述服务之间的关系,我们可以实现非常轻便的松耦合架构,来配合企业业务的灵活变更。WS-BPEL相当于服务间的粘合剂,帮我们轻松实现服务间的编排(如图1所示)。

基于WS-BPEL2.0的服务组合研究-LMLPHP
图1

WS-BPEL依赖于下列基于XML的规范:WSDL 1.1、XML Schema 1.0、XPath 1.0、XSLT 1.0和Infoset。其中,WSDL对WS-BPEL的影响最大。WS-BPEL的流程模型位于WSDL 1.1定义的服务模型的顶层(如图2所示)。

基于WS-BPEL2.0的服务组合研究-LMLPHP
图2

在WSDL中,不仅定义了服务允许的各种传输消息类型和操作,还通过定义服务链接类型描述服务间的依赖关系。图3显示了BPEL在WS-*协议族中的位置。BPEL定义了WSDL操作如何被编排在一起以满足业务流程,BPEL还明确规定了在支持长运行异步(long-running asynchronous)流程方面对WSDL的扩展。在BPEL中,直接引用WSDL中定义的操作,并通过Web服务接口提供流程实例。相对于其伙伴和资源行为及交互的描述,流程和其相关的合作伙伴都被暴露成WSDL服务。业务流程定义了一个流程实例和它的partners之间该怎样协同交互。由此,WS-BPEL流程定义提供或使用一个或多个WSDL服务。更准确地说,WS-BPEL被用来描述在交互中一个有着明确角色流程的消息交换。

基于WS-BPEL2.0的服务组合研究-LMLPHP
图3 WS-BPEL in the WS-* Stack

WS-BPEL业务流程的定义遵循WSDL的分离(Separation of Concerns)模型,即把业务流程使用的抽象消息内容与部署信息(消息和端口类型<port type>通过绑定<binding>和地址信息<address information>)分离。具体地说,WS-BPEL流程用抽象WSDL接口<port types>和操作来表示所有的合作伙伴以及与这些合作伙伴的交互,它并不引用流程实例使用的实际服务。WS-BPEL不做关于WSDL binding的任何假设。

04-20 12:22