级别: 初级 Naga Ayachitula (Arun) (nagaaka@us.ibm.com), 高级软件工程师, IBM Michael S. Schwartz (miss@us.ibm.com), 高级软件工程师, IBM
2004 年 5 月 01 日 通过 DB2 Records Manager(IRM)可将电子记录快速而容易地嵌入主机商业应用程序中,IRM 是用 J2EE 平台无关的语言重写的。本文描述了 IRM 的体系结构,以便可以使您的商业应用程序完成所需的工作。
简介
本文描述了 IBM® DB2® Records Manager V 3.1(IRM)产品的体系结构。我们描述了 IRM 的各种组件,并讨论了引擎的体系结构和设计,Web
管理员应用程序,以及诸如会话外观(Session FaÇade)和 Struts 实现的 J2EE
TM
设计模式。我们还详细介绍了如何通过逻辑扩展来扩展记录管理器 API。最后还提供了主机接口的实现机制。
IBM DB2 Records Manager V3.1 概述
IBM DB2 Records Manager(IRM)是一种为商业应用软件提供生命周期管理的电子记录(e-Record)技术。DB2 Records
Manager 符合美国国防部的电子记录管理 5015.2 标准。DB2 Records Manager 是独一无二的,因为它是通过一个引擎,而非一个应用程序来执行生命周期管理的。DB2
Records Manager 是为与商业应用软件进行集成而设计的。IRM 具有一个独特的引擎设计,且最适用于嵌入式解决方案。IRM 被视为轻量级的解决方案,因为该引擎的主要作用只是为了提供生命周期管理的保存。组织可以使用单个
DB2 Records Manager 系统来支持多个业务流水线的应用程序。因为 DB2 Records Manager 是作为一种引擎技术而提供的,所以合作伙伴将维护对于该集成的完整控制。合作伙伴可以决定需要将多少内容包含在他们自己的应用程序中,以及以何种方式进行。IBM
DB2 Records Manager 重新设计的体系结构提供了跨平台支持和可伸缩性。该引擎支持 JAVA
TM Internet
Inter-ORB Protocol(IIOP)、远程方法调用(Remote Method Invocation,RMI)、简单对象访问协议(Simple
Object Access Protocol,SOAP)和 Web 服务。IRM 使用标准化的 Java2 Enterprise Edition
设计模式。
系统组件
DB2 Records Manager 包含以下部分:
- DBMS 存储过程逻辑。
- 引擎。
- API。
- 基于 Web 的管理员用户接口。
一共有 200 多个已编译的包含了业务逻辑的存储过程。Web 客户机可用作这些存储过程,还可以对它进行修改以提供一个更加定制的外观,甚至可以用一个定制构建的应用程序来代替
Web 客户机,这种应用程序按自己方式使用 DB2 Records Manager API。解决方案的构建方法完全取决于主机应用程序的需求。
Records Manager V3.1 完全是用 J2EE(v1.3)这种平台无关的语言重写的。服务器是用 Enterprise Java
Beans(EJB)、Java Messaging Service(JMS)以及用于后台数据库通信的 JDBC 来编写的。Records Administrator
Client 组件则是用 JSP、Servlet、Java 类以及 Struts 构架技术重写的。
通过使用 Struts 配置文件重定向控制流,Web 客户机的定制变得更容易 ,且无需修改源代码。
业务流程通常可以分为“不可中断的”和“可中断的”两种类型。不可中断业务流程的特性是:运行时间短,完成单个事务,在单个线程中运行,同步执行,客户机可以等待业务流程完成,以及在整个执行期间不维护其状态。可中断的业务流程通常长时间运行,消费多个事务,可完全向前恢复,异步执行,以及在整个执行期间要维护其状态。DB2
Records Manager 中异步的体系结构是通过 Java Messaging Service(JMS)来支持的。已经进行了大量更新并重新设计了生命周期处理,用以通过
JMS 来获得较少的开销、更好的可靠性、事务支持和可伸缩性。JMS 在群集环境中自动提供内置的故障转移。对于简单操作,通过使用 SQL 准备语句减少了对存储过程的依赖性。这将带来更好的可维护性和性能。IRM
支持 Unicode 数据,并且使用 Java 资源文件(属性文件)来进行定位。客户机可以使用 IIOP/RMI 协议或 SOAP 协议与
Records Manager 引擎进行通信。
图 1. 体系结构详图
引擎/API
IRM 引擎是一种 OEM 技术,并且是为嵌入在主机应用程序中而设计的。IRM 引擎不与合作伙伴和其他产品竞争,因为该引擎使用其他产品作为主机应用程序。该引擎百分之百是通过
API 来提供的。XML 广泛用于格式化传递给大多数 API 方法的参数。IRM 中所使用的 XML 参数符合通用的 XML 模式。IRM
使用 Web 服务 API 来与应用程序进行通信,而不管使用何种平台或技术。XML Web 服务提供了一种方法来详细地描述其接口,从而允许用户构建客户机应用程序与之进行对话。J2EE
连接器体系结构(Connector Architecture,J2CA)是一种标准的体系结构,用于集成兼容 J2EE 的应用服务器和企业信息系统。IRM
使用 J2CA 和 DAO(Data Access Object)进行数据访问,因为它支持安全、事务和连接管理之间的紧密耦合集成。J2CA
采用集中式模型 ,并且只能存在于应用服务器的容器内。一个 DAO 表示一个数据源;它隐藏了连接底层数据源的复杂性,并且抽象出了到一个数据源的所有访问。
图 2. J2EE 连接器体系结构
会话外观
在多层应用程序中,分布式服务客户机被其服务器端组件弄得十分复杂,这些组件封装了重要的业务逻辑和数据。应用程序客户机需要访问业务对象来履行其职责,从而满足用户的需求。客户机可以直接与这些业务对象进行交互,因为它们提供了接口,但是当将业务对象提供给客户机时,该客户机必须理解和负责业务数据对象关系,并且能够处理业务处理流程。但是,客户机和业务对象之间的直接交互将导致两者间的紧密耦合,而这种紧密耦合使得客户机直接依赖业务对象的实现。直接依赖意味着客户机必须表示和实现关于查找和创建业务对象的复杂事务,并且必须管理参与的业务对象之间的关系,以及理解事务划分的责任。随着客户机需求的增加,不同业务对象之间交互的复杂性也会增加。为了满足这些需求,客户机变得更大、更复杂。客户机变得极易受到业务对象层中变动的影响,并且,客户机还不必要地受到了系统底层复杂性的影响。
DB2 Records Manager 使用会话外观(session facade)策略来解决以上问题。一个会话 bean 可用作一个外观,用于封装工作流程中参与的业务对象之间的交互复杂性。会话外观管理业务对象,并且向客户机提供统一的、粗粒度的服务访问层。会话外观抽象出底层的业务对象交互,并且提供一个服务层,仅公开所需的接口。因此,它对客户机隐藏了参与者之间的复杂交互。
图 3. 会话外观
会话外观管理业务数据和参与工作流程的服务对象之间的交互,它封装了与需求相关的业务逻辑。因此,会话 bean(代表会话外观)管理业务对象之间的关系。当工作流程需要时,会话
bean 还通过创建、定位(查找)、修改和删除这些参与者的生命周期来管理它们。在一个复杂的应用程序中,会话外观可以将生命周期的管理委托给单个对象。例如,要管理参与会话和实体
bean 的生命周期,会话外观可以将该工作委托给一个 Service Locator 对象。
图 4. Records Manager 中 J2EE 模式的协作
DB2 Records Manager 用例是会话式的,所以,单个用例需要多个方法调用来完成。在每个客户机方法调用之间必须保存会话状态。本场景中,状态会话
bean 可能是一种更适合实现会话外观的方法。会话 bean 通常提供业务服务,在某些情形下,它还可能提供业务数据。当这样一个会话 bean
需要访问数据时,它可以使用数据访问对象来操纵该数据。会话外观可以包装一个或更多这样的服务或面向数据的会话 bean 来充当业务对象。
IBM Records Manager 利用服务器会话状态(Server Session State)策略。它使用一个状态会话企业 Java
bean 来保存会话状态。状态会话 bean 对于特定的客户机是惟一的。在状态会话 bean 中,实例变量表示惟一的客户机 bean 会话的状态。在整个客户机
bean 会话期间,要保留其状态。客户机删除该 bean 后,该会话便结束。而其状态则会消失。IRM 维护 API 中所有业务类的状态。但是,其主机接口实现状态的维护就是主机应用程序的责任了。当
IBM DB2 Records Manager 创建一个主机接口时,它就会将某些状态信息传递给主机应用程序。
图 5. Records Manager 会话外观组件
- LoginManagerEJB 接口用于登录 IBM DB2 Records Manager 和获得 ClientControllerEJB
远程接口。该接口表示 IBM DB2 Records Manager 中的用户、组和角色。
- Batch Controller 包含用于管理异步进程的方法。
- Client Controller 负责将远程接口分配给所有其他控制器(controller)接口。
- Definition Controller 接口包含用于管理属性和组件定义的方法。
- FilePlanComponentControllerEJB 接口定义了文件计划(file plan)组件。文件计划组件表示 IBM
DB2 Records Manager 所管理的物理实体或概念性实体,并且为记录管理操作奠定基础。
- LifeCycleDesignControllerEJB 接口包含用于管理生命周期的挂起、处理授权、生命周期代码和生命周期阶段的方法。
- QueryControllerEJB 接口用于管理存储查询和报表布局。
用于 API 可扩展性的逻辑扩展
IRM 逻辑扩展(Logic Extension)通过修改 IRM 业务对象的行为(文件计划组件方法),允许主机应用程序和应用程序开发人员扩展业务逻辑。这为业务建模提供了极大的灵活性。一个逻辑扩展具有两个组件:before-action
事件和 after-action 事件。DB2 Records Manager 对要进行修改的每个业务对象使用一个简单的侦听器模式。该模式需要
Pre Action 和 Post Action 定制逻辑扩展。要将定制逻辑扩展(Custom Logic Extension)添加到逻辑路径的首尾。逻辑扩展中所包含的用于定义的定制逻辑可以被添加到所选中的文件计划组件方法中。一个文件计划可以关联多少逻辑扩展类没有预先规定的限制。每一种类型的文件计划组件可以包含一组惟一的逻辑扩展。例如,对于一个称作“Document”的文件计划组件,人们可以修改仅应用于该类组件(“Document”)的文件计划组件方法的行为。如果创建了另一类称作“Folder”的组件,那么,就可以为组件“Folder”创建一组完全不同的逻辑扩展。
图 6. 逻辑扩展组件
逻辑扩展可以用于接收和修改传递给文件计划组件方法的数据,或者将该数据传递给后续方法,执行主机相关函数,或者回叫 Records Manager
接收或修改数据。
图 7. 一系列逻辑扩展中的逻辑流程
逻辑扩展是通过使用 ToolsControllerEJB 扩展方法添加到 IRM 中,这些方法允许选择要向该扩展添加的组件类型,您希望为哪些方法添加扩展,以及您希望以何种次序应用这些扩展。开发人员通过实现
FilePlanComponentListener 接口来创建逻辑扩展。所实现的每个扩展(Extension)方法都具有一个 EventObject
参数,该参数封装了传递对象集合的 HashMap。这些对象集合组成了一些参数,可以读取或修改这些参数,以重新定义调用该扩展的文件计划组件方法的业务逻辑。
实现主机接口
要将 IRM 引擎嵌入到一个或更多生成和存储记录的商业应用程序中,这些应用程序就充当了它的“主机(host)”。这些主机应用程序使用双向接口调用与
IRM 引擎进行交互。调用 IRM 的主机应用程序使用一组包含在 Java 库中的类。该引擎同样也向主机发出调用。主机应用程序可以执行所有的管理函数,例如管理文件计划,管理用户,管理组,以及执行诸如生命周期管理操作等的记录管理函数。或者,您也可以只将那些进行记录收集和注册时需要的函数嵌入到主机应用程序中,而将文件计划的管理留给由
IRM 提供的用户接口。
每个主机应用程序都必须实现接口“HostInterface”。它包含 11 个方法调用。这些调用包括删除或销毁记录,访问,通知主机应用程序该记录正从其生命周期中的一个阶段转变到另一个阶段,要求主机注销指定记录,因为
IRM 中其相应的实体已被删除,等等。Records Manager 通过“HostInterface”传递数据和接收来自主机应用程序的数据,而与主机应用程序进行通信。实现了主机库中定义的主机接口之后,应该向
IRM 注册该主机接口。如果 IRM 的主机应用程序具有用户和组的概念,而这些用户和组必须登录到该应用程序中,就可以将这些用户和组导入 Records
Manager,以便为所导入的用户分配必要的权限和访问许可。onUpdate 方法将更新主机记录。每当发生一个可能潜在地更改主机记录上权限的事件时(在组中添加或删除用户),就会调用
onPermissionsUpdate 方法。
结束语
IBM DB2 Records Manager V3.1 完全是用 J2EE(v1.3)平台无关的语言重写的。通过 J2EE 模式,该产品被设计得非常好。体系结构的增强包括提高网络效率的粗粒度外观对象,先进的数据访问层缓存,服务器会话状态策略等。它可以连接现有的实际记录应用程序,并且可被集成,以便快速且容易地将电子记录嵌入到主机商业应用程序中。DB2
Records Manager 可以适用于本地化的记录管理方法和实践,因为各个国家和行业中的业务流程是不同的。
作者简介  | |  | Naga Ayachitula (Arun) 是纽约霍桑市 IBM T.J. Watson Research Center 的高级软件工程师。Arun
拥有计算机科学硕士学位。Arun 参与了媒体业的企业内容管理、记录管理和智能视频监视解决方案的开发。可以通过
nagaaka@us.ibm.com
与 Arun 联系。
|
 | |  | Michael S. Schwartz 是纽约霍桑市 IBM T.J. Watson Research Center 的高级软件工程师。Michael
拥有数学博士学位。他的研究方向包括数据库系统、决策支持系统、多媒体系统和财务系统。可以通过
miss@us.ibm.com
与他联系。
|
对本文的评价
|