BPEL 2.0服务契约之基础篇:什么是编制和编排?

日期: 2009-06-28 作者:Yuli Vasilev翻译:杨晓明 来源:TechTarget中国 英文

本文选自<<SOA and WS-BPEL>>一书,旨在探讨如何为封装WS-BPEL流程逻辑所需的Web服务设计WSDL定义。因为SOA提倡用“契约优先”的方式来设计服务,所以理解由WS-BPEL引发的这种独特服务契约设计理念,是成功构建有效流程和服务的关键因素。   目前,SOA作为一种架构平台已经被很多公司所采用。SOA是一种有效的方法,能够把建立在Web服务的企业应用进行集成。

Web服务是把业务逻辑封装在清楚的上下文中,并且容易组合到合成解决方案之中的松耦合软件。虽然创建远程访问资源和功能的应用不是什么新鲜事,但是,能够根据面向服务原则(如松耦合)去做,却代表一种……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

本文选自<<SOA and WS-BPEL>>一书,旨在探讨如何为封装WS-BPEL流程逻辑所需的Web服务设计WSDL定义。因为SOA提倡用“契约优先”的方式来设计服务,所以理解由WS-BPEL引发的这种独特服务契约设计理念,是成功构建有效流程和服务的关键因素。

  目前,SOA作为一种架构平台已经被很多公司所采用。SOA是一种有效的方法,能够把建立在Web服务的企业应用进行集成。Web服务是把业务逻辑封装在清楚的上下文中,并且容易组合到合成解决方案之中的松耦合软件。虽然创建远程访问资源和功能的应用不是什么新鲜事,但是,能够根据面向服务原则(如松耦合)去做,却代表一种相对而言比较新的方法。

  Web服务是一种技术,它规定了一种标准机制,即如何通过互联网协议(如HTTP)暴露并使用数据和应用逻辑。而WS-BPEL则是一种编制语言,用来规定业务流程,以描述Web服务间的交互,从而为建立基于Web服务的面向服务解决方案打下了基础。因此,为了利用Web服务和WS-BPEL来建立面向服务的解决方案,必须遵循以下两大步骤:

  ? 创建并发布Web服务,以运用到解决方案中

  ? 使用WS-BPEL把Web服务合成到业务流中

  本文着重探讨WS-BPEL和Web服务之间的关系,同时重点介绍WSDL定义的设计。

  服务合成的基本要素

  实际上有很多方法可以把服务组织起来,形成一个合成方案。比如说,你可以创建一个合成服务,采用PHP脚本的形式,作为Web服务发布;如果有需要的话,通过编程的方式调用其他服务。然而,创建合成服务的最常见方式还是通过使用WS-BPEL,尤其是在更加复杂的合成中。WS-BPEL是一种编制语言,可以用来创建编制。编制是一种合成、控制器服务,规定使用的服务将如何通过互相协作来完成工作。

  编制(Orchestration)

  编制是把各种服务组装到可执行的业务流程中,然后通过一个编制引擎来执行业务流程。用示意图来表示的话,一个编制可能看似图1:

           

  图1:将其他服务组织到SOA合成中的控制服务器

  从中可以看到,图1中的示意图说明了服务的组合,这些服务通过封装在控制器服务中的逻辑来进行协调。该控制器服务可能是一个WS-BPEL业务流程;当编制引擎运行时,它来完成某项业务任务。

  可以把用WS-BPEL编制语言构建的控制器服务看成是编制任务服务(Orchestrater Task Service)。作为Web服务,控制服务器应该还有一个相应的WSDL文档,用来向使用者描述这个服务。等下我们再讨论如何为由WS-BPEL构建的合成服务创建WSDL规范。

  你可以创建一个编制,在另一个更大的编排中,把它作为服务来使用。例如,图1中描述的编制可能是另一个WS-BPEL编制的一部分。整个编辑过程,从接受方案到发布文章,是通过这个更大的编制来自动执行。

  编排(Choreography)

  Web服务编排规范和Web服务编排描述语言(WS-CDL)提供了构建SOA合成应用的另一种方法。WS-BPEL是用来把各种服务编制到合成解决方案中,通常表述了某公司的特定业务流程流。而Web服务编排描述语言(WS-CDL)描述了Web服务和参与者之间的点对点关系,这些参与者既可以在受信任范围内,也可以不在受信任范围内。

  与编制不同的是,编排不包括一个中央控制机制,而是假定控制是在交互的参与者之间进行共享。这就是说,编制代表的是一个可执行流程,它在通过位于某个位置的一个编制引擎来执行。而编排实质上是代表一种描述,即如何在相互协同的参与者之间来分布控制,而不需要使用任何单个引擎来完成某项工作。

  为了定义编排,就需要创建WS-CDL编排描述文档;它将是交互参与者之间的契约。具体来说,WS-CDL文档描述的是相互协作的参与者之间的消息交换,规定这些参与者如何为完成一个共同的业务目标而必须一起工作。例如,可能会存在这样一种编排:在一个编制、一个代表WS-BPEL流程的控制器服务和一个与控制器服务交互的客户端服务之间进行协作。

  用示意图来表示的话,可能看似图2所示:

            

  图2:基于WS-BPEL业务流程的合成服务与该服务使用者之间的编排

  在这种场景下,编排层的作用是具体规定两个服务之间的点对点协作。WS-CDL编排文档特别描述了上文提到的合成服务和其中一个使用者之间的消息交换。

  在本文的第二部分,我们将具体介绍如何使用WS-BPEL。

  关于作者

  Yuli Vasiliev是软件开发者、自由撰稿人和咨询师。目前专注于开源开发、Oracle技术和SOA。他具有十多年的软件开发经验和七年多的技术写作经验。他出版的新书《SOA and WS-BPEL》具体详述了如何使用开源产品PHP和ActiveBPEL引擎创建和部署你自己的面向服务解决方案。

相关推荐