搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程

EMALL:构建集成应用程序

作者:Ashley Byrd, Girish Gupte

  EMALL是美国国防部(U.S. Department of Defense)的采购门户网站。国防部和联邦工作人员使用它来进行采购,采购物品的范围从办公室用品和设备到武器系统。这些工作人员拥有不同级别的权限来访问分类目录和下订单。
  他们通过一个Web应用程序创建“购物车”并提交他们的订单。EMALL通过一个具有复杂验证规则的规则引擎来处理这些订单。在验证订单之后,EMALL会给供应商的系统发送正式请求。然后,各种已授权用户都可以跟踪这些订单。
  数以百计的厂商围绕这项业务展开竞争。他们拥有数量巨大的库存,其SKU号有好几百万个。他们的系统需要能够接受这些来自EMALL的请求,然后发回订单的状态。处理一份订单需要的时间可能是数毫秒,也可能是好几个月。EMALL处理已分类的和敏感的信息,以及大型的事务。它需要与几个地理上是分开的,并且是基于各种分布式体系结构和数据通信技术的系统进行集成。



选择体系结构
  EMALL项目面临着一些有趣的挑战。我们需要系统具有如下特点:

  • 高度安全、健壮、可靠和可伸缩。
  • 基于各种技术的集成子系统。
  • 使用复杂的执行路径处理长期事务。

  考虑到这些挑战,我们给出了下列方法:

  • 大量使用XML作为子系统之间的数据格式。
  • 在HTTPS协议之上使用ebXML在子系统之间进行传输。
  • 各种子系统实现的总体解耦合。
  • 对长期事务使用工作流式样的异步处理。
  • 对于包括规则引擎在内的EMALL核心组件使用J2EE。
  • 使用SOAP、ebXML和Web服务与外部系统交互。

  使用ebXML作为EMALL子系统之间的通信模式是我们成功的关键所在。它提供了重要的安全性和可靠性功能,包括:

  • 通过使用HTTPS提供传输层的安全性。
  • 通过使用数字签名保护消息不被篡改来提供消息层的安全性。
  • 支持认可(nonrepudiation),包括消息的来源和消息的接收者。
  • 通过提供“有且仅有一次(once-and-only-once)”的服务质量提供可靠的消息传送。

选择BEA WebLogic Platform 8.1
  EMALL项目涉及到高度的复杂性和严格的安全性及可靠性要求,还有非常短的期限。选择正确的技术是成功的关键。经过仔细考虑之后,我们选择了BEA WebLogic Integration 8.1。影响我们选择的重要因素有:

  • BEA WebLogic Integration 8.1构建在BEA WebLogic Server/J2EE技术之上,经过了实践的检验,该技术是高度稳定、可伸缩和安全的。
  • 它支持长期的业务流程或工作流。
  • 它支持ebXML规范2.0和1.0。
  • 它轻松地把传统的EJB组件与业务流程及Web服务集成在一起。
  • 它包括一个功能强大的IDE——BEA WebLogic Workshop,支持快速开发。
    Workshop提供一个易于使用的界面,可构建要被部署到BEA WebLogic Server中的、与J2EE兼容的组件。

  让我们看一看如何利用这个平台来构建EMALL(参见图1)。

图1 平台工作方式

配置贸易伙伴
  BEA WebLogic Integration 8.1包括一个基于Web的管理控制台,它允许我们为每个参与到EMALL中的实体配置贸易伙伴关系。Trading Partner Porfile包括业务实体的身份、与实体相关的数字证书,以及该实体支持的ebXML绑定。ebXML绑定包括传送语义(比如,有且仅有一次)、一个传输协议(比如HTTPS)和URL端点。这些贸易伙伴提供由服务配置文件定义的特定服务。

  在我们的原型中,我们定义了三种贸易伙伴:

  • WEB_UI: 代表最终用户用来提交和跟踪订单的Microsoft .NET Web应用程序。
  • ICF: 验证订单并将正式请求发送给厂商。这个规则引擎是用BEA WebLogic Platform 8.1开发的。我们在Workshop中创建了一个"Application" icfApp 来代表这个功能。
  • VENDOR: 代表参与EMALL的厂商之一。

开发ebXML参与者流程/工作流
  在icfApp中,我们创建了一个“Project” icfAppWeb。我们为ICF实体提供给其他贸易伙伴的每项服务都创建了一个ebXML参与者流程。BEA WebLogic Workshop允许我们开发可以被外部贸易伙伴通过ebXML消息调用的业务流程。Workshop为处理ebXML协议生成所有必需的传输层组件。开发人员需要担心的只有应用程序数据。Workshop允许我们定义每个业务流程的输入和输出。它为每个流程创建一个带有额外注解的Java文件(扩展名为.JPD)。开发人员可以把任意业务逻辑放在JPD中,包括调用EJB、发送消息给MB-Broker频道或JMS目的地、调用子流程等等。当我们在Workshop中构建应用程序时,它创建接受HTTPS请求的传输层组件(比如servlet)、处理ebXML头、从ebXML请求中提取应用程序数据,并把它移交给开发人员的代码。JPD的输出(返回值)被打包到ebXML响应中,并被传输层返回给调用者。
  WEB_UI应用程序基于Microsoft .NET技术,可以通过在贸易伙伴配置中所定义的ebXML绑定调用ebXML参与者JPD流程。
  WebLogic Workshop还允许我们创建其他流程,包括那些可以通过在频道上发送消息或通过Web服务堆栈来调用的流程。我们还可以使用流程控制从一个流程调用另一个流程。"acceptCart.jpd"的真正实现涉及到复杂的业务逻辑,包括XML数据操纵、基于规则的验证、异常处理,等等。与这个JPD相关的各种任务都是同步执行的,必要时异步执行。WebLogic Workshop允许我们在JPD的设计视图中创建流程或工作流、定义事务和轻松实现复杂的业务逻辑。

使用ebXML控件
  运行在ICF系统上的业务流程还需要调用部署在其他贸易伙伴上的ebXML服务。WebLogic Workshop允许我们在JDP文件中使用ebXML控件。ebXML控件是Workshop生成的Java接口。这个接口具有和远程贸易伙伴服务提供的ebXML服务相匹配的方法。当您构建应用程序时,实际的实现类是由Workshop生成的。因此,开发人员不需要和ebXML协议堆栈打交道,而只要通过这个接口调用远程服务即可。ICF应用程序通过这个机制从VENDOR应用程序调用服务。在我们的原型中,我们通过Business-Connect 8.1(一个BEA提供的、支持ebXML的轻量级服务器)对VENDOR应用程序进行了模拟。

处理XML数据
  WEB_UI应用程序以XML格式发送购物车给ICF应用程序中的ebXML流程。我们使用与WebLogic Platform捆绑在一起的XML Spy工具创建了一个XML Schema文件。然后,我们把这个Schema(XSD文件)导入到ICF应用程序中。WebLogic Workshop IDE生成表示XML类型的Java类。每个类都有get/set方法和Factory方法来把Java字符串、文件等解析为XML对象。这些类在JPD文件的代码中是可用的。我们可以把这些类型定义为流程的输入参数或返回值。然后,我们从XML类型中提取这些字段,或者使用XQuery API把它们转换为另一种XML类型。WebLogic Workshop为创建和编辑XQuery表达式(可作为Transformation Control方法提供)提供了一个易于使用的GUI界面。这允许我们快速开发应用程序,而不用编写任何底层代码。

把EJB集成到工作流/流程中去
  通过WebLogic Workshop,我们可以创建调用EJB的EJB控件。这个过程非常直观。
  我们只要把EJB部署到作为WebLogic Integration应用程序宿主的WebLogic Server上,然后启动服务器即可。然后,我们可以从Workshop中选择这些EJB,并创建EJB控件。EJB控件是一个包装了EJB远程和本地接口方法的接口。我们只要在JPD中调用方法即可。Workshop负责创建执行底层任务(比如JNDI查找)的实现类。

端到端的测试
  BEA WebLogic Workshop IDE允许我们快速开发应用程序,将其部署到WebLogic Server上,然后测试我们的代码。集成在IDE中的测试浏览器通过Web服务堆栈调用一个特定的JPD,这允许我们查看和调试我们的代码。我们还可以从测试浏览器复制URL,然后通过一种标准的浏览器(比如Internet Explorer)测试我们的JPD文件。Workshop以一种简单而直观的方式紧密集成了编译、部署、重新部署和执行等步骤。

结束语
  BEA WebLogic Platform 8.1允许我们在大约3周的时间内构建出一个具有严格安全性的任务关键性应用程序。这个平台支持ebXML标准,具有诸如消息级别的安全性、传输安全性和保证传送这样的重要功能。使用该框架,我们可以把Microsoft .NET应用程序与J2EE应用程序集成在一起。

致谢
  我们想要真诚地感谢南卡罗来纳研究机构(South Carolina Research Authority,SCRA)集成解决方案小组的研究与开发主管Bill Freeman博士的大力支持。Freeman博士还是主管SCRA在DOD EMALL方面工作的项目经理。BEA和ICF给SCRA提供工程服务。
  我们还想要感谢来自BEA Engineering团队的Ricardo Valenzuela、Madhavan Rangarao、Dmitry Dimov和Komal Mangtani,他们为我们的目标实现提供了技术支持。

  

相关文章:
© 2006   www.java-asp.net