转一篇文章,归纳总结的不错,共同学习:《Domino Web 开发规则》

转自:http://space.itpub.net/24998103/viewspace-695431

 

 

Domino Web开发规则

 

Domino Web开发规则之一:Notes命名规范

 

所有的设计元素的命名都分成两部分,名称和别名,规定名称用中文命名,别名用英文,别名尽量使用简写,以WEB开发时不会产生较长的URL为前提,提高HTTP Request的响应速度。中文名称前面加上字母AY用于组织分类和排序。表单和视图的别名统一在前面加一个空格,代理统一不加空格,其目的是保证在design下看起来对齐一致。

 

1.设计元素

元素

规则

说明

帧结构集

名称:中文名称
别名:"frms"+英文

样例:
启动帧结构集|frmsStart
内容帧结构集|frmsContent

名称:中文名称
别名:"frm"+英文

因为帧只存在于帧结构集中,所以不需要用字母来组织分类。
样例:
导航帧|frmNav
右边帧|frmRight

表单

名称:中文名称
别名:”fm”+英文(用于存贮)
别名:英文+”.html”(用于显示
)
别名:英文+”.xml”(用于显示
)
别名:英文+”.js”(用于动态JS)

样例:
申请表单|fmApply
主题表单|fmTopic


说明:
如果表单设计属于仅限于显示,如:
HTML\
查询结果|searchResult.html
XML\
查询结果
|searchResult.xml
JS\
扩展日期组件
|extCalendar.js
此显示类表单使用”?readform&login&<参数字符串>”打开。根据实际用途设置ContentType


注:任何需要动态生成显示内容时(页面呈现时,调用后台代码或复杂的公式设计),如:xml/js/json/html都可使用显示类表单完成。

视图

显示视图命名

名称:中文名称

别名:"vw"+英文["By"+排序关键字描述]

程序视图命名

名称:"("+中文名称+")"

别名:"vw"+英文["By"+排序关键字描述]

 

视图的命名与表单是一致的,视图中文名的组织字母与该表单一致,视图别名也与表单的别名的英文部分保持一致。

 

比如如果表单名为:申请表单|fmApply,那么对应的视图名称应该是"申请视图|vwApply"。如果对于一个表单可能有不止一个视图,经常用的情况是分类视图,对于此类视图,命名规范是名称:中文名称,别名:"vw"+英文+"By"+类别,

 

样例:

申请\按日期|vwApplyByDate

申请\按类别|vwApplyByType

(申请\按文档创建日期)|vwApplyByCreateDate

 

注:对于视图的列,如果没有强制性的排序要求,请确保所有的文档按创建时间降序排列,这样新文档才会在最前面显示(这个问题一定要注意)。

 

视图一般分为显示用视图和程序用视图。在开发时,公式或程序不要在显示用视图中进行操作,如查询,取值。应另创建程序视图提供公式或程序使用。这样不会造成视图设计发生改变时而影响公式或程序运行。

代理

名称:中文名称
别名:"ag"+英文

代理的命名也要与表单保持一致,其名称的中文组织字母与表单一样,在表单中经常要使用到QueryOpenAgentQuerySaveAgent,对应的代理应该是与其一致,比如表单"申请表单|fmApply",那么对应此表单的QueryOpenAgent应该是"申请打开代理|agApplyOpen",对应此表单的QuerySaveAgent应该是"申请保存代理|agApplySave",对于非上述两种情况的代理,不要加open或者save,尽量在代描备注中进行描述此代理作用。

对于所有的代理,如果不是真正意义的定时代理(需要服务器定时来运行),不要把代理属性设置成“定时”,如果设置成了定时可能存在一定的风险,并且在不同的系统打开进行编辑保存时,代理会自动去查找运行的服务器导致design半天不反应。

 

注:定时代理在多服务器布署时,如果代理所在数据库在多台服务器上存在复本,请指定定时代理运行的服务器,以免造成文档复制冲突问题。

子表单

名称:中文名称
别名:"sfm"+英文

只用于编辑类子表单

如果只用于编辑类子表单,别名应该为"sfm"+英文简称+"Edit"
如果只用于只读类子表单,别名应该为"sfm"+英文简称+"Read"

命名规范:前缀+英文,其中的英文如果数据字典有,则必须来自于数据字典,数据字典中没有的,可自行命名,但需要遵守数据字典中的命名要求。

除了保留域,规范如下:

 

单值文本类型:St+英文,样例:StTopic

多值文本类型:Mt++英文,样例:MtAuthor

单值数字类型:Sn+英文,样例:SnMoney

多值数字类型:Mn+英文,样例:MnMoney

单值日期类型:Sd+英文,样例:SdApply

多值日期类型:Md+英文,样例:MdApply

RTF类型:Rtf+英文,样例:RtfRemark

 

注:和sap集成的域值可以参考sap参数表的定义,可不严格遵守上述域值定义规则。

角色

角色的命名限制:不能超过10个英文字母。

不要用中文命名。

不要用过多的角色,正常情况下一个库5个以下的角色,删除无用的角色常用角色:ManagerNormalAllReader

 

 

Domino Web开发规则之二:DOMINO与开发相关的管理规范

1.服务器HTTP优化设置

·        调整活动线程数,HTTP服务器可以同时处理的请求数,而非连接数、会话数

·        并发运行Web代理

·        HTTP线程排队方式的调优

 

·        JavaMaxHeapSize的设置

 

·        建议升级至6.5.6/7.0.2以上版本,就可以使用下面参数来优化HTTP私有内存的使用。

INotesThreadMemoryGivePoolsBack=1

·        HTTP编辑输出使用utf-8,这是为了在多编码环境中时避免客户机与服务器环境不一致造成程序编码问题。

2.数据库ACL权限控制

建议ACL权限缺省为

条目

类型

权限

Anonymous

未指定

不可存取

-Default-

未指定

编辑者

创建文档权限
删除文档权限(根据应用开发需求,可选)

LocalDomainAdmins

个人群组

管理者

创建文档权限
删除文档权限

LocalDomainServers

服务器群组

管理者

创建文档权限
删除文档权限

OtherDomainServers

服务器群组

不可存取

<当前数据库所在服务器名称>

管理服务器

管理者

创建文档权限
删除文档权限

3.WEB应用数据库属性设置

启用不维护未读文档标志

启用优化文档表格映射

启用取消事务日置”(如果布署服务器的环境启用了事务日志,按当前情况而定)

启用不支持答复文档层级”(如果此数据库使用了答复文档,而不启用此项)

启用允许更多的域

启用允许压缩数据库设计

修改$UpdateBy域条目限制,建议值为5

修改$Revisions域条目限制,建议值为5

具体设置如下图:

 

Domino Web开发规则之三:以资源管理库为中心开发

 

资源管理数据库以管理公用设计元素为主,作为应用系统的框架提供给应用模块开发使用。主要有以下功能:

 

•管理和存放产品类模块(包括核心和标准应用)所需要的HTML模板/JS/CSS/XML/XSL/图片/控件等。如:公共JS函数库、皮肤所需的CSS和图片以及各模块公共使用的图片或图标等;

•存放公共子表单/Web公共组件/WEB应用接口/公共LS类库,如:公用子表单、组织机构选择人员对话框以及核心LS类库或JAVA类库等;

•管理数据字典,统一维护,减化重复开发工作;如:下拉列表框中值的选择;

基于此方法管理,能够

 

•有助于开发团队间共享项目成果,

•有助于从各个项目积累/封装出优秀代码或组件提供以后项目使用,

1.Web元素管理

 

使用文档管理WEB元素如:HTML模板/JS/CSS/XML/XSL/图片/控件,在产品开发或项目实施时调用。这样有助于应用开发时的变更/维护。如下图:

JS

CSS

图片/控件/FLASH组件/HTML模板

 

对于产品核心类的图标或通用的小图标(不经常修改的)而存放于图片资源中,供产品和项目开发时使用,如下图:

2.分类字典管理

统一由资源库管理分类字典,可以统一进行维护,不必再为每个应用模块的需要而定制简要表,而且各应用间可共享分类设置。方式如下图:

3.Web组件

统一由资源库管理封装公用组件,供应用模块调用。如:公用从视图删除指定文档的代理、AJAX方式的DBLookup代理、组织机构人员选择框、日期选择器、WORD控件JS片断、意见填写对话框等等。

由于每个应用模块都使用在资源库的WEB组件,当WEB组件功能修改或升级时,只需要修改资源库中的WEB组件,而不需要对每个库进行修改。这样有利于版本的维护和功能的更新,有助于团队提高开发效率。

4.公共子表单(sfmCommandFields)

域名

缺省值公式

描述

Notes部分

RF_ServerName

@ServerName

类型:姓名,显示时计算
显示当前所在服务器名称

RF_User

@UserName

类型:姓名,显示时计算
显示当前用户的Notes名称

RF_UserCN

tmpName:=@NameLookup([NoUpdate];RF_User;"displayname");

@If(tmpName=""|@IsError(tmpName);@Name([CN]; RF_User);tmpName)

类型:姓名,显示时计算
显示当前用户的中文名

如果布署时使用了等价名时可以使用@UserName(1)代替,使用@NameLookupDOMINO集成了ADSLDAP时使用。此缺省公式可按情况而定

RF_DocStatus

@IsDocBeingEdited

类型:姓名,显示时计算
当前文档状态

RF_CreateUser

@UserName

类型:姓名,创建时计算
当前文档创建者

RF_CreatedTime

@Created

类型:日期,创建时计算
当前文档创建时间

RF_ResFilePath

"VResource.nsf"

类型:文本,显示时计算
公共资源库路径

RF_OrgFilePath

"VOrgManage.nsf"

类型:文本,显示时计算
组织机构库路径

RF_PortalFilePath

"VPortal.nsf"

类型:文本,显示时计算
首页配置库路径

RF_WfFilePath

"VWfManage.nsf"

类型:文本,显示时计算
流程管理库路径

RF_DBPath

@ReplaceSubstring(@Subset(@DbName; -1);"\\";"/")

类型:文本,显示时计算
当前数据库路径

RF_FilePath

@LeftBack(RF_DBPath;"/")

类型:文本,显示时计算
当前数据库所在目录

RF_FileName

@Right(DF_DBPath;"/")

类型:文本,显示时计算
当前数据库文件名

RF_DBID

@LowerCase(@ReplaceSubstring(@ReplicaID;":";""))

类型:文本,显示时计算
当前数据库ID

注:只支持R6以上版本,如果是R5版本可使用计算RF_DBPath

RF_ClientType

@ClientType

类型:文本,显示时计算
当前客户端类型

RF_UNID

@Text(@DocumentUniqueID)

类型:文本,显示时计算
当前文档UNID

Web部分

RF_ResURL

"/"+RF_ResFilePath+"/"

类型:文本,显示时计算
资源数据库URL

RF_DBURL

"/"+RF_DBPath+"/"

类型:文本,显示时计算
当前数据库URL

RF_DocURL

RF_DBURL +"0/"+RF_UNID+"?opendocument"

类型:文本,显示时计算
当前文档URL

Query_String_Decoded

Query_String_Decoded

类型:文本,显示时计算
URL
参数解码

Server_name

Server_name

类型:文本,显示时计算
服务器的宿主名称、DNS别名或IP地址,将出现在自引用的URL

HTTP_Referer

HTTP_Referer

类型:文本,显示时计算
HTTP
页面引用路径

Remote_Addr

Remote_Addr

类型:文本,显示时计算
发出请求的远程主机的IP地址

REMOTE_USER

REMOTE_USER

类型:文本,显示时计算
返回被验证的用户名

Path_Info

Path_Info

类型:文本,显示时计算
附加的路径信息(相对于服务器的HMTL根目录),与客户机给出的相同。换句话说,Script.可以通过虚拟路径名称存取,后面是作为PATH_INFO发送的附加信息

此子表单做为表单必需子表单,提供这些域供JS、公式和LS方便使用。在开发时将此子表单拷贝至所需要开发的数据库。

 

5.公共函数库(LotusScript:LSCore)

 

LS存放公共函数,此类函数或过程与应用模块无关(包括产品应用/项目应用模块),完成从产品核心代码角度上考虑,弥补LotusScript功能上不足之处,以产品核心为中心积累公共函数,供产品应用和项目应用使用,做为代码基础调用的统一接口。

 

存放在此类的函数或过程由产品部统一规划及严格控制。

 

封装完成后,将所有代码引出至文本文件中,使用%include引用进行预编译。

 

6.工作流函数库(LotusScript:LSWorkFlow)

 

LS存放处理工作流相关函数和过程,此类函数或过程被相关联的代理调用,完成工作流引擎上的处理。供产品应用和项目应用使用,做为代码调用工作流功能的统一接口。

 

此函数库以LSCore为基础。在构建时使用LSCore,即在Options中加入

 

Use “LSCore”

 

存放在此类的函数或过程由产品部统一规划及严格控制。

 

封装完成后,将所有代码引出至文本文件中,使用%include引用进行预编译。


译者序 前言 第1章 Domino Web开发综述 1 1.1 为什么使用Domino 1 1.2 Domino是怎样运行的 1 1.2.1 Domino与传统数据库的区别 1 1.2.2 DominoWeb 2 1.3 开发部件 2 1.4 其他工具 3 1.5 简单的Domino Web软件例子 10 参考信息 14 本章小结 14 第2章 使用表单 16 2.1 关于表单 16 2.2 在表单中使用公式 17 2.2.1 数组和多值域 18 2.2.2 公式的类型 18 2.2.3 例子:一个组合框域 20 2.2.4 例子:$$Return域的公式 22 2.3 在表单中使用Web元素 22 2.3.1 嵌入Web元素 22 2.3.2 创建特殊用途的模板表单 22 2.3.3 例子:在$$View Template Default 表单中嵌入导航器 23 2.3.4 例子:动态嵌入式导航器 24 2.4 在表单和表单对象中使用HTML属性 25 2.4.1 标记的例子 26 2.4.2 例子:RTF文本域的属性 27 2.4.3 例子:cookie 27 2.5 使用表单操作按钮 28 2.6 使用热点 30 2.7 在表单内使用HTML 31 2.7.1 例子:单个类视图 31 2.7.2 例子:显示附属图形文件 36 2.7.3 例子:把文本域显示为文本区域 39 2.8 在表单中使用CGI变量 40 2.9 表单和搜索 42 2.9.1 定制视图搜索表单 43 2.9.2 例子:定制搜索界面 44 2.9.3 定制Site Search表单 47 2.9.4 定制Search Results表单 47 2.9.5 例子:对搜索结果表单的定制 48 2.10 定制表单提交按钮 49 2.11 使用隐藏域 49 2.12 把RTF文本显示为一个小应用程序 50 参考信息 51 本章小结 51 第3章 使用视图进行工作 54 3.1 关于视图 54 3.2 视图和Web 55 3.3 使用选择公式 56 3.4 使用视图列公式 57 3.5 使用表单公式 57 3.6 使用视图图标 58 3.7 创建视图操作按钮 59 3.8 使用单个类视图 60 3.9 在视图中使用HTML通用文本 62 3.9.1 改变行的格式 63 3.9.2 在视图中显示Java小应用程序和图像 63 3.9.3 HTML通用文本 64 3.9.4 改变视图连接的动作 66 3.9.5 控制视图连接的另外一种方式 68 3.9.6 例子:在视图中使用java Script 68 3.10 在表单中使用视图 70 3.10.1 在表单中嵌入视图 70 3.10.2 创建视图模板 70 3.10.3 例子:使用表单在视图中添加 功能 71 3.10.4 例子:使用视图在表单中添加 功能 73 3.10.5 例子:创建多个类的视图 76 3.11 在小应用程序表单中显示一个视图 79 参考信息 80 本章小结 80 第4章 使用帧结构、大纲和其他设计 元素 82 4.1 简介 82 4.2 在帧结构中设计 82 4.2.1 帧的不利之处 83 4.2.2 使用帧结构集设计元素 84 4.2.3 使用<FRAMESET>标签 88 4.3 使用大纲 94 4.3.1 同时使用帧和大纲 95 4.3.2 显示大纲小程序 97 4.4 使用其他的设计元素 97 参考信息 101 本章小结 101 第5章 编写JavaScript 103 5.1 简介 103 5.2 开始编写JavaScript 104 5.3 把JavaScript添加到Domino的表单中 106 5.4 验证域:Expense Report表单 107 5.5 计算域的值:Expense Report表单(续) 109 5.6 显示域相关的帮助 110 5.7 控制帧的使用 112 5.8 填充动态列表框 114 5.9 例子:动态下载图像 117 5.10 例子:在一个滚动按钮中预先下载 图片 119 5.11 例子:显示对话框 121 5.11.1 Order Form表单 123 5.11.2 Select Pa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值