`

Lotus Domino/Notes Toolkits 综述(注:转)

阅读更多
http://wind-bell.iteye.com/blog/64606  别人的博客。。我是黏过来的

1 概述


1.1 为什么要了解Lotus Toolkits

    在使用Domino/Notes开发企业应用的过程中,不断遇到了Domino要和其他业务系统相结合的问题。Domino是一个比较独特、比较封闭的系统,要作为整个企业的应用整合平台很困难。应当采用一种更通用、更开放的技术来构建这个平台。
     Domino/Notes作为群件系统的典型,它在处理文档信息、协同工作方面有特点,也有优势,而且公司在这个平台上有很多积累。因此,如何在一个开放的平台上,将Domino/Notes应用有机地结合进来,是需要解决的一个重要问题。
     为此,我们需要了解有哪些途径可以从外部得到Domino/Notes系统中的数据、对象,Lotus提供了什么样的接口和工具。这些工具就是Lotus Toolkits。

1.2 有哪些Toolkits

    按Lotus产品系列来分,Lotus提供下列产品的工具包: •Notes/Domino
•Sametime
•QuickPlace
•Discovery Server
•Other

其中,Notes/Domino和Sametime的工具包比较多,C、C++、Java语言的都有,其他产品的则很少。从这个角度,也可以看出文档数据处理、协同工作是Lotus系列产品的核心价值所在。     其中,Notes/Domino的工具包有:
•Lotus C API toolkit
•Lotus C++ API toolkit
•Lotus Domino Toolkit for Java/CORBA
•Lotus and Notes Toolkit for COM
•Lotus Domino Driver for JDBC (简称LDDJ)
•NotesSQL
•Lotus XML Toolkit(简称DXL)
•Custom Tag Converion kit(简称DCT)
•LotusScript Extensions toolkit(简称LSX)




1.3 本文有哪些内容


    本文着重介绍Notes/Domino的部分工具包:
•能用来完成什么样的工作,不能完成什么样的工作
•工作机制
•如何配置和使用
•比较分析如何选择使用这些工具包。






3 Lotus C++ API




3.1 简介


    C++ API是建立在C API的基础上的又一个工具包,两者也比较相似:    
•可以操纵Domino/Notes中的绝大部分数据对象: ◦数据库:创建、拷贝、复制、删除、修改ACL
◦文档:创建、拷贝、删除
◦域:创建、修改、拷贝、删除,对RTF域具有强大的处理功能
◦视图和文件夹的使用
◦可以创建验证者,并能用验证者来注册用户和服务器

•可以用来创建附加的Domino服务任务


主要限制:
     和C API的主要限制也很相似:
•不能修改已有的Domino/Notes软件
•不能直接修改数据库复制历史、用户活动记录等
•不能修改Notes客户端的桌面信息,例如在工作台上增删数据库图标、修改标题



支持的操作系统和编译器




平台

编辑器

备注



MS Windows NT/2000

MS Visual C++ 6.0
IBM VisualAge C++ 3.5

v2.3不支持Borlad C++的编辑器,v2.1支持。



Solaris Sparc

Sun WS





Linux

g++





AIX

IBM PortaPak





AS/400









最新版本
     v2.3,发布于2003.03.10


3.2 开发和使用


    C++ API的开发和使用和C API也很相似,同样需要Notes/Domino软件的支持,同样使用Domino/Notes的安全机制。

对象结构



   除此之外,API还提供了大量公共函数来处理这些对象,并有一些内置的数据类型,例如:LNString、LNText、LNNumber、LNDatetime、LNBOOL、LNCHAR、LNINT等。

程序结构    使用C++ API时,同样需要在使用之前进行Domino/Notes运行环境的初始化和清理,如下图所示:




开发环境
    以使用MS Visual C++ 6.0为例。
    要注意的是C++ API中包含的一些头文件和VC使用的是同名的,例如:
        mq.h, neterr.h, and stats.h
    需要使用C++ API所带的头文件。因此,或者在程序中指定头文件的绝对路径,例如:
        #include "c:\notescpp\include\mq.h"
    或者在VC的环境配置中,将Notes API的include目录列在VC的include目录前面。
    总之,C++ API使用了面向对象的技术,在处理Notes数据对象时,程序的逻辑比较清晰,易于阅读和维护,能以比较高的效率来开发高性能的应用。同时,在C++ API中还可以调用C API,两者结合使用,可以达到更好的效果。



4 Toolkit for Java/CORBA




4.1 功能简介


    这是一个for Java的工具包,能实现对Notes数据库中数据对象的处理,并对数据元素具有一定的处理能力:
•数据处理 ◦文档:新建、拷贝、修改、删除、发送(作为邮件)
◦视图:相当于记录集,可以用于获取文档或视图显示记录
◦域:新建、修改、删除,支持RTF域、附件的处理
◦数据库:新建、拷贝、复制、删除

•ACL控制
•设计元素 ◦可以获取、运行、删除代理
◦可以获取并删除视图、表单(包括字表单)
◦可以创建大纲,并向大纲添加多个条目



    这个工具包命名为Toolkit for Java/CORBA,是因为在处理本地Notes数据库和远程数据库两种不同情况时,使用的技术有所不同。但在程序实现的接口上,两者基本相同,使得相同的代码实现可以适应不同的环境,为开发带来了便利。

最新版本
    v2.1 for R5.0.8,发布于2001.10.02


4.2 支持的Domino对象及结构

    如下图:





4.3 访问本地Notes应用


使用环境
    既然是访问本地Notes应用,无疑是安装了Domino/Notes软件的。此时,需要将notes.jar添加到classpath中(在Domino/Notes运行环境中会自动添加)。
    程序将使用notes.ini来获取当前用户。如果用户启动并且进入Notes客户端,当前用户ID设置为允许Notes外接程序共享标识符口令,则不用再次输入密码。

工作机理
    当从Java程序中使用本地Domino类时,实际上是通过瘦Java层直接访问了Domino后端用C++实现的代码。Java使用JNI机制来访问在动态链接库中的Domino类,Domino的代码被装载入JVM 的进程中。
    从性能角度来看,这是最好的选择:这提供了在Java和C代码间的最快的连接,所有的东西都在同一个内存空间中。
    但是Domino要求对每个线程的初始化和结束做特殊处理(与C/C++ API类似)。
    本地的Domino对象库提供了一个类,lotus.domino.NotesThread来自动的完成这种初始化处理和结束处理。如果使用NotesThread而不是java.lang.Thread来创建一个线程,Domino所需要的init/term调用都自动被执行。同时,NotesThread也是从Thread派生出来的,没有减少任何功能。如果使用NotesThread来创建线程,则需要调用NotesThread类的两个静态方法:sinitThread()和stermThread(),来完成初始化和结束处理。


4.4 访问远程Domino应用


使用环境
    只需要将NCSO.jar添加到客户端的classpath中就可以了,不再需要安装Notes客户端或者Domino。
    需要目标Domino服务器启动HTTP和DIIOP服务。
    在这种情况下,Domino会根据用户所提供的用户名/密码来验证用户身份。

工作机理
    Domino使用CORBA技术来实现Java程序对远程对象的访问。
    在这种情况下,Java程序不再需要在JVM的进程空间中访问任何Domino的C/C++代码,因此不需要做线程初始化和结束处理。因此,可以实例化Session对象、Database对象,使用类似于连接池的技术来重用这些对象,提高访问效率。
    在关闭session对象时,系统将自动关闭session中打开的各种Notes对象,例如数据库、视图、文档等,自动释放内存。在不关闭Session对象的情况下,则要注意随时关闭这些对象(使用recycle方法),否则这些对象所占用的内容不能被自动释放重用,严重时会导致系统崩溃。

    总之,Lotus Toolkit for Java/CORBA使用户可以摆脱对Notes客户端的依赖,自由地访问远程Domino服务器。同时它对Notes数据以外的对象处理能力有限,系统安全性相对较弱,性能上要低于C/C++ API。建议在网络环境比较安全、对数据访问速度要求不是特别高的情况下使用。



5 Lotus Domino Driver for Java




5.1 功能简介

    LDDJ是Type 2类型的JDBC Driver,符合JDBC1.0规范,在jdk1.1.8环境下开发的。它使得开发人员可以通过Java程序像访问关系数据库一样访问Domino/Notes数据库。
    下表是Notes数据库中的对象和关系数据库中对象之间的对照关系。



SQL 对象

Domino/Notes对象



Table

Form或者Universal Relation



Column

Form Field或者View Column



Index

View



View

View




和关系数据库相比,它有如下一些限制:

•字符串最长为15360
•表名最长64个字符
•列名、索引名、视图名最长32个字符
•不支持回滚和两阶段提交
•不支持 BIT,TINYINT,BIGINT
•不支持 BINARY,VARBINARY,即不支持大对象的存取
•不支持Primary Key,Foreign Key,Unique
•不支持存储过程


同时,提供如下特殊的功能:

•列值允许为多值(文本),可以存取,但不能通过JDBC创建这样的列
•对于insert语句,域的缺省值、输入转换、输入校验依然有效
•delete table时,不删除数据
•提供一些内置域,例如NotesID、NotesForm、LastModified等
•读者域对阅读范围的控制依然有效


和其他方式对Notes数据处理相比,又有如下不同:

•不可以插入不在表单定义中的 field
•文档中存在多个同名的域,只处理第一个(按创建先后次序)
•如果视图名和表单名相同,只能访问表对象,无法访问视图对象
•对于RTF域,只能处理文字部分内容,不能处理附件
•单个域内容最多为15360字节

支持平台
    Windows 98,NT 4.0,2000,XP

最新版本
    v1.5,发布于2002.10.11

5.2 开发和使用

使用环境
    LDDJ v1.5支持R5以上版本,可以直接连接远程Domino服务器,需要本地安装Domino/Notes,并且当前用户对远程数据至少具有读者权限。同时还需要将LDDJ包中的JdbcDomino.jar文件加到classpath中,将包中的几个dll文件拷贝到Windows的系统目录下(例如system32)。
    LDDJ和Notes 客户端使用相同的安全机制,使用Notes ID,如果用户启动并且进入Notes客户端,当前用户ID设置为允许Notes外接程序共享标识符口令,则不用再次输入密码。

工作机理
    LDDJ是Type 2的JDBC驱动,因此,本地需要Notes应用支持。其原理图如下:




开发
    使用LDDJ开发应用主要注意两点:
    第一,数据库url的语法。需要在url中指定服务器、数据库路径,设置文本域、富文本域的最大长度等设置。详细用法请看LDDJ的文档。
    第二,为了得到比较好的数据存取效率,需要合理地创建视图。视图建立的方式不同会对会对应用的效率产生极大的影响。

分享到:
评论

相关推荐

    Linux下应用Lotus Domino/Notes 6.0.pdf

    【Linux下应用Lotus Domino/Notes 6.0】 Lotus Domino/Notes 6.0是IBM公司推出的一款针对企业级应用的协作软件平台,它在Linux操作系统上也得到了支持。自R5.0版本开始,IBM就已经为Linux用户提供Lotus Domino/...

    \基于Lotus_Domino/Notes办公自动化系统的设计.pdf

    ### 基于Lotus Domino/Notes办公自动化系统的设计 #### 概述 办公自动化(Office Automation,简称OA)作为现代企业管理与信息技术结合的重要产物,旨在通过计算机技术、通信技术及自动化技术,实现传统手工办公...

    lotus_domino_notes_8.5_安装配置使用手册

    5. 安装步骤:Lotus Domino/Notes 8.5 的安装步骤比较简单,需要选择安装目录、 administrator tools 和 notes。 6. 服务器配置:服务器配置需要注意 server 名、组织名、域名等信息,需要和规划的一样。 7. 创建...

    Lotus Domino/Notes R8/R85 基础

    【Lotus Domino/Notes R8/R85 基础】是IBM Software Group推出的一款集成了邮件服务、协作工具和应用程序开发平台的产品。这个版本带来了许多改进和新特性,旨在提高用户的工作效率和安全性。 首先,Domino作为整体...

    Java和JavaScript在Lotus Domino_Notes5.0开发中的应用.pdf

    Java和JavaScript在Lotus Domino/Notes5.0开发中的应用 Java和JavaScript是两种不同的编程语言,Java是一种静态类型的、面向对象的编程语言,而JavaScript是动态类型的、基于原型的脚本语言。它们在Lotus Domino/...

    Lotus Domino/Note 技术文档

    Lotus Domino/Notes 是由IBM开发的一套企业级协作平台解决方案,它集成了邮件服务、日程安排、文档管理、数据库应用等功能。该系统的核心在于提供了一个安全且高效的信息交流环境,能够支持用户在不同平台上进行数据...

    Domino/Notes Xpage技术 开发实例讲解

    Domino/Notes Xpage技术是IBM开发的一套用于快速开发Web应用的工具和技术,它的设计目的是为了简化Web应用的开发过程,提高开发效率。Xpage提供了丰富的组件,开发者可以根据需要将这些组件拖放到Xpage上,通过配置...

    Domino_Notes调用SQL数据库技术方案研究.pdf

    《Domino_Notes调用SQL数据库技术方案研究》这篇论文主要探讨了如何使用Lotus Domino/Notes系统查询和调用SQL数据库的技术方案。Lotus Domino/Notes作为一种流行的文档数据库系统,广泛应用于办公自动化领域,尤其在...

    Lotus Domino 8.5.3 Notes.jar

    Lotus Domino 8.5.3 Notes.jar

    基于Lotus Domino/notes 平台的办公自动化系统开发

    针对企业的实际需求,提出办公自动化系统。探讨了基于B/S 模式的办公自动化系统的开发。在搭建了系统物理架构和功能架构的基础上实现安全的、可定制的且具有强大工作流处理机制的办公自动化系统,为企业架起信息交流...

    Lotus Notes/Domino jar包

    Lotus Notes/Domino是一款历史悠久的企业级协作软件,由IBM开发并维护。这款系统主要用于电子邮件、日历、任务管理、文档数据库以及工作流程自动化等。在Java编程环境中,开发者可以通过使用Lotus Notes/Domino的jar...

    lotus notes R5 学习教程

    - **Lotus Notes和Domino概述**:这部分介绍了Lotus Notes和Domino的基础概念及其主要功能,包括协作平台、电子邮件系统以及数据库应用。 - **了解Notes的安全性**:详细讲解了Lotus Notes的安全机制,如身份验证、...

    Domino NotesV11开放下载啦!

    此刻我正在北京的Domino NotesV11培训现场写Domino Notes V11,人数众多,群情激扬。上周五,Domino Notes V11已经开放下载,不知道朋友们下到了没有?要是下到了,告诉大家一个好消息,就是 Domino Notes V11依旧不...

    IBM Lotus Notes/Domino程序设计文档

    【IBM Lotus Notes/Domino程序设计文档】 IBM Lotus Notes/Domino是一款强大的协作软件平台,主要用于企业级的信息管理和应用开发。这款系统集成了电子邮件、日历、任务管理、即时通讯和数据库应用程序等功能,允许...

    Lotus Domino 8升级图解

    **Lotus Domino/Notes 8.0.2** 是IBM在早期发布的一个版本,它作为企业级电子邮件、协作和Web应用程序平台的重要组成部分,提供了包括邮件服务、日历、联系人管理以及文档共享等功能。此版本着重于稳定性与安全性方面...

    Lotus Domino Notes 办公自动化(OA)源码

    1. **数据库架构**:Lotus Domino Notes的OA系统由多个数据库组成,每个数据库都有特定的功能,如员工信息管理、任务分配、文档共享、日程管理等。`oanames.nsf`可能是用户目录或组织结构数据库,存储员工姓名、职务...

Global site tag (gtag.js) - Google Analytics