实现动态、可重用的SOA

本文介绍如何通过Oracle服务注册表(OSR)实现BPEL流程的动态绑定,从而提高系统的灵活性和可重用性。通过将服务绑定信息从BPEL流程中剥离并注册到OSR,使得在不改变流程本身的情况下能够更改服务实施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  随着 BPEL 的引进,SOA 已有了大的发展,现在可将业务流程(包含原子服务)可编排至可执行文件中。但是就到此为止了吗,或者说这就是可重用性以及灵活性可以达到的最高程度?

  本文中,我们将介绍:Oracle 服务注册表 (OSR)。您将从中了解到如何在不牺牲性能的情况下放松紧密耦合的 BPEL 流程,同时创建一个使企业受益的可重用且可发现的文件库。

  设置

  示例场景包含两个 BPEL 流程:一个主流程 (MasterProcess),它用以调用另一个名为 CalleeProcess 的流程。一般而言,构建场景时,主流程与它的服务通过引用其具体的绑定定义 (WSDL) 紧密耦合。

  创建了 BPEL 流程后,创建者已确定了该流程提供的消息模式。根据其操作,可以是异步或同步。

  请看以下的 CalleeProcess 定义。

图 1

  在上述示例中,流程的服务接口提供了一个称为“process”的操作,该操作在其内部定义了一个输入 (CalleeProcessRequestMessage) 和一个输出 (CalleeProcessResponseMessage) 消息。

  此时,BPEL 流程不包含任何有关其所在位置或用何种技术调用它的信息。

  将 BPEL 流程部署到服务后,应实现 WSDL 接口并添加一个物理端点。此时,其定义将由抽象转为具体。

图 2

 

  现在,流程 (CalleeProcess) 已变成了一个服务,可以通过使用其具体的 WSDL 位置并将将其作为 partnerlink 的基础,在另一个流程中重用它。

图 3

  部署成功后,就可以调用 MasterProcess 了。这将触发 CalleeProcess 的执行,而其通信是完全在内存中处理的。

  将服务绑定从 BPEL 流程剥离

  准备工作完成后,实现松散耦合系统的第一步,就是将实施从 CalleeProcess(从 MasterProcess 调用)的定义中剥离。

  将该模式应用到 BPEL 流程可带来极大的灵活性,这是因为无需更改流程本身即可更改所使用的特定服务实施。

  在本步骤中,将具体的服务定义注册到 OSR 后,它在整个企业中都可被发现了。

  根据 UDDI 数据模型,服务是业务(允许按用途分组)的细目。(注意:业务与可视性没有联系。)

  只需在 UDDI 业务实体下发布一个 WSDL 就可以添加服务定义(本例中为 CalleeProcess 的服务定义),如下所示。

图 4

  完成发布过程后,可将服务定义添加到业务 (DynamicDiscoveryBusiness),为 CalleeProcess 创建一个 UDDI 项,以及添加一个与物理端点的绑定。

图 5

  现在,服务注册表的 UI 中唯一可发现就是物理端点,调用服务需要调用对该端点。要使动态绑定与技术和实施无关,需要添加一个新绑定。该绑定的类型为 wsdlDeployment,它将由 BPEL 引擎在运行时使用。

图 6

  现在,可以应用 BPEL 流程并向 BPEL 域添加关键信息以实现动态的服务注册表查询。首先,需要向 Partnerlink 添加 CalleeProcess 的唯一服务键。单击服务项的细目可找到该键。

图 7

  正如“利用 ESB 虚拟化 BPEL 流程服务端点”中所述,partnerlink 可包含特定的属性,用于修改或增强其运行时行为。在本例中,该标志名为 registryServiceKey,它是使 BPEL 服务器在运行时发现 OSR 中具体服务定义的一个 UDDI 唯一标识符。

图 8

  实现查询所需的最后一个信息是配置 BPEL 服务器,包含有关目标 OSR 实例位置 (uddiLocation) 的信息;如果要加强安全性,还可包含用户名 (uddiUsername) 和口令 (uddiPassword)。

图 9

  为什么要应用这些更改?现在,流程与服务的物理实施相分离,流程能够在运行时查询 OSR 实例以检索和调用端点。这意味着,在硬件或软件发生变化时,不必修改流程配置就可以移动服务,这是因为所有信息都存储在服务注册表中。

  最后一步是接受具体的 WSDL,图片中没有显示出 partnerlink。重要的是,BPEL 编译器 (bpelc) 需要有关操作和类型的信息,以确保部署前的类型完整性。但没有必要提供所有绑定信息。

  这意味着将使用抽象的 WSDL,而不是提供具体的 WSDL。再次查看流程描述符,其中将揭示其位置。

图 10

  如上所示,并不是将 wsdlLocation 属性指向 CalleeProcess 具体的 WSDL。

  重新编译和部署流程将实现我们期望达到的松散耦合度。

图 11

  该流程没有包含任何有关用于实施服务的技术或其端点的信息。

  结论

  在 MasterProcess 知晓技术以及其调用的流程 (CalleeProcess) 位置的前提下,完全独立于业务流程实现动态绑定并管理端点和属性是多么容易呀。

  关键信息现在位于可搜索的、符合 UDDI v3 的注册表中,可在运行时发现这些信息,从而使流程可以提供最大限度的灵活性。尽管引入了另一个组件,但使用方与提供方之间的性能并未降低太多,这应归功于注册表精确的内存中查找以及端点调用。

查看原文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值