在 IBM Lotus Domino Designer 中使用 Java 构建应用程序.docx
- 文档编号:23028855
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:41
- 大小:30.92KB
在 IBM Lotus Domino Designer 中使用 Java 构建应用程序.docx
《在 IBM Lotus Domino Designer 中使用 Java 构建应用程序.docx》由会员分享,可在线阅读,更多相关《在 IBM Lotus Domino Designer 中使用 Java 构建应用程序.docx(41页珍藏版)》请在冰豆网上搜索。
在IBMLotusDominoDesigner中使用Java构建应用程序
在IBMLotusDominoDesigner中使用Java构建应用程序
OscarHernandez,高级软件工程师,IBM
OscarIHernandez是IBMLotus技术支持中心的高级软件工程师。
他是LotusNotes/Domino应用程序开发团队的成员,也是IBM认证的高级应用程序开发人员。
简介:
本文旨在帮助那些传统的LotusScript开发人员转向Java开发。
在几乎不具备Java知识的情况下,本文可帮助您开始在IBMLotusDomino中进行Java应用程序开发。
简介
对于IBMLotusNotes应用程序开发人员来说,LotusScript和LotusScript类在设计Notes应用程序时很有用。
LotusScriptAPI支持以编程方式与数据库、文档,甚至设计元素进行交互。
随着Java发展成为主流编程语言,原来越多的Notes应用程序开发人员开始将目光投向Java。
本文面向那些想要在IBMLotusDomino中使用Java进行编程的LotusScript开发人员。
假定读者具有一定的LotusScript编程经验。
本文包含三部分:
Java语言、示例和其他要素。
Java编程人员可以直接跳到示例部分,但是新手应该从Java语言部分开始阅读。
Java语言
发布于1995年,Java是一种面向对象的编程语言,它的出现满足了平台独立性需求。
这是通过将Java源代码编译成字节码实现的,然后任意平台上的任何Java虚拟机(JVM)都可以解释字节码。
因此,只要为目标平台实现了JVM,就可以运行任何Java应用程序。
有关更多信息,请参见“TheHistoryofJavaTechnology”。
Java的语法类似于C,而它面向对象的实现方式类似于C++,因此C/C++编程人员可以轻松掌握Java。
但是,LotusScript开发人员可能会发现Java语法与LotusScript大不相同。
由于本文关注的是在LotusDomino中使用Java,因此所展示的示例也将在LotusDomino的环境中实现。
我们从经典的“HelloWorld”示例开始。
在DominoDesigner中创建新的Java代理时,会收到表1左栏所示的模板代码。
右栏的代码已经进行了修改以适应“HelloWorld”示例的需要。
表1.HelloWorld示例
模板Java代理代码
HelloWorldJava代理代码
importlotus.domino.*;
publicclassJavaAgentextendsAgentBase{
publicvoidNotesMain(){
try{
Sessionsession=getSession();
AgentContextagentContext=
session.getAgentContext();
//(Yourcodegoeshere)
}catch(Exceptione){
e.printStackTrace();
}
}
}
importlotus.domino.*;
publicclassJavaAgentextendsAgentBase{
publicvoidNotesMain(){
try{
Sessionsession=getSession();
AgentContextagentContext=
session.getAgentContext();
//(Yourcodegoeshere)
System.out.println("HelloWorld!
");
}catch(Exceptione){
e.printStackTrace();
}
}
}
逐行详解
我们来逐行看一下这段代码:
importlotus.domino.*;
Java使用import语句以包括其他Java类。
在本例中,所有lotus.domino类对于代理代码都可用。
Java类通常包含在JAR文件中。
代理可以通过几种方式使用JAR文件。
有关JAR文件的信息,请参阅本文第4节“将外部JAR文件与Java代理一起使用”部分。
publicclassJavaAgentextendsAgentBase{
Java是一种面向对象的编程语言。
该行证明了这一点,创建Java代理时,它创建了JavaAgent类,这是在其中编写Java代码的主类。
可能还注意到了JavaAgent类扩展了AgentBase类。
因为Java是面向对象的,所以扩展AgentBase类为我们提供了进入代理的入口点,这将我们带到了下一行。
publicvoidNotesMain(){
NotesMain方法是到代理的入口点。
这里我们用自己的定义改写了AgentBase方法定义。
try{
在Java中,错误处理通过try和catch块进行处理。
Java中抛出异常的方法必须囊括在try块中,而且每一个try块都必须有一个相应的catch块。
在“HelloWorld”示例中需要try和catch块,因为getAgentContext方法抛出了NotesException。
要查看哪些Domino方法抛出异常,请参阅DominoDesigner帮助文件中的方法签名。
Sessionsession=getSessiono;
AgentBase类的getSession方法用于创建会话对象。
JavaSession类类似于LotusScriptNotesSession类。
AgentContextagentContext=session.getAgentContexto;
AgentContext类用于获取到当前数据库的句柄(使用其getCurrentDatabase方法)。
在LotusScript中,不需要使用这个额外的类来获取到当前数据库的句柄。
//(Yourcodegoeshere)
这一行要注意的是单行注释以“//”开头。
多行注释在开始和结尾处使用“/*”(类似于C++)。
System.out.println("HelloWorld!
");
这是用于输出到控制台的Java方法。
要在Notes中打开Java控制台,从菜单中选择Tools>ShowJavaDebugConsole。
System.out.println方法类似于LotusScriptPrint方法。
}catch(Exceptione){
这是与上文try代码块相对应的catch语句。
e.printStackTraceo;
在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/A
char
单个16位Unicode字符
N/A
但是,LotusScript提供了一个String类型,它包含多个字符
float
单精度32位IEEE754浮点
Single
相似点:
单精度32位浮点
double
双精度64位IEEE754浮点
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/A
Java关系运算符
说明
LotusScript等价物
==
相等
=
!
=
不等于
<>,><
>
大于
>
>=
大于等于
>=,=>
<
小于
<
<=
小于等于
<=,=<
Java逻辑(位)运算符
说明
LotusScript等价物
&
按位与
And
I
按位或
Or
A
按位异或
Xor
-
按位求补
Not
>>
带有符号扩展的右移位
N/A
<<
左移位
N/A
Java逻辑(布尔)运算符
说明
LotusScript等价物
&&
布尔与
And
II
布尔或
Or
==
布尔等于
Eqv
!
布尔非
Not
声明变量
Java中声明变量的语法是类型,后面接着变量名:
类型variable_name;
在Java中,变量名由字母、数字和下划线组成。
变量名是区分大小写的并且不能以数字开头。
Java
LotusScript
inti;
DimiasInteger
Strings;
DimsasString
创建函数
关于函数语法,LotusScript和Java有两个主要的不同之处。
首先,返回类型放在函数名前面(这与LotusScript相反,在LotusScript中返回类型放在末尾);第二,Java使用返回关键字从函数返回值(请参见清单1)。
清单1.创建函数示例
return_typefunction_name(parameter_type1parameter_name1,
parameter_type2parameter_name2)
{
//函数代码...
returnreturn_type_object;
}
Java
LotusScript
publicintproduct(intx,inty)
{
returnx*y;
}
Functionproduct(xAsInteger,yAsInteger)AsInteger
product=x*y
EndFunction
Callingthefunction:
inti=product(2,4);
System.out.println(i);
Callingthefunction:
DimiAsInteger
i=product(2,4)
Printi
创建类
Java中创建类的语法与LotusScript中的类似。
它们都使用带有private/public选项的类关键字,并且都支持类成员以及类方法。
但是,需要注意LotusScript类构造方法使用New关键字,而Java使用无参数的类名称(请参见清单2和表4)。
清单2.创建类示例
classclass_name
{
typeclass_member1;
typeclass_member2;
....
class_name()//构造方法
{
//构造方法代码
}
return_typeclass_method1(parameterlist)
{
//方法代码
}
return_typeclass_method2(parameterlist)
{
//方法代码
}
....
}
表4.创建类
Java
LotusScript
publicclassPerson
{
privateStringName;
privateintAge;
publicPerson()
{
this.Name="";
this.Age=0;
}
publicvoidSetName(Stringname)
{
this.Name=name;
}
publicStringGetName()
{
returnthis.Name;
}
publicvoidSetAge(intage)
{
this.Age=age;
}
publicintGetAge()
{
returnthis.Age;
}
publicvoidAddYears(inti)
{
this.Age=this.Age+i;
}
}
PublicClassPerson
PrivatePNameAsString
PrivatePAgeAsInteger
SubNew
PAge=0
PName=""
EndSub
PublicPropertySetPerson_NameAsString
PName=Person_Name
EndProperty
PublicPropertyGetPerson_NameAsString
Person_Name=PName
EndProperty
PublicPropertySetAgeAsInteger
PAge=Age
EndProperty
PublicPropertyGetAgeAsInteger
Age=PAge
EndProperty
SubAddYears(iAsInteger)
PAge=PAge+i
EndSub
EndClass
创建类的实例:
Personp=newPerson();
p.SetName("JohnDoe");
p.SetAge(20);
System.out.println(p.GetName()+""+p.GetAge());
p.AddYears(5);
System.out.println(p.GetName()+""+p.GetAge());
创建类的实例:
DimpAsNewPerson
p.Person_Name="JohnDoe"
p.Age=20
Messageboxp.Person_Name&""&Cstr(p.Age)
p.AddYears(5)
Messageboxp.Person_Name&""&Cstr(p.Age)
流控制语句
要控制脚本流动,Java提供了您希望从编程语言中获得的所有标准流控制语句。
表5列出了Java最常用的流控制语句及其LotusScript等价物。
有关Java流控制语句的更多信息,请访问Java教程控制流语句页。
表5.Java流控制语句
Java流控制语句
LotusScript等价物
if(condition){
//performthesestatements
}
IfconditionThen
'performthesestatements
EndIf
if(condition){
//performthesestatements
}
else{
//performthesestatements
}
IfconditionThen
'performthesestatements
Else
'performthesestatements
EndIf
switch(expr){
casec1:
//performthesestatementsifexpr==c1
break;
casec2:
//performthesestatementsifexpr==c2
break;
...
default:
//performthesestatementsif
//expr!
=anyofcases
}
SelectCaseexpr
Casec1
'performthesestatementsifexpr=c1
Casec2
'performthesestatementsifexpr=c2
...
CaseElse
'performthesestatementsif
'expr<>anyofthecases
EndSelect
while(condition){
//performthesestatements
}
Whilecondition
'performthesestatements
Wend
do{
//performthesestatements
}while(condition);
DoWhilecondition
'performthesestatements
Loop
for(initialization;termination;increment){
//performthesestatements
}
ForcountVar=firstTolast
'performthesestatements
Next
LotusScript与Java语言的不同之处
LotusScript与Java的类似之处在于它们都是面向对象的编程语言。
除语法外,两种语言之间一个主要不同是Java是强类型的,而LotusScript不是。
在Java中,必须在使用之前声明所有变量(名称和类型)。
在LotusScript中没有这样的要求,尽管也有一些类型增强。
另一个主要不同是Java区分大小写,而LotusScript不区分。
编写Java代码时要记住这一点,因为p和P是两个不同的变量,而setName和SetName是两个不同的方法。
特定于Domino的不同
尽管名称不同,但是大部分为LotusScript提供的Domino类在Java中都能找到。
在LotusScript中,Domino类以“Notes”开头;例如,用于处理数据库的类是“NotesDatabase”,而针对文档的类是“NotesDocument”。
另一方面,在Java中,类名称不以“Notes”开头。
因此,处理数据库的类就是“Database”,而针对文档的类是“Document”。
LotusScript与JavaDomino类之间的主要不同是UI类。
LotusScript提供了以下类,用于UI交互:
NotesUIWorkspace、NotesUIDatabase、NotesUIDocument和NotesUIView
这些类使您能与Notes中当前打开的数据库、文档或视图进行交互。
但是在Java中就没有等价的UI类。
有关JavaDomino类的完整列表,请参阅DominoDesigner帮助文件。
回页首
示例
我们来看一些使用LotusScript执行的常见任务,研究一下如何在Java中进行对等操作。
第一个例子是发送电子邮件消息。
示例1:
发送电子邮件
花一分钟时间来研究一下下面清单3中的LotusScript代码:
清单3.示例LotusScript发送电子邮件代码
1DimsessionAsNewNotesSession
2DimdatabaseAsNotesDatabase
3DimemailAsNotesDocument
4DimsendtoAsString
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IBM Lotus Domino Designer 中使用 Java 构建应用程序 使用 构建 应用程序