业务功能协作
在 SOA 团队中,业务功能定义用来生成确定的工作产品的分布式服务的集合。例如,lookupOrder(参见图 1)是一个返回详述客户订单信息的确定的数据结构的业务功能。一个更复杂的实例是 finalizeOrder(参见图 2),在其中执行一系列操作来实现订单并更新记账信息。业务工作流中的每个活动由引入的服务、输入参数列表,及输出数据定义。
图 1. 查找订单服务
图 2. 订单服务定案
活动定义(服务和消息)
大多数服务由 WSDL 描述定义,如图 3 所示,其中包含支持的消息类型和服务绑定信息的描述。 3 服务由六个主要要素定义:数据类型、输入或输出 消息、消息传递端口类型、绑定协议、绑定地址端口,及命名的服务。消息数据类型和结构可能遵从一个现有的业务数据传递定义,例如各种各样的 ebXML 实现, 4 或者可能由每个服务提供者定义。绑定协议经常基于 SOAP(简单对象访问协议(Simple Object Access Protocol))或 HTTP(超文本传输协议(Hypertext Transport Protocol)),但是面向服务的体系架构不要求所有服务使用单独的协议,只要求协议是定义了的。连接端口和服务信息也是典型定义了的,尽管如果使用了 UDDI (Universal Description and Discovery and Integration)注册,那么活动定义可能包括用于鉴别来自注册中心的有效服务的信息。
图 3. WSDL 服务模型
功能组织(工作组)
一旦确定了业务功能工作单元及服务,下一个步骤就是将这些活动组织到有意义的工作组中。业务功能工作组是拥有整体统一目的的业务功能集合。 5 例如 OrderManagementGroup,如图 4 所示,将负责引入搜索、检索、创建、修改,和取消客户订单的业务活动。这些服务中的每一个可能由一个有序的服务集执行(一个订单创建业务功能首先检查,看订单还没有存在),包括多种已经传递的消息。活动的组织还提供事务划分的起始点(在下面讨论),在此,特定的业务运作在事务的情况下执行。工作组可能更进一步地链接到链式操作中,在此,要么执行串行的操作(例如订单创建、处理,及实行),要么执行并行的操作(例如存货分配、账单生成,及账目更新)。
图 4. 服务组(服务划分)