在 IBM Lotus Domino Designer 中使用 Java 构建应用程序
- 格式:doc
- 大小:294.50 KB
- 文档页数:31
协同应用平台Domino数据迁移解决方案Lotus Domino/Notes简介Domino数据库结构模式:1.Lotus Domino是先进的文档数据库,广泛应用于办公自动化、工作流控制、协同工作环境等方面,Domino的一个主要技术是信息检索技术,包括全文检索、关键字查询、视图和文件夹等多种方式。
2.文档型数据库与关系型数据库的区别与联系区别:非结构化数据与结构化数据。
联系:数据库对象类比表。
3.Domino系统的主要组件有Domino服务器、Adminstrator、Designer和Notes客户端。
Domino服务器集企业级电子邮件、分布式文档数据库与快速应用开发与一体。
Adminstrator是管理服务器的软件,用于监控、管理和性能优化。
Designer是应用程序开发软件。
Notes是工作站端软件,集成了邮件、日历、WEB浏览和信息管理。
4.Domino数据库结构由表单、域、文档、视图及其他显示部分组成。
表单:用于创建表单外观和功能的组件。
域:是构成表单的重要元素,用以数据录入、存放和显示。
文档:存储信息的主要形式,相当于关系型数据库的行记录。
视图:是文档的现实窗口,可加条件。
OA的迁移模块简介【项目名称】×××××政府【公文】公文管理主要是国家行政机关、企事业单位在行政管理过程中形成的具有法定效力和规范体式的文书,是依法行政和进行公务活动的重要工具。
本模块主要实现发文、收文、文件送审签的网上自动流转,从而提供了更加规范化、制度化、科学化、流程化的办理方式,简化了纸质办理方式的繁琐性,使工作效率得到了大大的提高。
因此公文历史数据的查阅和复用频率很高。
【政务信息】OA政务信息模块是信息的一个重要门类,是政务活动中反映政务工作及其相关事物的情报、情况、资料、数据、图表、文字材料和音像材料等的总称。
【项目名称】××××××集团【集团公司发文】参看【公文】Domino数据迁移具体技术实现方案Domino数据源搜索提供两种方法:一、使用Domino因特网ORB间协议DIIOP访问×××××政府原OA系Domino数据库,公文和政务信息等多个模块历史数据需要迁移至新OA中。
xpage读法XPages是IBM Lotus Domino平台上的一种技术,用于开发Web 应用程序。
它基于Java和JavaServer Faces(JSF)框架,提供了一种快速、简便的方式来构建功能强大的企业级Web应用程序。
XPages的核心概念是将应用程序的界面和逻辑分离,使开发人员可以专注于业务逻辑的实现。
通过使用XPages,开发人员可以轻松地创建各种类型的表单、视图和导航,以及处理和显示数据的逻辑。
XPages还提供了一组强大的控件和功能,如数据绑定、事件处理、验证和安全性等,使开发人员能够快速构建出现代化的Web 应用程序。
在XPages中,开发人员可以使用标准的HTML、CSS和JavaScript来创建用户界面。
同时,XPages还提供了一些自定义标签和属性,以简化开发过程和增强用户体验。
开发人员可以使用这些标签和属性来创建交互式的表单、数据表格和图表等元素,以及实现动态效果和用户反馈。
XPages还支持各种类型的数据源,如关系数据库、文档数据库和Web服务等。
开发人员可以使用XPages的数据绑定功能,将这些数据源与应用程序的界面进行绑定,实现数据的展示、输入和处理。
同时,XPages还提供了一套强大的搜索和过滤功能,以帮助用户快速找到所需的数据。
除了基本的Web应用程序开发功能外,XPages还提供了一些高级功能,如多语言支持、主题和样式管理、移动设备适配等。
这些功能使开发人员能够更好地满足用户的需求,并提供更好的用户体验。
总的来说,XPages是一种功能强大、易于使用的开发技术,适用于构建各种类型的企业级Web应用程序。
它的出现大大简化了开发人员的工作,提高了开发效率,同时还提供了丰富的功能和灵活性,使开发人员能够更好地满足用户的需求。
无论是初学者还是经验丰富的开发人员,都可以通过学习和使用XPages来创建出色的Web应用程序。
在Java程序中调用Domino我们在Java程序中,可以通过引用lotus.domino package,来调用Domino对象。
我们的程序可以是一个应用程序,一个Domino代理,一个applet,或一个servlet。
如果我们要在一个客户端调用,那我们需要在机器上配置:Server端:保证notes.ini 包含如下的列:ServerTasks=<any other tasks>,http,diiop在Domino目录(在Server\Servers)下的服务器文档必须允许并限定远程调用,做如下配置:⏹Under Security:◆Under Server Access, fill in "Access server," "Not access server,""Create new databases," and "Create replica databases" as desired.◆Under IIOP Restrictions, fill in "Run restricted Java/Javascript/COM"and "Run unrestricted Java/Javascript/COM" as desired.◆Under Web Server Access - Web server authentication, specify a moreinclusive or less inclusive view for validating user names.⏹Under Ports:◆Under Internet Ports - IIOP, set up the TCP/IP port for non-encryptedtransfers and the SSL port for encrypted transfers. Indicate whetheraccess is permitted by name and password, and whether anonymous accessis allowed.⏹Under Internet Protocols:◆Under HTTP - Basics, indicate whether HTTP clients can browse databases.A "no" specification disallows DbDirectory.getFirstDatabase for thedatabase.◆Under IIOP, specify the number of threads to be allocated for handlingremote calls.Designer端:●保证notes.ini 包含如下的列:ALLOW_NOTES_PACKAGE_APPLETS=1●将Notes目录下的和 Notes.jar 加入CLASSPATH 环境变量中,如:setCLASSPATH=.;C:\Lotus\Notes\Data\domino\java\NCSO.jar; c:\Lotus\Notes●将 c:\Lotus\Notes 加入PATH环境变量中。
Lotus Domino 各版本特点介绍Lotus Domino作为协同办公的基础平台,在协同办公领域一直处于主导地位。
Domino产品线在IBM公司的大力推动下已发展至最新的R8.5的版本。
以下分别对R5至R8.5的特点进行介绍。
1、Lotus Domino各版本特点介绍1.1Lotus Domino R5Lotus Domino R5是实现web编程的重要里程碑式的版本,但也是面向web编程的第一代系统,在编程脚本支持、服务器性能支持等方面存在很多有待完善的功能弱点。
1.2Lotus Domino R6Domino R6是在2002年10月开发完成的,相比于Domino R5,它具有以下优势:●表现得最好――Domino 5 和Domino 6 的比较表明了Domino 6 在所有类别中表现得最好。
●使用现有服务器支持更多用户――每用户的CPU 需求减少了23% 之多,使得服务器能够满足更多用户的需要。
●提高消息传送速度――网络压缩能够减少34% 至52% 的网络流量,使得消息传送更快速。
●节省数据存储空间――数据压缩把消息尺寸减小了45% 至65%,从而节省宝贵的存储空间,并且支持更快速的备份。
1●支持更快速的消息更新――流式复制对消息更新的复制速度提高了36%至45%。
●使管理员的工作更容易――更好的监控和管理工具提高了管理员的生产率。
●更快地传输数据――通过结合使用附件压缩、网络压缩和流模式复制,数据传输速度最大可提高50%。
●能够提高客户满意度――通过高达30% 的响应时间改善来实现。
●更好地利用服务器――支持相同服务器上的多种版本或者分区,以及支持多种语言,从而能够支持服务器合并。
●保持用户在线时间更长――自动重启和恢复功能提高了服务器可用性。
●帮助平衡工作负载――使用从活动趋势分析和Tivoli analyzer 获得的统计数据来实现。
1.3Lotus Domino R7Domino R7.x于2005年9月份正式发布。
Lotus Domino/Notes开发平台简介2.1 Lotus Domino/Notes简介Lotus Domino/Notes是业界唯一建立在开放、统一的结构之上,集企业级通讯、协作、工作流、Intranet和Internet Web应用功能于一体的软件平台[12]。
Lotus Domino/Notes因其先进的文档数据库和功能强大的电子邮件系统、工作流开发、标准的Web应用服务等优势而得以在办公自动化、协同工作环境、企业信息集成和知识管理中广泛应用。
Notes是在传统的关系数据库和电子邮件系统基础上发展而来,但与这二者又有很大的差别,它开创了群件技术,并已成为群件的事实标准。
我们可以如下概括Domino/Notes适用的应用范围:对于办公自动化应用,我们可以说Lotus Domino/Notes是一个以网络为基础,以知识管理为核心的办公自动化系统的实现和运行平台。
对于电子协作和网络应用开发,我们可以说Lotus Domino/Notes是典型的群件系统,提供信息共享和工作流自动化的实现和运行环境。
对于Intranet和Internet,我们可以说Lotus Domino/Notes是强大的Web 应用服务器,是构建管理和开发企业电子商务Web应用的平台。
2.2 Lotus Domino/Notes应用程序的结构[12][ 13] [ 14] [ 15]每一个Lotus应用程序都至少包含一个数据库(.nsf),而帧结构集、表单及域、视图、页面及文件夹等是Notes数据库的基本元素。
另外人们还可以用导航器、代理、操作、公式、LotusScript语言等工具使应用程序更加简洁、高效和易用,如图2-1所示。
下面对各部分进行简单介绍。
图2-1 Domino应用程序组成1.数据库数据库是一个集合概念,是包含应用程序的数据、程序代码、逻辑关系和设计元素的容器,一个数据库通常存储某一个特定类型的信息,扩展名为.nsf。
服务器发布信息Notes 用户 Web 用户Domino8.x 服务器D omino8.5.X m ail85.ntf mail85.ntfDomino8.0.X m ail8.ntf mail8.ntf Domino7.x 服务器mail7.ntf dwa7.ntf对Mail85.ntf 的支持Notes 8.5.x 客户端Notes 8.x 客户端Notes 7.x 客户端Notes 6.x 客户端Domino8.5.x 服务器支持仅支持在升级过程中的使用仅支持在升级过程中的使用仅支持在升级过程中的使用Domino8.x 服务器仅支持在升级过程中的使用仅支持在升级过程中的使用仅支持在升级过程中的使用仅支持在升级过程中的使用Domino7.x 服务器仅支持在升级过程中的使用仅支持在升级过程中的使用仅支持在升级过程中的使用仅支持在升级过程中的使用Domino6.5.6 服务器仅支持在升级过程中的使用仅支持在升级过程中的使用仅支持在升级过程中的使用仅支持在升级过程中的使用对Mail8.ntf 的支持Notes 8.5.x 客户端Notes 8.x 客户端Notes 7.x 客户端Notes 6.x 客户端Domino8.5.x 服务器支持支持仅支持在升级过程中的使用仅支持在升级过程中的使用Domino8.x 服务器支持支持仅支持在升级过程中的使用仅支持在升级过程中的使用Domino7.x 服务器仅支持在升级过程中的使用仅支持在升级过程中的使用仅支持在升级过程中的使用仅支持在升级过程中的使用Domino6.5.6 服务器仅支持在升级过程中的使用仅支持在升级过程中的使用仅支持在升级过程中的使用仅支持在升级过程中的使用对Mail7.ntf 和dwa7.ntf 的支持Notes 8.5.x 客户端Notes 8.x 客户端Notes 7.x 客户端Notes 6.x 客户端Domino8.5.x 服务器支持支持支持* Domino8.x 服务器支持支持支持* Domino7.x 服务器支持支持支持*Domino6.5.6 服务器仅支持在升级过程中的使用仅支持在升级过程中的使用* *对Mail6.ntf 的支持Notes 8.5.x 客户端Notes 8.x 客户端Notes 7.x 客户端Notes 6.x 客户端Domino8.5.x 服务器支持支持支持支持Domino8.x 服务器支持支持支持支持Domino7.x 服务器支持支持支持支持Domino6.5.6 服务器支持支持支持支持注意:“仅支持在升级过程中的使用”表示该配置在服务器和客户端升级到新版本所需的时间之内是支持的。
本文将向Java 编程人员介绍Domino Objects,并讲述本地访问和远程访问的一些基本知识,然后将介绍访问控制。
本文的重点是开发Java 应用程序。
如果没有本文中讲述的一些基本知识,从Java 转向Domino Objects 可能会比较困难。
不仅代码必须准确,而且客户机和服务器环境也必须准确。
本文首先将介绍本地访问和远程访问的一些基本知识,然后说明访问控制。
本文的重点是Java 应用程序。
在接下来的续篇中,我们将讨论SSL 加密、servlet、连接池、单点登录、防火墙、超时和回收,而且还包括故障检修部分。
本文假设您熟悉Domino Java API。
概述Java 对Domino Objects 的访问是通过高级包lotus.domino 进行的。
根据运行时环境,这个包中的接口是在其他两个包中的一个包中实现的:∙lotus.domino.local 提供了从同一计算机上的Notes/Domino 软件进行调用。
∙lotus.domino.cso 提供了从通过远程连接访问的Domino 服务器进行调用。
对于本地访问,Java 程序运行在安装有Notes 客户机或者Domino 服务器的计算机上。
本地类由JNI (Java Native Interface)构建来,用于访问与JVM(Java Virtual Machine)相同的进程中的Notes/Domino 二进制文件。
对于远程访问,Java 程序使用CORBA(Common Object Request Broker Architecture)请求Domino 服务器所提供的服务。
远程类使用CORBA 通过TCP/IP 网络访问服务器。
远程访问由以下两个部分组成:∙客户机通过HTTP 协议获得服务器的初始对象,作为IOR (Interoperable Object Reference)。
∙客户机通过IIOP 连接进一步获得其他对象。
内容• 1 简介• 2 常用Notes 和Domino 文件• 3 Domino Directory (Names.nsf)• 4 服务器命令• 5 活动• 6 维护•7 NSD•8 结束语•致谢•参考资料•作者简介•建议1 简介本文档旨在通过全面阐述 Notes 和 Domino 的基本功能,协助 Domino 管理员初学者了解本产品。
很多时候,新管理员并没有必要的参考资料或文件来指示他们如何入门。
因此,我们这里的主要目的是尽可能简单地介绍如何履行 Domino 服务器管理员的基本职能。
1.2 产品概述IBM Lotus Domino 是一款服务器产品,可提供企业级电子邮件、协作功能和自定义应用程序平台。
Lotus Domino 最初是 Lotus Notes Server,Lotus Development Corporation 客户端-服务器消息技术的服务器组件。
它可以用作 Lotus Notes 应用程序的应用服务器和/或 Web 服务器。
并且还具有一个 .nsf 格式的内置数据库系统。
(从第七版开始,Domino 服务器便能够采用IBM DB2® 系统作为其后端数据库。
)IBM Lotus Notes 是一款由 IBM Software Group 开发并销售的协作式客户端-服务器应用程序。
IBM 将该软件描述为一个“访问 IBM Lotus Domino 服务器上的商业电子邮件、日历和应用程序的综合性桌面客户端选项”。
IBM Lotus iNotes TM提供了一款基于 Web、功能齐全的 Lotus Notes 客户端版本。
它可提供交互式界面,其中包括与 Web 浏览器内的 Lotus Notes 完全相同的功能(见图 1)。
图 1. Lotus iNotes UI(查看大图)IBM Lotus Domino Administrator是一款客户端-服务器应用程序,可提供图形界面,其主要目的在于管理和控制服务器,进入服务器的控制台,及执行各种基本任务,如重命名用户(见图 2)。
在 IBM Lotus Domino Designer 中使用Java 构建应用程序Oscar Hernandez, 高级软件工程师, IBM简介:本文旨在帮助那些传统的 LotusScript 开发人员转向 Java 开发。
在几乎不具备 Java 知识的情况下,本文可帮助您开始在 IBM Lotus Domino 中进行Java 应用程序开发。
简介对于 IBM Lotus Notes 应用程序开发人员来说,LotusScript 和 LotusScript 类在设计 Notes 应用程序时很有用。
LotusScript API 支持以编程方式与数据库、文档,甚至设计元素进行交互。
随着 Java 发展成为主流编程语言,原来越多的 Notes 应用程序开发人员开始将目光投向 Java。
本文面向那些想要在 IBM Lotus Domino 中使用 Java 进行编程的 LotusScript 开发人员。
假定读者具有一定的 LotusScript 编程经验。
本文包含三部分:Java 语言、示例和其他要素。
Java 编程人员可以直接跳到示例部分,但是新手应该从 Java 语言部分开始阅读。
Java 语言发布于 1995 年,Java 是一种面向对象的编程语言,它的出现满足了平台独立性需求。
这是通过将 Java 源代码编译成字节码实现的,然后任意平台上的任何Java 虚拟机(JVM)都可以解释字节码。
因此,只要为目标平台实现了 JVM,就可以运行任何 Java 应用程序。
有关更多信息,请参见“The History of Java Technology”。
Java 的语法类似于 C,而它面向对象的实现方式类似于 C++,因此 C/C++ 编程人员可以轻松掌握 Java。
但是,LotusScript 开发人员可能会发现 Java 语法与 LotusScript 大不相同。
由于本文关注的是在 Lotus Domino 中使用 Java,因此所展示的示例也将在Lotus Domino 的环境中实现。
我们从经典的“Hello World”示例开始。
在 Domino Designer 中创建新的 Java 代理时,会收到表 1 左栏所示的模板代码。
右栏的代码已经进行了修改以适应“Hello World”示例的需要。
表 1. Hello World 示例 模板 Java 代理代码Hello World Java 代理代码 import lotus.domino.*;public class JavaAgent extendsAgentBase {public void NotesMain() {try {Session session =getSession();AgentContextagentContext=session.getAgentContext();// (Your code goeshere)} catch(Exception e) {e.printStackTrace();}}}import lotus.domino.*;public class JavaAgent extendsAgentBase {public void NotesMain() {try {Session session =getSession();AgentContextagentContext=session.getAgentContext();// (Your code goes here)System.out.println("Hello World!");} catch(Exception e) {e.printStackTrace();}}}逐行详解我们来逐行看一下这段代码: import lotus.domino.*;Java 使用 import 语句以包括其他 Java 类。
在本例中,所有 lotus.domino 类对于代理代码都可用。
Java 类通常包含在 JAR 文件中。
代理可以通过几种方式使用 JAR 文件。
有关 JAR 文件的信息,请参阅本文第 4 节 “将外部 JAR 文件与 Java 代理一起使用” 部分。
public class JavaAgent extends AgentBase {Java 是一种面向对象的编程语言。
该行证明了这一点,创建 Java 代理时,它创建了 JavaAgent 类,这是在其中编写 Java 代码的主类。
可能还注意到了 JavaAgent 类扩展了 AgentBase 类。
因为 Java 是面向对象的,所以扩展 AgentBase 类为我们提供了进入代理的入口点,这将我们带到了下一行。
public void NotesMain() {NotesMain 方法是到代理的入口点。
这里我们用自己的定义改写了 AgentBase 方法定义。
try {在 Java 中,错误处理通过 try 和 catch 块进行处理。
Java 中抛出异常的方法必须囊括在 try 块中,而且每一个 try 块都必须有一个相应的 catch 块。
在“Hello World”示例中需要 try 和 catch 块,因为 getAgentContext 方法抛出了 NotesException。
要查看哪些 Domino 方法抛出异常,请参阅 Domino Designer 帮助文件中的方法签名。
Session session = getSessiono;AgentBase 类的 getSession 方法用于创建会话对象。
Java Session 类类似于LotusScript NotesSession 类。
AgentContext agentContext = session.getAgentContexto;AgentContext 类用于获取到当前数据库的句柄(使用其 getCurrentDatabase 方法)。
在 LotusScript 中,不需要使用这个额外的类来获取到当前数据库的句柄。
//(Your code goes here)这一行要注意的是单行注释以“//”开头。
多行注释在开始和结尾处使用“/*”(类似于 C++)。
System.out.println("Hello World!");这是用于输出到控制台的 Java 方法。
要在 Notes 中打开 Java 控制台,从菜单中选择 Tools > Show Java Debug Console。
System.out.println 方法类似于 LotusScript Print 方法。
} catch(Exception e) {这是与上文 try 代码块相对应的 catch 语句。
e. pri ntStackTraceo;在 catch 代码块中,可以按照自己的意愿处理异常;在本例中,我们只是将其输出到堆栈跟踪。
Java 语言基础知识Java 提供了 8 种基本类型:byte、short、int、long、char、float、double 和Boolean。
表 2 介绍了每种类型并指出了相对应的 LotusScript 的等价物(如果有)。
表 2. 基本类型和 LotusScript 等价物Java基本类型Java 说明LotusScript 等价物byte 正负 8 位二进制补码整数(-128 到127)Byte相似点:8 位不同点:无负数(0 到 255)short 正负 16 位二进制补码整数(-32,768 到32,767)Integer相似点:16 位,有正负(-32,768 到 32,767)int 正负 32 位二进制补码整数(-2,147,483,648 到 2,147,483,647)Long相似点:32 位,有正负(-2,147,483,648 到2,147,483,647)long 正负 64 位二进制补码整数(-9,223,372,036,854,775,808 到9,223,372,036,854,775,807)N/Achar 单个 16 位 Unicode 字符N/A但是, LotusScript 提供了一个 String 类型,它包含多个字符float 单精度 32 位 IEEE 754 浮点Single相似点:单精度 32 位浮点double 双精度 64 位 IEEE 754 浮点Double相似点:双精度 64 位浮点Boolean true 或 false 值Boolean相似点:true 或 false 值运算符Java 具有丰富的运算符集。
表 3 只是显示了其运算符的一部分并提供了说明和LotusScript 的等价物(如果有)。
有关完整列表,请访问Java 教程运算符页面。
表 3. Java 运算符Java 算术运算符说明LotusScript 等价物= 赋值=~ 加~~~ 递增N/A+= 加法赋值N/A- 减(也是一元减运算符)--- 递减N/A-= 减法赋值N/A* 乘**= 乘法赋值N/A/ 除//= 除法赋值N/A% 求余数Mod%= 求余数赋值N/AJava 关系运算符说明LotusScript 等价物== 相等=!= 不等于<>, ><> 大于>>= 大于等于>=, =><小于<<= 小于等于<=, =<Java 逻辑(位)运算符说明LotusScript 等价物& 按位与AndI 按位或OrA 按位异或Xor- 按位求补Not>>带有符号扩展的右移位N/A<< 左移位N/AJava 逻辑(布尔)运算符说明LotusScript 等价物&& 布尔与AndII 布尔或Or== 布尔等于E qv! 布尔非Not声明变量Java 中声明变量的语法是类型,后面接着变量名:类型 variable_name;在 Java 中,变量名由字母、数字和下划线组成。
变量名是区分大小写的并且不能以数字开头。
Java LotusScriptint i; Dim i as IntegerString s; D im s as String创建函数关于函数语法,LotusScript 和 Java 有两个主要的不同之处。
首先,返回类型放在函数名前面(这与 LotusScript 相反,在 LotusScript 中返回类型放在末尾);第二,Java 使用返回关键字从函数返回值(请参见清单 1)。
清单 1. 创建函数示例return _type function_name(parameter_type 1 parameter_name 1, parameter_type2 parameter_name2) {// 函数代码 ...return return_type_object; }Java LotusScript public int product(int x, int y) { return x*y; } Function product(x As Integer, y As Integer) As Integer product = x * y End FunctionCalling the function:int i = product(2,4);System.out.println(i);Calling the function:Dim i As Integeri = product(2, 4)Print i创建类Java 中创建类的语法与 LotusScript 中的类似。