1、Domino开发基础知识,亿同科技 福州技术部2011-04,内容,设计元素介绍 公式语言介绍LS 脚本介绍,Domino/Notes开发:思想方法,数据(文档)和代码一起保存 以文档为核心 以视图为主要表现方式 更偏向于一种扁平和混合的特点,Domino Web服务,数据库,数据库:存储文档的单元,文档既是用来保存应用数据,又是用来保存应用设计的。下面要介绍的设计元素就保存在数据库中:,表单 视图 代理 子表单 页面 Script库,大纲 桢 桢结构 共享资源 导航器 文件夹,Domino与传统数据库的区别,Domino的数据库是一个集数据与设计元素于一身的集合体。数据存储在文档中。文档的界
2、面是表单,一个设计元素。你可以把文档与表单非常粗略地类比为数据库的行与表。但这种比喻并不恰当,比如我们可以在文档中添加一个在过去创建的表单中并不存在的域,而且,你可以使用不同的表单去显示同一个给定的文档。在Domino中文档可以通过视图来显示。一个视图是满足某种规则(比如P r i o r t y = “ H i g h “ )的文档的集合,视图的每一行既可能代表一个文档又可能代表一个分类,不同的列显示文档内容的不同信息。列中既可能显示某一个域的值也可能显示某个公式的结果,比如P r i c e * Q u a n t i t y。打开一个视图与执行一条S Q L语句相似,只不过在视图中双击某
3、一行可以打开相关文档。文档总是存在于编辑模式或只读模式下。在编辑模式下,文档的可编辑域就像表单中的域。在只读模式下,这些域的内容以静态文本的形式出现,如何创建一个数据库,使用模板创建数据库 新建拷贝数据库 新建复本数据库 物理拷贝数据库 从头开始创建数据库,设计元素 表单,Domino的核心元素、兼具定义存储和显示的功能:用来定义Web页面显示的格式、布局和内容;用来定义数据库各字段设计、类似RDB中的表;每个表单包含域、静态文本、表格和操作按钮等 内容。,关于表单,表单是Notes 应用的基础,它们决定了数据在输入输出过程中的显示方式;在一定程度上决定了在数据库中信息是如何存储的。如果没有设
4、计漂亮的表单,就不会有精美的D o m i n o应用。如果你熟悉H T M L的表单,开始时你可能会被Lotus Notes 的表单弄糊涂。和H T M L表单一样, N o t e s的表单被用来从用户那儿获取信息(通常是通过可编辑的域)。和H T M L表单不一样的是,N o t e s的表单也被用来显示已经获取的信息。这些信息存储在称为文档的容器之中。当你打开一个N o t e s表单时,填写完信息,选择保存。此时,在数据库中保存一个新文档。这个文档中包含了一个F o r m域,它的值确认用来创建文档的表单名,当你打开文档时,这个表单被用来显示信息。文档是数据的一部分,表单是数据库设计
5、的一部分。这和一个数据库中的记录(称为数据)与表(称为基础组织)二者之间的关系相类似。在H T M L表单和N o t e s表单中,另一个不同的地方是访问的模式。在默认情况下,当你打开一个N o t e s文档时,它处于只读模式;读者所看到的都是在一个字处理器中创建的文档,不包含任何文本域或下拉列表。如果你将此文档改成编辑模式,则它有着明显的不同:可编辑文本域,下拉列表,以及其他元素都变得可见了,好像是在一个H T M L的表单之中。然而,你所见到的并非是一个表单,确切地说,你所看到的文档,是通过一个表单显示出来的。,表单与WEB,当你想通过Web来创建一个新文档时,你通过打开表单Open
6、Form URL命令打开一个适当的表单。例如,下面的U R L在example数据库中打开了personInfo的表单。http:/server/example.nsf/personInfo?OpenForm Domino将Notes表单转化成一个HTML表单以响应你的请求。当然,Notes客户端应用还可以使用表单的没有HTML等价的另外一些特征,这些特征并不能在Domino的Web应用中工作。 你可以通过提交表单来保存新文档。提交表单时会触发表单事件(通过一个CreateDocumentURL对象)。继而,Domino使用在CreateDecumentURL中指定的表单将信息从HTML表单传
7、输过来并保存在数据中。,表单中的设计元素,域(域的数据类型,类型,隐藏公式) 在表单和表单对象中使用HTML属性 计算文本 使用热点 在表单内使用H T M L WebQueryOpen和WebQuerySave $Return 域(表单中的特殊域) 在表单中使用C G I变量 表单和搜索,表单中的域,域用来输入、修改和显示存储在条目中的数据。,下面在开发工具中讲解,设计元素 域,域: 对域的理解:收集应用数据,类似RDB表结构中的字段设计;配合页面展示,类似web页面Form下各种input;配合控制文档权限,主要针对读者/作者两种类 型;特殊的保留域; 域的类型:文本、数值、时间、组合框、
8、单选框、读者、作者、RTF域等;,各种域类型区别介绍,域类型 何时变化计算型 当文档创建,存盘,刷新时计算,并保存在文档中显示时计算 当文档打开编辑,读或刷新时计算,不保存在文档中创建时计算 当文档被创建时,仅此计算一次,并保存在文档中。,WEB表单中的特殊域,$HTMLHead 包含在和标记之间的文本。在R4.6以后版本中可用HTML的Head属性 $NavigatorBody 在表单中嵌入的导航器名,在R4.6以后版本中可用“嵌入导航器” $Readers 使得文档仅仅只能在该域中或者其他类型的“读者”域中指定的用户阅读。可以包括用户名,群组和角色(将角色名包括在方括号内),例如:“Joe
9、Smith”:“Marketing”:“Reviewer” $Return 表单被递交时响应浏览者的文本;例如:“Thankyou”;你也可以根据表单的递交情况通过返回一个包含在方括号内的URL传递给浏览者一个URL资源,例如:http:/ SaveOptions 决定一个文档是否使用该表单保存的值:取默认值0时不保存。当递交按钮被设计成激活某些操作而不是创建文档时,这一点非常有用。例如,搜索或激活一个代理 SendTo 文档被邮寄时邮件接收人列表。相关的域包括CopyTo,BlindCopyTo和$ViewBody 表单中想要嵌入的视图名,在R4.6以后版本中可用“嵌入视图”功能$ViewL
10、ist在数据库中显示视图列表,在R4.6以后版本中可用嵌入文件夹功能,在表单中使用CGI变量,为了在域中捕获C G I变量,创建一个以C G I变量命名的文本域(例如, REMOTE _ ADDR)。一般地,在编辑状态下将该域设置为隐藏,这样用户就不能改变域中的值。当用户打开表单的时候, REMOTE _ ADDR环境变量的实际值变成了域中的默认值。下表显示了捕获C G I变量的表单。,设计元素 视图,Domino的核心元素、是重要的数据展示手段:通过指定选择公式确定要显示的文档;通过视图列公式指定要显示的字段;通过列属性指定排序,显示样式等;每个数据库至少要有一个视图类似RDB的视图,设计元
11、素 页面,Domino的重要元素、用于显示信息:可以包含图像、文本、大纲、表格、区段可以作为网页、图片、附件夹来理解,设计元素 子表单,Domino的重要元素、表单的辅助设计元素:可以包含域、静态文本、表格和操作按钮等内容不能保存文档,只能嵌入表单中使用可以从代码重用、可读、可修改性角度来理解,设计元素 帧结构集,Domino的重要元素、桢的容器:与桢配合使用、分割页面布局一般做为数据库进入的默认页面表现在web客户端上,就是FrameSet,设计元素 代理,Domino的核心元素,通过预先定义好的程序,用来实现应用逻辑复杂应用逻辑的主要实现手段可使用简单操作、公式、LScript、Java实
12、现,相当于三层模式中应用层和数据层的部分逻辑处理触发方式:页面触发、直接URL调用、时间触发、事件触发,设计元素 Script库,Domino的重要元素,存放可重用的脚本:一次编写、到处使用、集中管理、有些类似类库支持LScript、Java、Javascript三种类型代理中使用LS和Java,页面前端使用Javascript,设计元素 其他,帧:(frame)可以嵌入其他元素、如表单、页面、视图等大纲:主要应用于C/S开发导航器:主要应用于C/S开发文件夹:类似视图,但显示的文档来源不同,用于临时存放文档和排序共享资源:可共享的设计资源,包括图像、共享域、共享操作等,公式语言,概述Note
13、s自带的一种语言,包含一整套的语法规则,提供丰富的命令和函数。用它可以进行简单的逻辑控制,简单易用,代码简洁 。常用于设计元素的隐藏公式、域值的计算中。,公式语言基本语法,基本形式以开头的语句例如:TextToNumber 文本转成数值型Prompt 在客户端弹出确认对话框For 循环语句Platform 返回服务器平台信息DbTitle 返回当前数据库标题Created 返回当前文档的创建时间,公式语言基本语法,常量:文本、数值、时间 变量:域、临时变量 操作符: 关键字: 流程控制:if While DoWhile for 样例:Temp:=UserNameFIELD Status:=“1
14、”;REM,公式语言基本语法,两种类型:function类型: .()Command类型: Command() Command 函数执行一个 Notes 命令。由于这些函数数量众多,地位特殊,因此构成了一个独立的分类。 多数 command 模拟菜单命令。例如:command(FileCloseWindow) 退出当前窗口Command(FileSave) 保存当前文件,公式语言示例,文件操作Command(FileSave)、Command(FileCloseWindow) 、Command(FileExit)、SetField() 字符运算text()、contains()、right、
15、left()、Length()、TextToNumber() 文档查找Dblookup()、DbCloumn() 运行代理Command( ToolsRunMacro;agent) 取当前用户信息username() dbname() now() ClientType()*对于web开发而言,有部分UI相关的公式是无法使用的,LotusScript语言,Domino提供的一种嵌入式的脚本语言语法类似VB,是Basic的超集支持面向对象、Domino 文档对象模型OLE 支持 (automation server)与其他语言的协同能力使用LotusScript类库在B/S模式的应用开发中,用于完
16、成代理,Domino文档对象模型,LotusScript语言,变量定义和赋值 Dim a as string /定义一个字符串 Dim c as long /定义一个长整型变量 Dim doc as notesdocuemnt /定义一个notes文档 Dim db as notesdatabase /定义一个notes数据库a = “ABC” Set session = New NotesSession Set db = session.CurrentDatabase Set doc = session.DocumentContext ,LotusScript语言,控制程序流程 Dim a
17、as string /定义一个字符串 Dim c as long /定义一个长整型变量 Dim doc as notesdocuemnt /定义一个notes文档 Dim db as notesdatabase /定义一个notes数据库a = “ABC” Set session = New NotesSession Set db = session.CurrentDatabase Set doc = session.DocumentContext ,LotusScript语言,条件语句if then else end ifSelect Case Case : End Select循环语句Fo
18、r NextDo LoopDo While LoopDo Until LoopWhile Wend跳转语句Goto,常用语句,字符运算Str() Left( expr , n )Right( expr , n )Len(expr) 查找文档view.getdocumentbykey()set doc=view.getfirstdocument()while not doc is nothing.set doc=view.getnextdocument(doc)Wend,LotusScript vs 公式,公式执行速度快,代码方便、简洁,可以在Web开发上应用 LotusScript功能强大,逻辑处理能力强,但无法直接在Web上使用,练习,用计算域显示当前的时间和用户名 利用当前时间来表示当前日期 利用用户名来表示用户名的简称 文件关闭、文件退出按钮 利用dblookup来查找文档 利用dbloumn来显示视图上的分类,