转一篇文章,归纳总结的不错,共同学习:《Domino Web 开发规则》
2012-11-15 11:34
441 查看
转自:http://space.itpub.net/24998103/viewspace-695431
Domino Web开发规则
Domino Web开发规则之一:Notes命名规范
所有的设计元素的命名都分成两部分,名称和别名,规定名称用中文命名,别名用英文,别名尽量使用简写,以WEB开发时不会产生较长的URL为前提,提高HTTP Request的响应速度。中文名称前面加上字母A到Y用于组织分类和排序。表单和视图的别名统一在前面加一个空格,代理统一不加空格,其目的是保证在design下看起来对齐一致。
1.设计元素
Domino Web开发规则之二:DOMINO与开发相关的[b]管理规范[/b]
1.服务器HTTP优化设置
· 调整活动线程数,HTTP服务器可以同时处理的请求数,而非连接数、会话数
· 并发运行Web代理
· HTTP线程排队方式的调优
· JavaMaxHeapSize的设置
· 建议升级至6.5.6/7.0.2以上版本,就可以使用下面参数来优化HTTP私有内存的使用。
INotesThreadMemoryGivePoolsBack=1
· HTTP编辑输出使用utf-8,这是为了在多编码环境中时避免客户机与服务器环境不一致造成程序编码问题。
2.数据库ACL权限控制
建议ACL权限缺省为
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)
此子表单做为表单必需子表单,提供这些域供JS、公式和LS方便使用。在开发时将此子表单拷贝至所需要开发的数据库。
5.公共函数库(LotusScript库:LSCore)
此LS存放公共函数,此类函数或过程与应用模块无关(包括产品应用/项目应用模块),完成从产品核心代码角度上考虑,弥补LotusScript功能上不足之处,以产品核心为中心积累公共函数,供产品应用和项目应用使用,做为代码基础调用的统一接口。
存放在此类的函数或过程由产品部统一规划及严格控制。
封装完成后,将所有代码引出至文本文件中,使用%include引用进行预编译。
6.工作流函数库(LotusScript库:LSWorkFlow)
此LS存放处理工作流相关函数和过程,此类函数或过程被相关联的代理调用,完成工作流引擎上的处理。供产品应用和项目应用使用,做为代码调用工作流功能的统一接口。
此函数库以LSCore为基础。在构建时使用LSCore,即在Options中加入
Use “LSCore”
存放在此类的函数或过程由产品部统一规划及严格控制。
封装完成后,将所有代码引出至文本文件中,使用%include引用进行预编译。
Domino Web开发规则
Domino Web开发规则之一:Notes命名规范
所有的设计元素的命名都分成两部分,名称和别名,规定名称用中文命名,别名用英文,别名尽量使用简写,以WEB开发时不会产生较长的URL为前提,提高HTTP Request的响应速度。中文名称前面加上字母A到Y用于组织分类和排序。表单和视图的别名统一在前面加一个空格,代理统一不加空格,其目的是保证在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"+英文 | 代理的命名也要与表单保持一致,其名称的中文组织字母与表单一样,在表单中经常要使用到QueryOpenAgent和QuerySaveAgent,对应的代理应该是与其一致,比如表单"申请表单|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个以下的角色,删除无用的角色常用角色:Manager、Normal、AllReader |
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 | 服务器群组 | 不可存取 |
<当前数据库所在服务器名称> | 管理服务器 | 管理者 创建文档权限 删除文档权限 |
启用“不维护未读文档标志”
启用“优化文档表格映射”
启用“取消事务日置”(如果布署服务器的环境启用了事务日志,按当前情况而定)
启用“不支持答复文档层级”(如果此数据库使用了答复文档,而不启用此项)
启用“允许更多的域”
启用“允许压缩数据库设计”
修改$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)代替,使用@NameLookup是DOMINO集成了ADS或LDAP时使用。此缺省公式可按情况而定 |
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发送的附加信息 |
5.公共函数库(LotusScript库:LSCore)
此LS存放公共函数,此类函数或过程与应用模块无关(包括产品应用/项目应用模块),完成从产品核心代码角度上考虑,弥补LotusScript功能上不足之处,以产品核心为中心积累公共函数,供产品应用和项目应用使用,做为代码基础调用的统一接口。
存放在此类的函数或过程由产品部统一规划及严格控制。
封装完成后,将所有代码引出至文本文件中,使用%include引用进行预编译。
6.工作流函数库(LotusScript库:LSWorkFlow)
此LS存放处理工作流相关函数和过程,此类函数或过程被相关联的代理调用,完成工作流引擎上的处理。供产品应用和项目应用使用,做为代码调用工作流功能的统一接口。
此函数库以LSCore为基础。在构建时使用LSCore,即在Options中加入
Use “LSCore”
存放在此类的函数或过程由产品部统一规划及严格控制。
封装完成后,将所有代码引出至文本文件中,使用%include引用进行预编译。
相关文章推荐
- 如何学习 cocos2d-x ?(非常不错的一篇文章)
- 剑侠情缘(网络版)---开发回顾(一篇老文章,看看也不错)
- 收集一些关于Visio二次开发经典的文章,共同学习
- 剑侠情缘(网络版)---开发回顾(一篇老文章,看看也不错)
- 【iOS-Cocos2d游戏开发】系列(总结了多篇文章,可以好好学习 )
- Makefile详解--学习linux下Gtk开发看到的一篇详细的讲解Makefile的文章,转来分享
- 一篇不错的介绍Java Socket编程的文章-Java基础-Java-编程开发
- Maven、Webx、Velocity学习总结(很好理解的一篇文章)
- 国内外加密算法比较---感觉总结不错的一篇文章
- 【C++学习】指针数组,数组指针,以及函数指针,以及堆中的分配规则--有是一篇好文章,收到自己门下 慢慢学习
- 收集一些关于Visio二次开发经典的文章,共同学习
- 一篇关于正则表达式学习的非常不错的文章
- 看到一篇很有感触的文章,转载过来,希望更多的技术开发人员能有所得 ----五年软件开发的一点自我总结
- iOS开发和学习中积累的一些经验总结提炼整理文章001——自定义Cell
- 转一篇介绍开发嵌入式经验的文章,写得不错,比较中肯,适合一看。
- 看到一篇很有感触的文章,转载过来,希望更多的技术开发人员能有所得 ----五年软件开发的一点自我总结
- 转一篇介绍开发嵌入式经验的文章,写得不错,比较中肯,适合一看。
- 【iOS-Cocos2d游戏开发】系列(总结了多篇文章,可以好好学习
- 一篇动态规则学习的文章
- 转一篇介绍开发嵌入式经验的文章,写得不错,比较中肯,适合一看。