More Related Content Similar to Lotus domino开发教程 Similar to Lotus domino开发教程 (20) Lotus domino开发教程1. Lotus Domino 开发教程(一)
Domino 的应用体系结构
Designer 6 的应用以及开发环境
创建表单
创建页面
创建域
使用隐藏 / 当选项显示或隐藏信息
创建简单视图
3. Lotus Domino开发教程(三)
Domino 设计元素之大纲
Domino 设计元素之框架集
Domino 设计元素之代理
创建链接和热点
子表单和共享域
LotusScript 基础
7. Lotus Domino 开发教程(一)
Domino 的应用体系结构
Designer 6 的应用以及开发环境
创建表单
创建页面
创建域
使用隐藏 / 当选项显示或隐藏信息
创建简单视图
8. Domino 的应用体系结构
一般的应用程序是一系列可执行文件及其
相关的支撑文件的集合
Lotus Domino 的应用程序是运行于 Lotus
Domino /Notes 平台上的具有特定功能的
数据库的集合
功能性:每个数据库都有特定的功能,是数
据信息存储和处理的场所
相关性:数据库之间存在信息流转或其他关
系
数据库是存放数据,逻辑和设计元素的容器
9. Domino 服务器的功能
对象存储
目录
安全性
复制
消息处理
Web 服务器
工作流
代理
开发环境
Domino 对象模型
与企业数据进行即时集成
可扩充性和可靠性
12. Notes 数据库
Domino 数据库的种类
用户使用的数据库 (.NSF)
模板数据库 (.NTF)
模板的功能
用户数据库的设计内容来源
用户数据库的设计内容更新来源
13. 创建数据库
如何创建新的数据库
模板和继承
如何拷贝一个现有的数据库
如何复制一个现有的数据库
练习:创建一个讨论为模板的新数据库
14. 表单设计
表单
是 Notes 数据库的数据结构
是用户的可视界面
用于显示 Notes 数据条目的内容
它和文档的关系以及区分
15. 表单设计
表单包含:
域 (Field)—— Notes 数据的“字段”
静态文本—— Notes 数据的说明解释或美
化
共享域
子表单
热点—— 功能对象(按钮、链接等)
操作—— 表单自动化的增强功能
19. 练习
创建一个名称为 frmBookInfo 的表单
默认为数据库缺省表单
需要合并复制保存冲突
需要刷新域
默认打开即进入 edit 模式
灰色底面或者尝试加入一张背景图片
20. 创建页面
和表单的区别
2. 表单:动态生成,可以与用户交互
3. 页面:只能是静态的,用于显示信息
21. 创建表单元素
创建静态文本 ...
创建域 (Field)…
域属性:名称等
域数据类型
产生方式
定义表单属性
表单名称和别名
其他属性
测试表单 ...
23. 练习 frmBookInfo 表单上
静态文本
域:
书名 fdBookName
类型 fdType
作者 fdAuthor
购买价格 fdPrice
出版社
fdPublisher
出版日期
fdPublicDate
入库时间
fdStoringDate
库存
fdStoring
描述
fdDescription
附件
fdAttachment
24. 美化表单
表格属性
如何构造一个漂亮的表格
应用于 bookinfo 表单
25. 特殊域的使用
Internal Fields:
SaveOptions (Number)
$V2AttachmentOptions(Number)
CGI Variant:
Query_String_Decoded
$$HTMLHead
$$Return
26. 练习
在 BookInfo 表单上更改出版社的类型为
对话框列表,内容为“清华大学出版社
” “北京大学出版社” “邮电人民出
版社” “其他”
27. 创建简单视图
关系型数据库和非关系型数据库的区别
视图的作用
查看文档的一览表
* 搜索范围
视图的二要素
选择那些文档——视图选择条件
查看文档的那些信息——视图的列
29. 视图选择条件
公式选择
文档元数据的查看
如何创建一个新的视图
30. 列的选择
列的获取类型:
简单功能
域
公式
如何定义一个视图的列
31. 练习
利用现有的 view ,更改名字为:
vwBookInfo
选择公式 : select Form = “frmBookInfo”
创建列:书名、购买价格、出版社、出版日
期、附件(如果有附件,那么使用附件图标)
@if(@AttachmentLengths > 0;5;0)
32. 总结
Domino6 的功能
数据库的创建,模板,拷贝
表单的属性以及如何创建
文档和表单的区别
域的类型,属性以及如何创建
关系型数据库和非关系型数据库的区别
视图的制作,列的生成
36. 域中使用公式 ...
选中域作为公式对象
选定对象事件
域的默认值对象
域值校验公式
域值翻译公式
书写公式表达式
39. 使用公式…
认识公式
函数
@Created
命令
@Command([FileCloseWindow])
操作符 : + 、 - 、 * 、 / 、 > 、
< ...
40. 函数 ...
字符串函数:
@ProperCase ( String )
@Trim ( String )
@Length ( String )
@Left ( String ; n )
@Newline
@Matches ( String ; pattern )
@ReplaceSubstring
41. 函数 ...
逻辑控制函数:
@If ( Condition1 ; Action1; Condition2 ;
Action2; Condition3 ; Action3; Else-action )
–可以返回数值或执行操作
–必须有奇数个参数
–可以使用 99 个条件
–可以嵌套
42. 函数 ...
时间函数:
@Created
@Adjust (time-date ; yy;mm;dd;hh;mm;ss)
@Today
@Tomorrow
@Month( time-date )
@Weekday ( time-date )
43. 函数 ...
数学运算函数:
@Max( number ; number )
@Min (number ; number )
@Round( number )
@Round( number ; factor)
@Sum ( num ; num; ... )
...
44. 函数 ...
特殊函数:
@UserName
@Name([action];name)
@IsNewDoc
@Success
@Failure(string)
...
45. 函数 ...
视图操作函数:
@dblookup
@dbcolumn
46. 函数 ...
对话框函数:
@prompt
@dialogbox
@picklist
47. 实例
参照 lotus notes database 练习
48. 练习 ...
frmBookInfo 的 windows title 上增加 “欢迎” +
@username +”的光临”的动态显示字样。
frmBookInfo 添加各个域的非空验证
fdPublisher 字段添加数据后台配置功能(增加一个表
单和一个视图,作为配置数据的表单)
frmBookInfo 底部增加两个按钮,一个是保存
(filesave) ,一个是关闭 (fileclosewindow)
frmBookInfo 上增加一个域( fdExpire )显示入库时
间后 1 年的时间(如果超过 1 年,那么就是过期书刊
)
创建一个视图,要求显示那些过期书刊
49. 答复表单
答复类型表单生成的文档
不能独立存在
创建时必须选定一个文档作为宿主
与选定文档的关系仅仅是结构上的关系
主文档与答复文档内容没有任何关系
50. 练习
增加表单 frmBookSelledInfo ,类型为
答复文档
增加一个视图 vwBookSelled ,将书本文
档和销售文档联系起来。( By Myself )
同理,增加表单 frmBookStoredInfo ,
类型为答复文档
增加一个视图 vwBookStored, 将书本文
档和入库文档联系起来。( Please )
51. 设计高级视图
选择所有文档还是某个子集?
是否要分类、排序?
是否作未读标记?
视图的列显示域还是公式结果?
是否以层次显示答复文档?
视图是否要显示简单统计?
视图初始化时,分类折叠还是展开?
52. 视图属性
视图的选择公式
视图属性
列属性
53. 视图的选择公式
使用 SELECT 关键字
使用公式
例如:
SELECT ((Form=“ 个人记录” )&( 年龄
>25))
55. 视图属性
缺省视图和缺省设计
第一次打开时是否折叠
缩进显示层次关系
菜单是否显示(转至)
56. 视图属性
视图的背景颜色
交替显示
标题
行高、行距
57. 视图属性
刷新索引
删除索引
未读标记
视图公式
59. 视图的列属性
列宽度
仅显示答复文档
隐藏列
以图标形式显示
可展开时显示折叠标记
61. 练习
新增视图 vwBookInfo_ByPublisher ,以
出版社为分类
新增视图
vwBookInfo_ByPublisherDate ,以出版
日期为分类
新增视图 vwBookInfo_ByType ,以类型
为分类
62. 操作
操作就是编程按钮,可以用来自动执行
任务,操作通常在操作工具条中,可以
在表单和视图中显示。
63. 增加操作
增加表单操作
增加视图操作
操作属性
67. 练习
删除 frmBookInfo 上的两个按钮,并且
加上三个按钮,保存
@command([filesave]) ,编辑
@command([editdocument]) ,关闭
@command([fileclosewindow])
视图 vwbookinfo 上增加一个操作按钮,
添加书刊信息,
努力让你的操作条美观(因人而议)。
68. 使用隐藏
使用隐藏选项
使用选项显示或隐藏信息
70. 练习
增加一个域, frCurrentUser ,设置为 notes 隐藏
增加一个域, frConfidential ,设置为如果除了文档作
者以外的用户都隐藏
frmBookInfo 上三个操作,保存,编辑和关闭按钮的隐
藏设置,如何设置?
视图上的按钮设置,目前条件是,该操作只对你个人
开放( @username )
增加一个新的域 :fdOtherPublisher
当出版社类型为“其他”的时候,出现
fdOtherPublisher 域以供用户输入出版社的名称
71. 创建文档
文档和表单的关系
如何创建文档
如何快速定位域和它的值
72. Lotus Domino 开发教程(三)
Domino 设计元素之大纲
Domino 设计元素之框架集
Domino 设计元素之代理
创建链接和热点
子表单和共享域
LotusScript 基础
73. 大纲
能导航到用户数据库的视图和文件夹
执行活动或者与用户应用以外的其他元
素或 URL 链接
74. 大纲处理
创建大纲
嵌入大纲
大纲属性调整
77. 练习
根据当前已经存在的视图创建大纲
StandardUser
将大纲嵌入页面 pgUserNav
尽量调整嵌入大纲的属性以达到你喜欢
的程度
78. 框架集合
框架集是用以显示多个独立页面的界面
,它可以使每个页面都能够放在自己矩
形的框架中
79. 框架集合生成
创建框架
嵌入各个页面,视图
打开时显示该框架
83. 练习
为该数据库创建一个框架集合,并设定
为打开是显示该框架集合
该框架集合为三个框架,左边为大纲页
面,右边为默认的 vwBookInfo 视图,右
上暂时使用一个背景为蓝色的 page 代替
84. Domino 设计元素之代理
代理可以让用户在 Domino 中自定义许
多任务。 Domino 代理是在数据库中为
用户执行特定任务的独立程序,例如归
档文档,改变字段值,发送邮件消息,
删除文档或者与外部应用进行交互。代
理是最为灵活的自动化类型,可以由用
户或者在后台运行,它们不必与特定的
视图或者表单进行绑定
85. 代理
代理的支持语言
Lotus script
Java
代理的三个要素
何时做?
对谁做?
做什么?
86. 创建代理的步骤
建立代理
命名代理
规划代理
编写代理
运行代理
87. 创建代理
采用设计模式,打开数据库,在 Shared
Code 部分点击 Agents , 然后点击 New
Agent
88. 命名代理
确保字母唯一性,可以加速 notes 查找
速度
通常赋予代理以“名称 | 别名”为宜
89. 规划代理
共享还是私人所有
事件触发
代理触发的事件
处理文档的范围
定时触发
代理触发的时间
处理文档的范围
91. 运行代理
@command([ToolsRunMacro];”Agent”)
直接运行
Lotuscript 中运行代理
92. 创建链接和热点
用于链接或是操作的热点区域
可以分为:链接热点,文本提示热点,
按钮,公式计算提示热点,操作热点
93. 子表单
子表单是表单的一种类型,可以嵌入所
有表单中的元素,拥有和表单相同的事
件,其主要作用是将表单中共享的一部
分集合起来,嵌入表单中,成为表单的
一部分。
可以动态插入子表单以达到文档部分读
写权限的更改。
可以集中修改,降低工作量
94. 共享域
共享域是可定义一个能由多个表单使用
的域。例如:许多表单含创建日期域,
可以一次性定义该域并对其重复使用,
而不同表单的域彼此没有联系,彼此是
独立的。
96. Lotus Script 基础
Notes 自带的类型
NotesSession
NotesDatabase
NotesView
NotesDocumentCollection
NotesDocument
NotesItem
…
98. Lotus Script 基础
参数定义和赋值语句
参数定义使用 DIM XXX AS DataType
支持 “ + - * / =”
分配一个对象空间使用 “ new”
定义数组: Dim AryTemp(3) as DataType
e.g.
Dim ss as New NotesSession
Dim strValue as String
strValue = “Hello World”
99. Lotus Script 基础
分支结构(与关系使用“ and”, 或关系使
用“ or”, 非关系使用“ not” )
If (condition1) and (condition2) then
…
elseif (condition3) or (condition4) then
…
elseif not (condition5) then
…
else
end if
100. Lotus Script 基础
循环结构
For Statement
While() , do… While() Statement
Forall Statement
退出循环语句使用
Exit For
Exit Forall
101. Lotus Script 基础
异常捕获语句
Error()
Erl()
Err()
e.g. On Error Goto Errorhandler
’Your code
exit sub
Errorhandler:
Msgbox “Error:” + Error() + “ line: ”
+ cstr(Erl())
103. 分析
创建入库答复表单的打开代码
入库答复文档在保存的时候需要更改主文档的
入库数字,入库的时候需要加上入库数值(文
档的修改)
当外部用户查看该书介绍后,在关闭文档的时
候需要弹出对话框询问是否对自己有帮助并且
为该用户的调查创建文档。(文档的增加)
删除书目文档
104. 练习
创建出库答复表单的打开代码
出库答复文档在保存的时候需要更改主
文档的库存数字,出库的时候需要减去
出库数值
107. 文档数值继承
表单属性:公式继承选定文档的值
创建时继承--使用创建时计算公式
108. @ DBColumn 、 @DBLookup
@DBColumn(“Notes”:”NoCache”;Server:
Database;View;ColumnNumber)
@DBLookup(“Notes”:”NoCache”;Server:
Database;View;Key;Field;Keyword)
搜索第一个排序的列
搜索结果为空时出错!使用 @IsError
109. 使用环境变量
保存在 Notes.ini 中
使用
@Environment,@SetEnvironment,ENVIR
ONMENT 等函数访问
是字符型值,访问时应做相应转换
110. 简要表
数据库简要表
个人简要表
相关的函数
@ EditProfile(Form;[UserName])
@GetProfileField(Form;Field;[UserName])
@SetProfileField(Form;Field;Value;
[UserName])
111. 交互函数
实现程序运行过程中人机交互功能
@ Prompt
@Picklist
@Dialogbox
112. 练习
创建简要表 frmProfile ,放置一个域
frmDBTitle ,然后在 page 上获得这个域
值。
环境变量将留在搜索文档的时候练习。
113. 数据库的安全性
Notes 安全性特点
Notes ID
多层次上的安全性
114. Notes ID
Notes ID 是用户或服务器被 domino 管理员注册的时
候创建的,主要包括:
所有者被分配的全称及可以更换的名称
Notes 的许可证号码
公钥和私钥
密码
SSL 连接,加密以及 s/mime 邮件消息签名的
internet 证书
可选的加密关键字
可选的恢复信息
115. 数据库的安全性
安全层次
网络层
服务器
数据库 ACL
表单和视图
读者域和作者域
访问控制区段
域的加密和签名
116. 服务器的安全性
通用认证:使用包括在服务器 ID 和用户
ID 中的通用证书,允许通过认证在工作
站和服务器之间进行访问
117. 数据库的安全性
数据库 ACL
表单和视图
读者域和作者域
访问控制区段
域的加密和签名
118. 数据库的 ACL
用户和权限
加入用户
用户权限分类
顶制用户权限
角色
角色定义
角色指定
角色权限
119. 表单和视图安全性
表单的访问控制:对使用指定表单读取和
创建文档的用户进行改进
使用表单读文档
使用表单创建文档
视图的访问控制:对能够读取视图内容的
用户进行改进
使用视图权限
120. 文档的读者域和作者域
文档的作者域
对文档有编辑权限
指定用户必须对数据库有作者权限
文档的读者域
对文档有读权限
可以存在多个读者作者域
权限叠加
121. 文档的访问控制区段
区段类型
标准区段
访问控制区段(表单中)
访问控制区段
指定用户对区段有编辑权限
“ 伪”安全性——
可以通过其他途径修改
122. 文档的域加密
创建加密字(或使用用户密钥)
在表单中定义可加密域
加密
对所有新文档加密(表单中设置)
对个别文档加密
发送创建的加密字
邮件方式
引入 / 引出方式
124. 分析
文档查询:输入查询条件,能显示出符
合的文档集合
数据导出到 excel
数据导出到 word
125. 练习
从 excel 导入到 lotus 数据库
126. 使用邮件建立流转机制
使数据库能够接收邮件
使数据库可以发送邮件
使用 SendTo 域(外部保留域)
表单属性——关闭时显示发送框
外部保留域 MailOptions=“1”,”0”
无参数函数 @MailSend
使用有参数函数 @MailSend ( )
127. 使用邮件建立流转机制
有参数函数 @MailSend ( ) 格式:
@MailSend(sendTo;copyTo;blindCopyTo
;
subject;remark;bodyFields;[flags])
128. 分析
简单的工作流流转
开发工作流需要注意的一些标准
读写权限控制(区段控制,读者作者
域控制,子表单更换)
审批者的动态获取
邮件通知审批者
状态域的更改
129. 练习
试图创建一条简单流程,流程描述如下
:
申请者提交图书采购申请- > 审批者同
意或拒绝
130. 创建设计模板
设计模板的后缀名为 .ntf
Lotus notes 数据库后缀为 .nsf
如果将 .nsf 直接命名或者新拷贝的时候
,命名为 .ntf ,那么改数据库就为模板
可以使用模板更改设计,可以使服务器
自动更新设计。
131. 定制复制要求
使用公式自定义复本的要求
适合于当前用户不必要同步和自己无关
的文档,可以节省时间和空间
133. Script 库
Script 库是一个用户自定义的脚本库,
用 LotusScript 等方式写好的共享脚
本就放在这里,由代理来调用
提高程序的集成度,并且降低体系统开
发的耦合度
134. 练习
如何插入一个 script 库
如何在代理或是事件中使用 script 库
创建一个 script 库( sLibValidate )并且
在其中添加域值非空校验的代码。
在 frmBookInfo 中使用到该代码
135. HTML
参照 HTML 学习 power point 文件
138. Lotus 中 Web 开发规范
表单、页面的开发
域在 web 中的使用
视图在 web 端的开发
公式在 web 端的结合
代理在 web 端的开发
CGI 变量的使用
139. BS 结构的优缺点
不需要客户端,节省成本开销
只需要 id + VPN ,就可以在任何地方登
陆办公
功能没有 CS 之强
取决于网络的速度和安全
140. 表单、页面的开发
Open Form Url :
http://server/directory/database/Form?Openform
Open Document URL:
http://server/directory/database/0/DocumentUn
Web 上一切活动都是在表单上发生
表单,页面可以自动翻译成 HTML 的格式在 IE
中显示 , CS 上表格样式在 Web 上会丢失
美化表单,页面或者统一其中的域的样式,推
荐使用 CSS 样式表
141. 域在 web 中的使用
域将有 domino 服务器根据其类型自动翻
译成 html 的元素,比如文本域将翻译为
html 的 inputbox ,文档在只读状态下,
域不会翻译成 html
多值域在 html 中的数值将由“ ;” 或是
“ ,” 相隔,小心你的数值中不能有这两
个字符
Dhtml 生成的域元素不会真正成为 notes
域,所以保存的时候不会有该域的生成
。
142. 视图在 web 端的开发
URL:http://Server/Directory/Database/v
iew?Openview
视图通常嵌入表单显示
使用“ $$ViewTemplate for
ViewName” 作为嵌入视图的表单的名字
,调用上述链接时,可以自动链接到该
表单
使用 javascript , html , css 样式来美
化视图
143. 公式在 web 端的结合
小部分公式可以在表单上使用
可以使用的公式,可以认为是服务器的小应用
程序执行
而一些相关用户界面的公式,不可以使用,如
@prompt, @dialogbox, @picklist
Command 命令推荐嵌入 button 中执行
访问外部数据源的公式可以放入域中执行
推荐表单刷新域和域的关键字变化自动刷新表
单功能
144. 代理在 web 端的开发
负责 web 服务器后台数据处理的将全部
由代理负责执行
Lotusscript 中 notesui 类将不再被使用
URL:http://server/directory/database/agen
@command([ToolsRunMacro];”agentNa
me”) 也可以调用
145. CGI 变量的使用
Query_String_Decoded(Query_String):
用于网页间的通信,截获 URL 中“ ?” 后
的所有字符串,最高可以支持 255 个字
符,经常和 javascript 的 escape 函数使
用
其他详细 CGI 变量,请参考帮助
146. 分析
制作一个图书在 web 上的功能,要求可
以在视图中删除图书文档的功能。
147. 练习
创建图书在 web 上的展示的功能
增加对过期图书借出的预定的功能(预
定,接受预定,完成图书发放)
如果借书超过 1 个月,系统将自动发送
邮件到该用户手中,要求尽快归还(定
时代理)
148. 一些在开发中需要注意的地方
公式和 javascript 之间的通信
公式和 HTML 之间的通信
LotusScript 和 javascript 之间的通信
表格隐藏在 web 上的使用和层的使用
( div )
按钮或者视图在 web 上的神秘失踪
公式, js , lotusScript 的职能分析
150. 公式和 HTML 之间的通信
公式中如果写入字符串形式的 html 时,需要
使用 “ []” ,这样, domino 会自动解析其
html 语法,否则只能当一般字符串处理
公式能嵌入 html ,而 html 可以采用计算域或
者计算文本的形式
Page 或者 form 上的 html 文本,需要使用内置
为 html 才能识别,否则当一般字符串处理
151. LS 和 JS 之间的通信
Js 多采用 url 的方式调用 ls 写成的代理
,比如 :agentname?openagent 。
Ls 多采用 print 的方法调用 js ,可以直
接在页面上打印出 js 语句,如果 js 语句
太多,容易造成字符串溢出
也可以在 form 上设置显示时计算域,,
在 ls 处理事务结束后,将 js 语句放入该
域,重新刷新会执行该代码
152. 表格隐藏在 web 上的使用
由于公式隐藏在 web 上是真正的隐藏,所以对
于 js 来说是不能访问的
如果该域需要 js 来访问,但是又必须隐藏,此
时提议应放入表格内,而表格的属性显示为
display:none
文档在只读的时候,所有的元素都是只读的,
所以此时 js 是访问不了任何的域的,如果必须
要访问域的数值的话,可以考虑使用在 notes
中显示 html 或者使用层
( div:document.all.div.innerText)
153. 按钮视图在 web 上的神秘失踪
不正确隐藏公式容易造成 form 元素在
web 上的隐藏,建议此时将隐藏公式放
入计算文本内,侦察逻辑是否正确
如果按钮没有添加代码,在 web 上也是
隐藏的
按钮或者内嵌视图标记为内置为 html 也
会隐藏,建议在该元素前后加入没有内
置 html 的空格隔开
154. 公式、 js 、 LS 的职能分析
公式多用于数据保存,数据获取等快速
后台操作
Js 多应用于前台的数据检查,数据转移
,或者加强网页操作的功能,可以直接
通过 js 调用代理执行操作
Ls 多应用于真正数据的事务操作,数据
的增加,删除,修改都是在代理中执行
,以完成复杂的业务逻辑。