不过,在现实世界中,存在重叠的任何产品集中通常都包含功能区。例如,WebSphere Process Server(以下称为 Process Server)是在参考体系结构中提供流程服务的软件组件。它是从 WebSphere MQ Workflow、WebSphere Interchange Server 和 WebSphere Business Integration Server Foundation 发展而来的。为便于用户升级前代产品,它包括了与旧产品中的功能等效的功能。例如,Interchange Server 包括了业务对象映射,该对象映射以接口映射形式存在于 Process Server 中。
可以映射流入或流出业务流程的业务对象。映射还是 ESB 中的主要功能之一。因此,如果您同时拥有 Process Server 和 ESB,则需要决定应使用哪一个产品解决给定的业务问题,原因是这些区域存在重叠。
还存在一些可能使用 Process Server 或 ESB 的其他用例。例如,假设需要使用两阶段提交调用三个现有服务。这称为组合服务。在 ESB 中,您可以使用中介流调用这些服务。中介流是作为事务提交或回滚的。您可以使用 WS-BPEL 微流调用这三个服务,同时提供事务性。这样,可以使用这两种产品作为解决方案。如何决定哪一种产品是正确的?
OASIS 标准组织已将 Business Process Execution Language (BPEL) 定义为基于标准的方法,使用该方法可以编排由服务构成的业务流程。2007 年,WS-BPEL 2.0 被批准为标准语言。作为一种执行语言,WS-BPEL 定义了如何表示业务流程中的活动,以及流控制逻辑、数据、消息相关性和异常处理等。
IBM 的 WebSphere Process Server(以下称为 Process Server)包括业务流编排器(即基于 WS-BPEL 的流引擎)。上一版本称为 WebSphere Business Integration Server Foundation,该版本也包括 WS-BPEL 支持。
业务规则:集成的规则引擎允许创建和评估业务规则,而不是将决策硬编码到业务流程。授权用户可以使用 Web 浏览器更新该规则。管理员可以激活更新,并将其导出,因此开发环境可以与运行时保持同步。
集成 ESB:Process Server 包括完整的 WebSphere ESB 产品。在本文中,我们只介绍 Process Server 的 BPEL 引擎组件。
SCA:Process Server 中的服务调用是使用服务组件体系结构 (SCA) 规范完成的。SCA 接口映射可用于调用其接口与调用组件不同的服务。接口映射也支持高级功能(如关系)。如果系统 A 使用“123”作为客户标识符,而系统 B 使用“ABC”作为客户标识符,则在这两个系统之间转换时,您可以使用关系建立“123”到“ABC”的中介,反之亦然。
决定使用哪一个运行时
正如前面所提到的,Process Server 和 ESB 之间存在一些功能重叠。二者都可以与适配器一起工作。二者都可以转换数据。二者都支持组合服务模式。当面临使用最佳软件解决给定的业务问题时,您需要决定使用哪一个。
某个选项提供独特的功能吗?某个环境中的独特功能可能会促进您的决策。例如,您可以在 ESB 中执行映射,也可以通过 Process Server 中的接口映射来执行映射。但是,只有 Process Server 中的接口映射可以提供关系映射。如果您需要此功能,则只有 Process Server 可以提供。
当 Process Server 和 ESB 可能都是理想的备选项时,非功能性需求通常可以缩小选择范围。
模式
电子商务模式是一组经过验证的可重用资产,可使用这些模式帮助您加速开发和部署电子商务应用程序。IBM 发布了一系列描述模式用法和各种技术的红皮书,如 Patterns:SOA Design Using WebSphere Message Broker and WebSphere ESB。
维护的另一个方面是,随着中间件产品的发展,将来升级解决方案的难易程度如何。通常,新的主要版本能够使用以前版本中的构件。WebSphere Process Server V6 的工具 WebSphere Integration Developer 可以从WebSphere Business Integration Server Foundation V5.1 导入集成项目,并使用以前项目作为起点。WS-BPEL 流程中的逻辑将转移到新环境。不过,您可能需要在流程中执行一些手动操作才能更新 Java? 代码。在大多数情况下,使用软件产品的内置功能可以使将来的升级途径更容易一些。
可重用性
为 SOA 构造任何资产时,您应该知道如何促进该资产的重用。在创建某项资产时,您可以用它解决某个业务问题。但是,如果可以重用该资产,则可以大大节省开发时间和成本。