文章
体系结构:SOA
|
||||||||||||||||||||||||||||||||||
背景Oracle ESB 具有使其适用于其任务的关键功能。首先,它可利用多种方法检索消息(事件通知):通过 JMS、Web 服务调用、文件系统或数据库表等等。它还可提取带有与事件相关数据的消息并对其进行转换,通常是将其转变为一种更通用、更规范的企业模型。 ESB 还可以将一个粗粒度事件消息转换为多个细粒度消息。例如,它可以在新用户已经注册并下了第一个订单时,通过从基于 Web 的客户订单系统接收的消息创建一个新客户事件以及新订单事件。在将原始消息转换为一个或多个更规范、可能更具针对性的消息时,ESB 还可以丰富消息的内容(例如,通过添加当前日期和时间戳信息或添加从参考数据源查找的信息),多个事件用户可能会有此要求。 最后,根据事件(消息的内容)的特性,ESB 可将内容经过扩充的已转换消息提供给多个输出通道,例如 Web 服务、JMS、数据库过程或表、文件或者电子邮件。 (注意:BPEL 流程就是事件报告程序的一个主要示例。执行 BPEL 流程时,在几个阶段中和在一些情况下,可以发布事件,通常是以在 ESB 中调用 Web 服务的形式进行。) 有几种方法可以帮助对事件感兴趣的相关方使用来自 ESB 的消息:
在大多数情况下,第二种方法可能是最好的。注意,从 ESB 服务实例调用以通知感兴趣各方的目标服务可以并行调用也可以顺序调用(取适用的方式) 利用 Oracle ESB 开发 ESB 服务可以在 Oracle ESB(Oracle 融合中间件中 Web 服务基础架构的 ESB 组件)中按如下方式创建该方法的简单演示。 该案例中的业务事件是聘用新员工。当新员工签订合同后,该事件将发布到 ESB。该事件消息包含姓名、年龄、性别、职务以及入职日。有多方对该事件感兴趣:
使用 Oracle ESB 实现该简单的业务事件服务,如下所示:
通过人力资源部门(为此目的调用 ESB Web 服务)发布(“即发即弃”)业务事件 NewEmployee。ESB 服务使用该事件并执行三个也执行一些转换的路由规则:
部署该服务时,为发布新员工事件而对 NewEmployee ESB Web 服务的任何调用都会触发两个或三个(针对 40 岁以下的新管理层员工)目标服务。该体系结构的关键是将事件发布方(人力资源部门)与事件使用方完全分离,这样添加新用户不会对该部门有任何影响。新员工事件中的更改基本上可以在 Router Service 中得到解决,无需影响事件使用方。 要开发针对该事件的 ESB 服务,您需要完成以下步骤:
初始设置您首先需要做一些准备,然后才能开始实现 EDA。具体来说,您需要使用 DDL 脚本在数据库中创建一个表,将文件复制到您文件系统上可供 JDeveloper 访问的目录,并将一个很小的简单 BPEL 项目部署到您的 SOA 套件实例。 下面是设置步骤:
创建 JDeveloper 应用程序在 JDeveloper 中,创建一个名为 EventDrivenArchitecture 的新应用程序。如果 JDeveloper 要为您创建一个默认项目,按 Cancel。
|