Lotus Notes与关系型数据库的集成

2012-04-02 18:26:07夏英杰
大众科技 2012年8期
关键词:表单字段结构化

夏英杰

(华中光电技术研究所-武汉光电国家实验室,湖北 武汉 430073)

Lotus Notes与关系型数据库的集成

夏英杰

(华中光电技术研究所-武汉光电国家实验室,湖北 武汉 430073)

随着信息化程度的不断提高,企业内部的信息系统越来越多,信息系统间需要进行数据的互操作。文章先对两种数据库进行了比较,然后介绍了Lotus Notes与关系型数据库数据交换的几种工具,并用LotusScript实现了Lotus Notes对Oracle数据库的数据读取、写入。

文档数据库;关系型数据库;Lotus Notes;Domino

1 引言

Lotus Notes以其先进的电子邮件体系、工作流自动化开发、标准的Web应用服务器三大优势而得以在办公自动化、协同工作环境、企业信息集成和知识管理中广泛应用,目前已成为群组工作软件的标准,是当今开发办公自动化系统的理想平台和工具。而企业生产、经营等所产生的信息多属于相对专业的数据信息,一般用关系型数据库存储,如Sql Server、Oracle、Sybase、DB2等,考虑到办公自动化系统与企业管理信息系统(MIS)的密切关系,经常会有Lotus Notes与关系型数据库进行共享数据的要求。

2 Lotus Notes和关系型数据库的比较

企业在生产经营和管理活动过程中产生的信息,主要分为数据信息和文档信息两大类。从信息组织和管理角度,这两类信息分别属于结构化信息和非结构化信息,需要不同的数据库机制才能进行高效地管理。结构化信息是指经过严格标引过的信息,一般以二维表的形式存在,数据间具有一定关联性;非结构化信息是指文字、网页、图表,音视频多媒体信息等各种看似相关性比较弱的信息。

Lotus Notes主要应用在人与人、人与企业、企业与企业之间起协调作用,能管理大型、跨地域的企业,属于典型的文档数据库,主要处理非结构化信息,文档是其处理信息的基本单位。Lotus Notes中的文档是无规则的,各字段之间可以没有关系,每个字段并没有很详细的规定,这使系统具有较好的系统可伸缩性和扩展性;而且系统提供了强大的安全和权限及工作流管理机制,开发周期短,很容易与Web应用结合在一起;其缺点是处理结构化数据能力弱,不擅长数据的计算、分析和统计,运行效率相对较低。

关系型数据库将实体-关系抽象成二维结构化的数据结构,具有数据结构化、最低冗余度、在统计分析和基于数据的联机事务处理等方面的能力强、访问数据速度快、数据容量大等优点。不足之处,关系型数据库要求每一个字段是什么类型,精度是多少,非常详细,使系统的可伸缩性和可扩展性比较差;关系型数据库对通讯手段、广域网支持不够;系统的安全和权限以及工作流管理由开发者在关系型数据库外实现,开发工作量大。近几年来,电子商务系统和办公自动化系统飞速发展,对于信息的存储和传输提出了新的要求,而关系型数据库管理系统对其中的多媒体信息的检索、识别和深加工上则有些局限性。

当然,Lotus Notes和关系型数据库存在相似点,这使得他们之间的数据共享成为可能。主要相似点:

(1)Lotus Notes的数据是以文档的形式存放的,关系型数据库的数据是以记录的形式存放,Lotus Notes的一个文档相当于关系型数据库的一条记录。

(2)Lotus Notes表单中的域相当于关系型数据库中的字段,Lotus Notes中的表单相当于关系型数据库中的表。

应该说Lotus Notes和关系型数据库各有优缺点和相似之处,在实际的应用当中,要充分发挥文档数据库管理非结构化数据的优势和关系型数据库管理结构化数据的优势,将两者集成结合起来。

3 Lotus Notes和关系型数据库的集成工具

现有的集成工具主要有以下几种:

(1)Notes Pump:可实现Notes数据库与RDBMS(关系型数据库管理系统)之间高效、快速、可伸缩的批量数据交换。它由两部分组成:服务器和管理数据库。管理数据库包括Notes Pump管理员,一个用来存放服务器执行的指定任务的Domino数据库;以及Notes Pump日志,记录Notes Pump服务器处理结果的Domino数据库。

(2)LEI(lotus enterprise integrator):在基于Web的竞争环境中,具备将业务数据快速转换为 Web上可以使用的信息的能力是成功的必要条件。LEI是一个高性能、企业级的解决方案。LEI包括一个服务器、一个管理工具和一个服务器日志。它提供了集中的、基于服务器的方法管理数据访问。

(3)DECS (domino enterprise connect services):提供了一个从Domino应用到外部数据的深层次集成的、方便使用的、基于表单的接口。它使开发人员拥有了一个不用编程的、模板化的应用环境。用户可以采用DECS技术从后端系统实时地将信息加入到Domino应用中。DECS在Domino应用和企业系统数据之间提供无缝的实时集成,允许用户在Domino对象存储器或者诸如关系数据库的其他系统中存储应用数据。

(4)ESB(enterprise solution builder):是一个集成的开发和实时运行环境,允许Lotus Domino应用以交互形式直接访问企业的关键业务数据。作为现有Domino集成技术的补充,ESB特别适合对后端操作系统和信息丰富的应用进行高性能访问。

(5)NotesSQL: 从RDBMS访问及查询Domino的工具,是Lotus Notes的ODBC在Windows的驱动程序,它使得ODBC兼容的 RDBMS和数据查询工具能够访问、查询和报告基于Domino的信息。从而使应用开发人员具有了从外部的RDBMS应用访问Domino数据存储的方法和利用存储在Domino中的数据的价值的查询工具。

每一种工具都是为某一种目的所设计的,所以在不同的方面,各有优缺点,应当根据不同的应用,不同的系统要求,选择不同的集成方法和工具。必须指出,这些工具对平台选择有一定要求,而且需单独购买,价格昂贵。

4 应用实例

考虑到现有集成工具价格、兼容性、功能是否完善灵活等因素,采取自主开发通信接口的方法,即采用LotusScript通过 ODBC(LS:DO)实现对关系型数据库的实时访问,通用性强,编程灵活,可移植性强,无需再购买其他工具。并可与现有系统紧密结合集成,对用户应用完全透明,方便用户使用。

下面以关系型数据库 Oracle为例,介绍主要的实现方法与步骤。

(1)在Oracle建表test,表中有5个字段:编号(no)、姓名(name)、性别(sex)、所属部门(department)、电话(phone)。能对数据库操作的用户名为aaa,口令bbb,权限为dba(超级);在操作系统的控制面板中建立对应数据源,名称为mytest。

(2)在Lotus Notes中建立数据库ODBC.nsf,在其中新建对应表单 connect, 在表单中新建 5个字段:编号(ItemNo)、姓名(ItemName)、性别(ItemSex)、所属部门(ItemDepartment)、电话(ItemPhone);新建两个按钮:ReadIn和modify。

(3)在按钮对象所在表单的(OPTION)事件中输入:USELSX″*lsxodbc″//指明了要加

载的LS:DO的dll库

LS:DO由三个类组成:

ODBCCONNECTION类:通过它可以建一个到关系型数据库的ODBC连接。允许访问关系型数据库的的目录信息,如数据源的列表、表格列表、程序列表等。

ODBCQUERY类:用于保留在其中建立了连接的ODBCCONNECTION对象,以及用来进行查询的SQL的语句。可以在应用程序中使用ODBC驱动程序对SQL语句进行语法分析。

ODBCRESULTSET类:它有许多函数,用于处理根据SQL语句从关系型数据库中得到的数据集。而结果集中保存了ODBCQuery对象中指定的SQL查询的检索记录。

这些类库带有完备的功能强大的一系列函数、程序和全部的SQL功能。

(4)在ReadIn按钮对象的CLICK事件中输入如下脚本:

//从Oracle数据库读取数据到Lotus Notes

Sub Click(Source As Button)

Dim session As New Notessession

Dim db As NotesDatabase

Dim doc As notesdocument

Set db = session.currentdatabase

Set doc = New notesdocument(db)

Doc.form = “connect”

Dim con As New ODBCConnection

Dim qry As New ODBCQuery

Dim result As New ODBCResultSet

con.ConnectTo(mytest,aaa, bbb)

Set qry.Connection=con

qry.SQL=“select * from test”

Set result.query=qry

//执行 SQL语句

Call result.Execute()

//获得表单的记录数

maxrow = result.MaxRows

//定位第一条记录

Call result.FirstRow

Do

//odbcResultSet.GetValue(字段名,被赋值的变量名)

Call result.GetValue(“no”,doc.ItemNo)

Call result.GetValue(“name”,doc.ItemName)

Call result.GetValue(“sex”, doc.ItemSex)

Call result.GetValue(“department”,doc.ItemDepartment)

Call result.GetValue(“phone”, doc.ItemPhone)

Call doc.save(true,true)

Set db = session.currentdatabase

Set doc = New notesdocument(db)

Doc.form = “connect”

Call result.nextrow()

Loop While maxrow

//如果搜索到最后条记录,退出循环

result.CurrentRow

result.Close(DB_CLOSE)

con.DisConnect

End Sub

(5)在modify按钮对象的CLICK事件中输入如下脚本:

//从Lotus Notes写入数据到Oracle数据库

Sub Click(Source As Button)

Dim session As New Notessession

Dim db As NotesDatabase

Dim docs As NotesDocumentCollection

Dim doc As notesdocument

Set db = session.currentdatabase

………………………………………………………………

//创建、实例化ODBCConnection对象

Dim con As New ODBCConnection

//创建、实例化ODBCQuery对象

Dim qry As New ODBCQuery

//创建、实例化ODBCResultSet对象

Dim result As New ODBCResultSet

//mytest是数据源名,aaa是登录名 bbb是口令

con.ConnectTo(mytest,aaa, bbb)

//指定qry对象的连接

Set qry.Connection=con

qry.SQL=“select * from test”

//指定Setresult对象的SQL语句

Set result.query=qry

//执行 SQL语句

Call result.Execute()

For j=1 To docs.count

Setdoc=docs.getNthDocument(j)

Call result.LastRow()

result.addRow

//odbcResult.SetValue(字段名,字段值)

Call result.setValue(“no”,doc.ItemNo(0))

Call result.setValue(“Name”,doc.ItemName(0))

Call result.setValue(“Sex”,doc.ItemSex(0))

Call

result.setValue(“department”,doc.ItemDepartment(0))

Call result.setValue(“phone”,doc.ItemPhone(0))

//将增加的记录更新到数据库文件中

result.UpdateRow

Next

//关闭数据集result

result.Close(DB_CLOSE)

//断开与数据源的连接

con.DisConnect

End Sub

当然除了这些操作之外, Lotus Notes还可以对关系型数据库进行其它操作,只需用相应的SQL语句即可,可以用CreateTable来创建表,用Insert、Delete 、Update来更新表的内容。

5 结束语

文档数据库和关系型数据库相连接具有广泛的应用前景,能够将多媒体数据、文档数据、结构化数据有机地结合在一起,充分有效地利用企业现有的信息资源。

[1] 武坤.中文 Lotus Domino/Notes R7 应用教程[M].北京:机械工业出版社,2007.

[2] 武坤.中文Lotus Domino/Notes R7应用开发指南[M].北京:机械工业出版社,2008.

[3](美)朗尼.Oracle 9i 参考手册[M].北京:机械工业出版社,2003.

Integration of Lotus Notes with Relational DataBase

As information industry advances,more and more internal information of interpreter needs to be processed,and data exchang between different information systems is also demanded.In this paper,tow kinds of DataBases are compared,followed by introduction of several tools for data exchang between Lotus Notes and the relational DataBases.LotusScript is used for reading and writing of Oracle base data in Lotus Notes.

file DataBase;Relational DataBase;Lotus Notes;Domino

TP311

A

1008-1151(2012)03-0027-03

2012-01-28

夏英杰(1980-),湖北咸宁人,华中光电技术研究所-武汉光电国家实验室助理工程师。

猜你喜欢
表单字段结构化
图书馆中文图书编目外包数据质量控制分析
电子表单系统应用分析
华东科技(2021年9期)2021-09-23 02:15:24
促进知识结构化的主题式复习初探
结构化面试方法在研究生复试中的应用
计算机教育(2020年5期)2020-07-24 08:53:00
浅谈网页制作中表单的教学
基于图模型的通用半结构化数据检索
计算机工程(2015年8期)2015-07-03 12:20:35
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述
基于软信息的结构化转换
基于软信息的结构化转换