【TechTarget中国原创】在本文的第一部分中,我们介绍了服务合成的基本要素编排和编制的区别与关系。在这一部分,我们将介绍如何使用WS-BPEL。
之前提到过,WS-BPEL是一种编制语言,通过定义控制流,来描述Web服务应用的执行逻辑,为伙伴服务提供了一种共享上下文的方法。伙伴服务指的是和WS-BPEL流程交互的服务。
WS-BPEL是建立在几种规范之上,如SOAP、WSDL和XML Schema。WSDL可能是其中最重要的一个。在基于WS-BPEL的合成服务中,正是WSDL让服务起到作用。WS-BPEL可以定义业务流程,通过WSDL描述,让流程与合作服务进行交互(稍后具体解释)。
有意思的是,虽然WS-BPEL是目前最受欢迎的可执行业务流程语言,但并不是对基于Web服务应用的执行逻辑进行定义的唯一方法。还有其他规范,如XLANG、WSFL、XPDL和BPML。每一种都可以替代WS-BPEL。
通过WS-BPEL,你可以把一组Web服务集成到业务流程流中,从而构建业务流程。WS-BPEL业务流程具体指定了如何在该流程的实例和伙伴服务之间协调交互。图3举的例子就是WS-BPEL业务流程的工作流示意图。

图3:把WS-BPEL流程封装到图1描述的合成服务之工作流示意图
图中所描述的WS-BPEL流程把所有的服务都集成到一个点对点流程中,这些服务都是从接受方案开始到最终完成所有步骤所需的服务。在这个具体的例子中,该流程集成了四个Web服务,如图1中所示。在下文我们将介绍WS-BPEL流程如何通过WSDL文档定义的一个伙伴链接来连接Web服务。
WS-BPEL流程除了具有调用多个服务的能力外,还可能对XML数据进行操作,运行并行处理、条件分支和循环来控制流程流。例如,在上面的流程中,你可以使用一个开关动作,建立两个分支。如果提交方案的是一名新作者,那么这个流程就会调用“Author”服务,把作者的信息保存到数据库。否则,就跳过这一步。
在接下来的第三部分,我们将用实例具体讲解如何设计WSDL定义。
关于作者
Yuli Vasiliev是软件开发者、自由撰稿人和咨询师。目前专注于开源开发、Oracle技术和SOA。他具有十多年的软件开发经验和七年多的技术写作经验。他出版的新书《SOA and WS-BPEL》具体详述了如何使用开源产品PHP和ActiveBPEL引擎创建和部署你自己的面向服务解决方案。