通过中心流程来控制总体的目标、涉及的操作和服务调用顺序。这种集中化管理使万维网服务能够在不了解彼此影响的情况下进行添加和删除,还允许在出现错误和异常的情况下进行补偿。其结果可以看作一个新的万维网服务,而且可以执行,只是执行的过程需要调用别的万维网服务。服务编制将多个小粒度的万维网服务按照特定的业务逻辑规则构造为一个可执行的业务流程,同时又可以看作是一个大粒度的复合万维网服务,侧重点是如何使用已有的服务来构造新的服务。
编制虽然是采用统一控制的方式,但是编制的状态为由里向外的方式来反映,视角集中在具体的参与者的活动。
万维网服务业务流程执行语言(Web service business process execution language,WS-BPEL)是一种基于可扩展标记语言(extensible markup language,XML)用来描述高层次业务流程的编程语言。其适合于服务的编制,此标准主要用于组织内部的业务流程管理。WS-BPEL支持两类不同类型的业务流程:①可执行过程。定义了要执行的各项具体任务,以及完成业务流程所需要调用的各个服务,它们遵循编排规范,可以被一个编排引擎所执行。②抽象过程。详细说明了双方或多方的公共消息交换,但没有定义流程的内部行为细节,不可执行。可执行的过程是一个可以在一个计算机上执行的过程。抽象过程是用来描述一个过程的反应的,它被用在一个可执行过程的表面来将这个过程的内部行为掩饰起来不让业务对象看到。
WS-BPEL是基于可扩展标记语言定义的过程描述语言。WS-BPEL描述的业务过程指定了一组万维网服务操作的可能执行顺序及其相互依赖关系、提供万维网服务的合作伙伴及其在业务流程中扮演的角色、服务间共享的数据、故障及补偿处理等一系列问题。为了实现这些功能,WS-BPEL引入了变量、合作伙伴链接、活动、相关性和作用域等关键元素。①变量。变量用来保存组成业务流程状态的消息,它们通常是从合作伙伴那里接收到的消息,或是将被发送给合作伙伴的消息。同时,它们还有可能是与流程有关的状态信息,这些消息并不与合作伙伴进行交换。②合作伙伴链接。合作伙伴链接用于实现万维网服务间长期稳定的交互,它是由合作伙伴链接类型来描述。合作伙伴链接类型定义了服务在会话中扮演的角色,并指定了每个服务所提供的端口类型,以便接收会话的上下文的消息。合作伙伴链接类型与合作伙伴链接之间具有一对多的关系,同一个合作伙伴链接类型可以用来描述多个合作伙伴链接。虽然使用服务的用户须静态的依赖于特定的端口类型,但是在执行过程中可以通过端口类型动态的发现和使用包括在端口定义中的信息。③活动。活动用于描述流程的正常行为,包括基本活动和结构化的活动,其中基本活动定义了组成业务流程的任务,主要包括:接收,等待一个匹配的消息到达;应答,作为对接收的响应;援引,向一个交互对象发出请求;分派,更新变量的值;退出,立即终止一个业务流程的执行等。结构化的活动定义了流程的逻辑顺序,即控制流,主要包括:序列,定义顺序执行多个活动;流,定义多个并行的活动;拾取,等待几个消息之中的一个到达,或超时;作用域,定义嵌套活动,包括和自己关联的变量、故障处理程序和补偿处理程序;从多个活动中选择一个,循环控制,以及同步两个活动等。每个流程都是通过结构化的活动将基本活动组织起来,完成特定的任务。④相关性。相关性用来区别特定的实例,它依赖于消息特性,特性只是消息中由查询识别的字段,多个消息特性组合成相关集,用于定义流程中的相关性。⑤作用域。每个作用域提供了活动执行的上下文,包括故障处理程序、事件处理程序、补偿处理程序、数据变量和相关集,作用域中的所有活动共享这些上下文的内容。
WS-BPEL定义可被看成创建业务流程实例的模板,每个实例都具有自己的生命周期,从实例的创建到实例的终止。实例的创建是隐式的,当接收或拾取活动的实例创建属性被设为“是”时,当活动执行到它们时就会检查该实例是否存在,如果不存在就创建一个新实例。可以通过以下几种方式终止实例:当定义流程行为的活动全部完成时;当故障到达流程的作用域时;当流程实例被终止活动显示终止。其中,只有第一种情况下流程的终止是正常的,其他情况都属于异常终止。