Lotus Domino 程序设计.docx
- 文档编号:24071568
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:60
- 大小:2.37MB
Lotus Domino 程序设计.docx
《Lotus Domino 程序设计.docx》由会员分享,可在线阅读,更多相关《Lotus Domino 程序设计.docx(60页珍藏版)》请在冰豆网上搜索。
LotusDomino程序设计
LotusDomino6.5程序设计
3.1编程概述
3.1.1编程语言
公式、LotusScript、Java和JavaScript代码为Domino设计者提供了完整的编程界面。
可以根据需要将代码附加到多个对象。
例如:
如果在表单中创建一个计算域,则可附加公式来计算此域的值。
也可向域的onFocus事件附加JavaScript代码,此代码将在用户将焦点放置在域上的任何时候执行。
还可以决定创建一个公式代理、LotusScript代理或Java代理来自动定期更新数据库中的所有文档。
Domino为支持COM和OLE的开发环境提供编程界面。
Domino还提供了一个用于Java应用程序和小程序的编程界面。
Java应用程序和小程序可以通过访问已安装的Domino软件在本地操作,也可以通过使用CORBA与IIOP协议连接到一个Domino服务器进行远程操作。
在何处使用script和公式
在编写代码之前,要确保简单操作不能执行此任务。
可使用不需要编程的表单或视图中的简单操作来设计一些对象。
在编程界面中进行选择时,请考虑以下准则:
✓公式是具有类似编程语言特征的表达式。
例如:
可将值赋予变量,并且使用限制的控制逻辑。
公式语言通过调用@functions(函数)和@commands(命令)与DominoDesigner接口。
✓通常情况下,对用户当前正在处理的对象,最好使用使用公式编程,例如:
返回域的缺省值或确定视图的选择条件。
此外,公式在某些场合提供更好的性能,并且对简单应用程序来说比较方便。
✓JavaScript是跨平台、面向对象的描述性语言。
通过从Objects附签中选择JSHeader,可在编程窗格中编写Headerscript,并且在Script区键入script。
Script也可被附加到诸如onClick的特定事件上,或者被附加到诸如按钮的对象上。
不能在代理中编写JavaScript。
Domino监控用户script的编译和加载。
但是不将JavaScript存储在已编译的表单中。
JavaScript最好用于Web应用程序,或者单个应用程序被同时用于Notes和Web环境时。
✓LotusScript是完全面向对象的编程语言。
它通过预定义的类与Domino接口。
Domino监控用户代码的编译和加载,并且自动包含Domino的类定义。
LotusScript最好用于编程逻辑比较复杂的地方。
LotusScript擅长访问存储的数据库数据(后端)。
LotusScript提供了一些公式没有的功能,例如:
操作数据库存取控制列表(ACL)的能力。
LotusScript的UI(前端)能力受到限制。
✓Java是一种完全面向对象的编程语言,它与Domino的接口是通过预定义的类实现的。
在代理方面它可与LotusScript相比,但是它不能附加到DominoUI中的事件中。
Domino监控用户的代理代码的编译和载入,代码可以自己写也可以引入。
Java可以用在代理、Java应用程序和小程序中,可以在Domino以外编写和编译,并且可以通过类接口访问Domino。
3.1.2Domino可编程对象
下表概括了Domino中的可编程对象。
它指定了对象的范围,以及对象是否支持简单操作、公式、LotusScript、Java或JavaScript。
图表1Domino可编程对象
范围
Domino对象
支持
工作台
便捷图标*
公式
数据库
复制公式
公式
代理
公式,简单操作,LotusScript,Java
事件
LotusScript,公式
导航器设计
热点
LotusScript,公式,简单操作
视图或文件夹设计
表单公式
公式
选择公式
公式,简单操作
列公式
操作
公式,简单操作,域
公式,简单操作,LotusScript,JavaScript
隐藏操作公式
公式
事件
公式,LotusScript
表单设计
窗口标题公式
公式
区段标题公式
公式,文本
区段存取公式
公式
插入子表单公式
公式
隐藏段落公式
公式
操作
公式,简单操作,LotusScript,JavaScript
隐藏操作公式
公式
事件
公式,LotusScript,JavaScript
热点(按钮或操作)
公式,简单操作,LotusScript,JavaScript
热点(链接或公式弹出)
公式
表单中的布局区域设计
热点(操作)
公式,简单操作,LotusScript,JavaScript
表单中的域设计
缺省值公式
公式
输入转换公式
公式
输入校验公式
公式
计算域的值公式
公式
关键字域公式
公式
事件
LotusScript,JavaScript
文档(编辑模式)RTF文本域
区段标题公式
公式,文本
隐藏段落公式
公式
热点(按钮或操作)
公式,简单操作,LotusScript,JavaScript
热点(链接或弹出公式)
公式
下面对主要的几个编程对象作一个介绍。
1.代理
代理是可通过许多机制触发的用户过程。
代理运行在:
✓用户的工作站。
如代理的触发器是:
“手动”或“当文档已被粘贴时执行”。
✓包含此代理的服务器或工作站。
如代理的触发器是:
“在新邮件到达之前”、“新邮件到达后”、“创建或修改文档后执行”或“按时执行”。
可以用公式语言、LotusScript和Java来编写代理,也可以使用Domino提供的代理。
因此在编写代理之前,请查看一下Domino提供的代理是否可以做此工作。
基于公式的代理可巡回地在数据库文档上运行。
可以通过代理接口应用搜索条件来指定哪些文档将被处理。
公式中的SELECT语句更好地限制了搜索。
如果公式中没有包含一个SELECT语句,则DominoDesigner添加一个SELECT@All语句(SELECT@All语句除外)。
SELECT语句必须是公式中的第一个有效语句。
LotusScript和Java代理只能运行一次。
可以通过语言结构提供搜索标准和巡回方式,通过代理接口应用的搜索标准只能通过NotesDatabase(LotusScript)中的UnprocessedDocuments或AgentContext(Java)中的getUnprocessedDocuments实现。
下面是代理示例:
以下公式根据“TotalSales”域的值,为选定的文档的“Category”域写入值。
如果语句中不包含“SELECT@All”语句,则SELECT语句必须出现在公式中的应用语句之前。
SELECTTotalSales>=200000;
FIELDCategory:
="AboveQuota"
图表2创建代理
图表3使用操作公式调用代理
2.操作
操作是与视图或表单相关联的定制处理过程。
当打开视图或打开使用该表单创建的文档时,操作将显示在“操作”菜单命令中或者出现在操作条的按钮中,供用户使用,一般在表单或者视图的上方。
可以使用“公式条件为真时隐藏操作”公式,有条件地限制在菜单中或操作条中操作使用。
操作在用户的工作站上运行。
如果在浏览器中使用,操作运行在服务器上。
如:
做一个保存文档的操作:
@command([filesave]);
图表4保存操作
图表5操作分别在Notes和浏览器中的显示
3.热点
在表单设计、导航器设计、布局区域设计和RTF文本域中,可以创建热点。
热点在选中时激活,它可能是以下几种类型:
✓链接热点跳转到其他对象。
由设计者提供链接。
✓弹出式文本显示文本。
设计者提供文本。
✓按钮执行某一操作。
设计者提供简单操作、公式、LotusScript或JavaScript代码。
✓弹出式公式基于公式的结果显示弹出式文本。
由设计者提供公式。
✓操作热点执行某一操作。
由设计者提供简单操作、公式、LotusScript或JavaScript代码。
除了按钮显示为按钮,操作热点显示为高亮文本外,按钮和操作热点是相同的。
在Notes中使用程序,热点运行在用户的工作站上。
在Web中,根据热点类型运行在浏览器或者服务器上。
图表6在页面中使用热点
4.表单公式
表单公式确定在不同的条件下,使用哪个表单填写和显示文档。
表单公式是可选的。
DominoDesigner按以下优先次序选择表单:
1)存储在文档中的表单。
2)表单公式中指定的表单。
3)文档创建时使用的表单。
4)数据库的缺省表单。
表单公式必须返回表单名。
要输入表单公式:
1)在Designer中打开视图。
2)单击“对象”附签中的“表单公式”对象。
3)在Script区域输入公式。
表单公式将重设使用公式或LotusScript创建文档的视图操作调用的表单。
图表7视图的表单公式
例如:
一个视图具有如下表单公式:
@If(@IsResponseDoc;"Response";"MainTopic")
此表单公式指出,视图中的文档如果是答复文档则使用“答复”表单显示,否则将使用MainTopic表单显示。
然而,如果用户试图使用其它表单(如“PhoneNumber”)构造一个新文档(从Notes菜单中选择“创建”“PhoneNumber”),则用户将看到MainTopic表单而不是PhoneNumber表单。
使用公式或LotusScript构造新文档的视图操作的结果也一样。
要避免出现此问题,请在表单公式中添加下面的内容。
@If(@IsNewDoc;@Return(Form);"")
5.选择公式
选择公式选择显示在视图中的文档。
选择公式必须以SELECT语句结束。
如果公式中的最后一个语句是逻辑表达式,Domino添加关键字SELECT来将它转换成SELECT语句。
图表8视图的选择公式
6.列公式
列公式用来确定在视图的列中显示的内容。
列公式必须返回一个文本字符串。
RTF文本域不能用在列公式中
图表9视图的列公式
7.窗口标题公式
窗口标题公式针对那些使用该表单创建的文档,生成显示在标题条中的文字。
此公式必须返回一个数字或文本值,或者是一个单独的允许类型的域。
RTF文本域不能用在窗口标题公式中。
图表10窗口标题公式
8.隐藏段落公式
如果相关公式值为真,则表单中的段落、域等将被隐藏(不显示出来)。
图表11段落隐藏公式
9.事件
关联在某个对象上,有一定的触发条件。
图表12表单事件代码
10.域设计公式
作为域设计过程的一部分,可以编写下列公式:
✓缺省值公式,域的初始值。
✓输入转换公式
✓输入校验公式
✓计算域的值公式
✓关键字域的公式
图表13域的事件
图表14域的选型公式
3.2公式语言简介
公式语言提供了语法和@function,可以对常量和变量进行赋值计算,并执行简单的逻辑运算。
变量可以是Notes文档中的域或是只用于即时公式的临时变量(也叫做临时域)。
R6增加了循环语句。
@for,@while,@dowhile。
3.2.1使用语法规则
公式由一个或多个语句构成,每个语句都由以下成分构成:
✓变量
✓常量
✓运算符
✓@Function
✓关键字
一个值可以是变量、常量、函数的结果,或者是由上述任意元素与运算符组合而成的表达式的结果。
1.域变量
变量有两种类型,域和临时变量。
公式可以访问正在处理的文档中的域。
每个域的名称和类型都在数据库设计中指定。
数据类型
数据类型必须符合正在执行的操作或函数的要求。
例如:
如果TotalValue是一个数字域,则不能用@Prompt直接显示它,因为@Prompt要求一个文本参数。
必须首先用@Text来转换该参数:
@Prompt([OK];"ValueofMyNumber";@Text(TotalValue));
列表
列表是包含多值的域。
某些函数和运算符就是专门用来处理列表的。
例如:
如果Locations是一个允许多值的域,则下面的公式将返回列表中值的数目:
@Elements(Locations)
域值
域值是公式启动时在文档中指定的。
如果没有存取控制的限制,公式可以对域值进行修改。
必须使用FIELD关键字来修改域,否则变量将被当作临时变量处理。
FIELD关键字还可以用来在当前文档中创建新域。
下面的公式将在文本域Subject中写入域值:
FIELDSubject:
="NoSubject"
空域
空域等价于文本常量""(空双引号)。
下例将检测当前文档中名为Subject的域。
如果Subject的值为空,将被重置为“NoSubject”,否则域值将保持不变。
FIELDSubject:
=@If(Subject="";"NoSubject";Subject)
因为""是一个文本常量,所以要避免在非文本域中使用它。
具体地说,可编辑的非文本域应该使用缺省公式以保证该域包含正确类型的域值。
删除域
使用@DeleteField从文档中删除域。
FIELDBodyText:
=@DeleteField
2.临时变量
临时变量只存在于公式中。
其作用范围就是所在公式,除了公式中赋予的属性之外不再具有其他属性。
创建临时变量的语法是:
variableName:
=value
变量取等号右边值的类型。
该值可以是域的任何类型或布尔型。
布尔型数据类型由特定的函数返回其值,该值或为“真”(计算文本值为1),或为“假”(计算文本值为0)。
如果变量之前没有关键字FIELD,则在等号左边使用变量名将得到一个临时变量。
temp:
=@username
3.常量
文本常量是包含在引号中的字符,其中也包括空格、数字和特殊字符。
要包含连续多个字符,例如空格,可以使用@Repeat。
反斜杠(\)在文本常量中作为转义字符使用。
要在文本常量中嵌入引号,须在每个嵌入的引号前加上一个反斜杠。
要在文本常量中嵌入反斜杠,则必须键入两个反斜杠。
公式是:
"Type\"Yes\"or\"No\""
结果是:
Type"Yes"or"No"
数字常量由数字和特殊字符构成,中间不加空格,遵守以下规则:
✓整数由字符0-9组成的不加空格的正整数。
✓小数点小数点可以放在数字字符的前面、后面或中间。
✓正负号数字的第一个字符可以是正号或负号。
✓科学记数数字带后缀E,正号(缺省)或负号,再加一个整数。
-123.4,123E-2
4.时间/日期常量
时间-日期常量由时间和(或)日期构成,放在方括号中。
格式如下
✓12小时制时间格式为[hh:
mm:
ss],后面跟着字符AM或PM,小时的范围是00到12,秒的部分是可选的,缺省为00。
✓24小时制时间格式为[hh:
mm:
ss],小时的范围是00到23,秒的部分是可选的,缺省为00。
✓日期日期的格式为[mm/dd/yy]。
其中年份是可选的,缺省情况下为当年年份。
使用yy来指定二十世纪(yy大于或等于50)或者二十一世纪(yy小于50)中的一个年份;使用yyyy指定任意一个年份。
日期格式的有效性取决于用户在操作系统控制面板选择的日期分隔符,Windows、UNIX和Macintosh的缺省分隔符是斜杠(/)。
OS/2缺省分隔符是连字符(-)。
✓时间和日期时间和日期的格式为[timedate]或[datetime]。
如果时间-日期值相减,所得的整数结果表示两者之间秒的差值。
图表15日期时间格式
时间-日期格式
常量
12小时制结果
24-小时制
[5:
30]
05:
30:
00AM
12-小时制
[5:
30PM]
05:
30:
00PM
24-小时制
[17:
30]
05:
30:
00PM
日期
[6/15]
06/15/97
日期
[6/15/97]
06/15/97
时间-日期
[6/155:
30PM]
06/15/9705:
30:
00PM
时间-日期
[5:
30PM6/15]
06/15/9705:
30:
00PM
差值
[5:
30PM]-[5:
30]
43200
5.通用语法规则
✓语句分隔符
使用分号分隔多条语句。
FIELDRegionalManager:
=AreaManager;
FIELDAreaManager:
=@DeleteField
✓空格
在运算符、标点和值之间可以放置任意多个空格(也可以没有)。
然而,描述关键字至少需要一个空格,而且,文本常量之间的空格也是很重要的。
例如:
下面的语句是等价的。
LastName+","+FirstName;
LastName+","+FirstName
在下面的语句中,关键字SELECT后面至少要有一个空格。
SELECT@All
✓大小写
除了在文本常量中,其他地方并不区分大小写。
按约定,关键字(例如FIELD)要大写,@function和@command名(例如ProperCase)可以大小写混合使用。
键入时可以不遵照本约定,Domino会在保存公式时按照约定转换大小写。
3.2.2使用运算符
运算符用来赋值、修改值,还可以将现有的值合并到新值。
1.赋值运算符
赋值运算符(:
=)将等号右边的值赋给左边的变量,右边值的类型即为变量类型。
本样例把数字值1赋给临时变量n。
n:
=1
2.列表运算符
列表运算符(:
)将值并置在一个列表中。
这些值必须具有相同的类型。
以下是一个具有三个成员的文本列表。
"London":
"NewYork":
"Tokyo"
列表并置具有最高优先级,所以列表元素中的表达式必须用括号表示
1:
2:
3:
4+1:
2:
(-3):
4=2:
4:
0:
8
3.单目运算符
单目运算符(+和-)指出数字值的符号。
一个无符号的数字值是正数。
下列数值是相等的:
5,+5,-(-5)
4.算术运算符
算术运算符(*/+-)通过加、减、乘、除四种运算将两个数值合二为一。
下面运算的结果都是16:
4*4,64/4,12+4,20-4
5.文本运算符
文本并置运算符(+)将两个文本值合并。
下面的操作结果是变量CompanyName的值的后面加上一个逗号、一个空格和“Inc.”。
CompanyName+",Inc."
6.比较运算符
比较运算符(=、<>、!
=、><、<、>、<=和>=)用来比较相同类型的数值,并产生一个逻辑结果(“真”或“假”)。
下面的运算结果的逻辑值都是“真”:
"London"="Lon"+"don"
"London"!
="Tokyo"
2+2>3
7.逻辑运算符
逻辑运算符(!
、&、和|)计算逻辑值。
下面所有操作的结果值都是“真”。
4=2+2&5=3+2
8.列表操作
列表操作有以下两种类型:
✓并列运算符:
并列运算符对两个列表进行并列运算。
列表1的第一个元素对应于列表2的第一个元素,列表1的第二个元素对应于列表2的第二个元素,依此类推。
如果一个列表的元素数量少于另一个,则短一些的列表的最后一个元素将重复若干次以匹配长的列表。
如果列表1包含A:
B:
C,而列表2包含1:
2,则列表2将作为1:
2:
2参加运算。
对于并列的比较运算,只要对应的列表元素中有一个匹配的情况即返回真值或1。
✓交叉运算符:
交叉运算符对两个列表进行排列组合。
计算结果列表的每一个元素对应于每一种排列组合的情况,按以下顺序出现:
列表1的第一个元素与列表2的每一个元素匹配运算,列表1的元素2同列表2的每一个元素匹配运算,如此下去,直到列表1的最后一个元素与列表2的每一个元素运算完毕。
如果在一个列表和一个非列表值之间进行运算,非列表值和列表中的每一个元素进行匹配计算。
图表16公式运算符
并列运算符
交叉运算符
含义
*
**
乘法
/
*/
除法
+
*+
加法
-
*-
减法
>
*>
大于
<
*<
小于
>=
*>=
大于或等于
<=
*<=
小于或等于
=
*=
等于
!
=
*!
=
不等于
运算符
语句
结果
连接,并列
"A":
"B":
"C"+"1":
"2":
"3"
"A":
"B":
"C"+"1":
"2"
"A":
"B":
"C"+"1"
"A1":
"B2":
"C3"
"A1":
"B2":
"C2"
"A1":
"B1":
C1"
连接,交叉
"A":
"B":
"C"*+"1":
"2":
"3"
"A":
"B":
"C"*+"1":
"2"
"A1":
"A2":
"A3":
"B1":
"B2":
"B3":
"C1":
"C2":
"C3"
"A1":
"A2":
"B1":
"B2":
"C1":
"C2"
9.操作的计算顺序
括号:
可以使用括号对计算顺序进行明确强制,首先计算括号中的操作。
例如:
(5-3)*(6-4)=4
优先级:
括号外的操作从优先级1开始按优先级的顺序进行。
例如:
乘法运算比减法运算的优先级高,因此首先计算3*6:
每个运算符的优先级请参考DesignerHelp.nsf。
5-3*6-4=-17
从左到右:
相同优先级的操作按照从左到右的顺序计算。
例如:
8/4*2=4
3.2.3使用@function
函数执行一个特定的运算并返回一个值。
函数通常的格式为:
@function-name(argument1;argument2;...argumentn);
函数由函数名后面紧随参数(如果有的话)构成,函数名的第一个字符总是@。
使用分号分隔各个参数。
@Middle(Company;4;4)
没有参数的@function省略括号。
如:
@Created
将关键字参数放在方括号中。
@Abstract、@Command、@PostedCommand、@DocMark、@GetPortsList、@PickList、@MailSend、@Name和@Prompt使用关键字参数。
@Prompt([OK];"Response";Y)
@Name([CN];AUTHOR)
@Command([FileSave])
函数计算出一个返回值,并用该值替换自身。
使用函数时必须满足正确的数据类型。
例如:
@Power可以计算数字域的值:
@Power(2;Exp)
@C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Lotus Domino 程序设计