版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
NOTES最大化企业IT建立可重用设计 ApplicationDevelopmentBestPractice R5ApplicationDevelopmentBestPractice DevelopingInteractiveWebApplications DominoNOTESHelp(R4.63,help4.nsfNOTES(第二版本规范总则的内容包括:NOTES适用范围、ACL、视图、表单、数据库(其他设计元素)、Formulas&LotusScript、应用结构、命名、注释与文档、WEB端访问等。本规范总则的示例都以Notes4.63规则:编程时强制必须遵守建议:编程时必须加以考虑说明示例仅供内部使仅供内部使 1NOTES234表单(子表单56FORMULAS&78910WEB11NOTES仅供内部使仅供内部使 1NOTES¹1-1:选择NOTES为平台的应用必须是适合在NOTESNotes于处理定性(非定量)(以及诸如表格、简报等外部数据)管理应用.(如客户/约会管理等)(如费用申请流程、设备申工作状态追踪系统(如销售跟踪(如预定飞机票、银行交易(如建模和模拟系统(如总帐(Notes没大数据量的应用须频繁维护多个文档须多人并发编辑同一记录/(LotusNotes在一些情形下,用区段、域级复须发布在网络的多台服务器上,复本有非常复杂的安全要求的应用.这类应用须进行额外的分析来判断环境是否能满足所有的安全性安全LotusNotes是企业开发和配置群件应用的首选客可以共享知识,协同工作从而提高工作效率的软件Notes使人们可以通过多平台(Windows,OS/2,UNIXandMacintosh)访问,跟踪,共享,组织信息.用——业务流程应用22仅供内部使仅供内部使 2¹2-1:ACL中出现的个人/服务器/工作组的用户类型应正确指定。除“-Default-"、“Anonymous"¹2-2:出现在ACL中的用户和服务器必须用全名(层次名)¹2-3:在ACL¹2-3:如非特别的安全性要求,不要在ACL中设置“所有的复本采用一致的ACL”¹2-4:设置一个管理员角色“[supervisor]”,将该角色正确授予给相应的个人/服务器。保证该角:)Notes将会把选定的存取级别指定给那*/huawei,代替huawei况,并指出了Notes将如何解决这种冲突。列表中(ACL)ACL中,同时又出现在与表单、视图或ACL是整个数据库存取权限的基础,而数据库部分单元33仅供内部使仅供内部使 3¹3-1¹3-2¹3-3(其中不能含有中文字符)。在修改设计时,不要更改别名。¹3-4说明:视图索引大小可粗略表示为:(文档数)*(列数)*(列对应域的文本字节数¹3-5容量将增大,视图打开和刷新速度将变慢。同时会降低视图导航及文档检索的速度。¹3-6:刷新数据库的索引很占时间,在不危害到应用的完整性的情况下,要尽可能的降低刷新(如@NOW@TODAY),则每次打开视图时均需重新计算。视图的选择条件中尽量不要使用@Now,@Today等时间函¹3-7:遵循合适的数据库管理方法,定时压缩数据库,清除其中文档删除后的残余部分(Stub)| 仅供内部使仅供内部使 4表单(子表单¹4-1:每个(子)表单同时给出一个别名(其中不能含有中文字符)。在修改设计时,建议尽¹4-2:(子)¹4-3:控制域(包括读者域、作者域、区段、姓名域)域值:无论是缺省值、计算值,涉及到个人ID时,均应采用全名(FullName),或用ACL中设立的角色,不能用普通名(Common全名包括规范(FULLYCANONIZED)格式(如:CN=zhangshan12345/OU=OP/O=huawei)、简写(Abberiated)格式(如zhangshan12345/op/huawei).普通名(CommonName)格式为:zhangshan12345¹4-4:重要时间域的值(如文档创建、修改时间;审批时间等)Lotusscript中NotesDatabase及NotesDocument的Created¹4-5说明:简要表在一个数据库会话过程中第一次使用后,就驻留在NOTES客户端工作站的½4-2说明及示例:大的表格,尤其时其中含有可编辑域的大表格,在通过或WEB客户TAB格式的区域中,而不要直接用表格。或者,如果你真的需要O大表格,你也应该把它分成多个小的表格。5个10*10(行*列的表格的存取速度是一个50*10的表格的2计算型子表单——使用对话DimwAsNewNotesUIWorkspaceDimuidocAsNotesUIDocumentDimdocAsNotesDocumentDimbodytextAsDimxAsInteger,yAsIntegerDimasciichrAsIntegerSetuidoc=w.currentdocumentSetdoc=uidoc.documentbodytext=y=Forx=1ToLen(bodytext)asciichr=Asc(Mid(bodytext,x,1)) asciichr=9Or asciichr=10Thencellnumber=cellnumber+1Messagebox("Cell"&Str(cellnumber)&"contains"""&Mid(bodytext,y,x-y))&""""y=x+1EndIfNext计算型的PassthruHTML表格——表格中的数据不可编辑时,Dominoweb中创建一个嵌入对象或Java小程序。同域值交换(Notes/FX)、LotusScriptOLE编程、或者Java和JavaScript配合使用,嵌入对象或小程序的值可提取到NOTES文档中进行合法性NorthRailroad|NSouthRailroad|EastRailroad|EWestRailroad|W½4-5 仅供内部使仅供内部使 5说明:避免个人职务、个人名称、组织(或组织单元)验证字名称、层次、服务器名、-Script库\数据库Script、各事件函数中的公式、Script表单(子表单各设计元素(视图事件函数、视图选择公式、操作及其隐藏公式、列公式)视图属性中“可被下列人员使用各设计元素(按钮、热点、文本对应的事件函数)中的公式RecommendedKeyworddatatypefieldcontainloadingofanotherdatabase'sviewusingsimpleaction.FieldType: Keywords,EditableChoices:UseViewdialogforchoicesInterfacestyleDialoglistFrame-3DConverttomacroformulathatuseslocationprofiletoloaddestinationdatabase'sview.(实现方式请查看附录Hardcodingofdominoservernametoloadanotherdatabaseonthedominoserver.Setdb1=NewConvertmacroformulatouselocationprofiletoloaddestinationdatabase.(实现方式请查看附录Hardcodingofdominoservernametoloadanotherdatabaseonanotherdominoserver.Setdb1=NewUsernamevalidationcheckusingoldorganizationalhierarchyvalue.PurposeofthischeckistomakesurethattheusernameenteredisavalidnotesusernameforIfRight(stocker,7)<>"/huawei"Calldoc.Send(False)EndIfsendto1=""|@Right(sendto1;"/")!="O=huawei";@Do(...);@SuccessRemovethosehardcodedscriptscodingwiththefollowingsamplecodethatdoacheckagainstmailingfunctionbeforeproceedtoexecutetherestoftheSetusername=NewNotesName(doc.Stocker(0)Ifusername.IsHierarchicalThen'**HierarchicalnamesEndIfblnFlag=doc.Send(False)Then'**MailsendingEndREM"Checkwhetherfield'scontentishierarchicalnamesformat?";@If(@Name([O];stocker)="";@Do(...);@Do(...REM"Checkwhethermailisabletobesentout?";@IsError(@MailSend(Stocker;"";"";Subject;@Do(...);@Do(...CommonmistakeforlotusscriptsandmacroformulatouseusercommonnamewhencomestostoringvalueintoAuthors,Readers,NamesandSectioncontrolledarray_names(1)=monusernamearray_names(2)="[xxx]"array_names(3)=Setitem=NewNotesItem(doc,"Readers",array_names,READERS)ShouldchangetouseabbreviatedorcanonicalizeusernameformatinlotusscriptsandmacroformulawhencomestostoringvalueintoAuthors,Readers,NamesandSectioncontrolledfield.array_names(1)=session.usernamearray_names(2)="[xxx]"array_names(3)="[yyy]"Setitem=NewNotesItem(doc,"Readers",array_names,READERS)Hardcodedusernameinfield'sdefault,translation,validationandvalueformulastub.Thishardcodedusernameisbeingusedinapplicationworkflow."wangwei1525/huawei":"lihongzhen0425/huawei":"hexiaoli2832/huawei":"liuyangRecommendedwayistolookupeachapprovalusernamedynamicallyjustbeforethesubmissionofrequesttoanotherlevelofpeople.Thisconditionwouldhelptocountertheproblemofpeoplemovement,especiallyapprovallevelmanagementpersonnel,inanHidewhenformulainformishardcodedwithuserHideWhenFormula@Name([CN];@UserName)!="zhangshan12345"Recommmendedwayistohaveallthistypeofhardcodingremovedandchangethemwithdatabaserolesname.HideWhen@Member("[rlsysadmin]";@UserRoles)=AvoidusingLotusScripts'sNotesACLEntryclass"GetEntry"functiontogetextractuserroles.Undernormalcircumstances,thisisnotwrong,however,onceusernamechangeindatabaseACL,theextractionmightnotberight.Lookatthefollowingsample.FunctionHasRole(personAsString,roleAsString)AsDimsAsNewNotesSessionDimaclAsNotesACLDimentryAsDimnmAsNewHasRole=TryusingLotusScripts's"Evaluate"functionwithacombinationwithmacroformula"@UserRoles".Thiscombinationallowextractionofuserrolesincurrentdatabaseforanynotesuser,whethertheyareusingflatorhierarchicalnotesusername.FunctionHasRole(personAsString,roleAsString)AsDimnmAsNewSetacl=Setentry=acl.GetEntry(mon+"/"+GetParametreStr("GroupOName"))IfentryIsNothingThenExitFunctionForallrlInentry.rolesIfrl=roleHasRole=TrueExitForallEndIfEndForallEndHasRole=array_userroles=Evaluate("@UserRoles")Ifarray_userrolesIsNothingThenExitFunctionEndIfForallrlInarray_userrolesIfrl=roleThenHasRole=TrueExitForallEndIfEndForallEnd附录Findlookupcodethataccesswithindatabase.Changehardcodedserveranddatabaseinformationwith@DbNamefunction.OriginalCode:-\\sales.nsf";"ByAuthorName";2)ChangedCode:-@DbColumn("":"NoCache";@DbName;"ByAuthorName";2)FindlookupcodethataccessdestinationRemovehardcodedlookupcode.Placeindynamiclookupcode.
UsingDatabaseIdentifiertolookupfordestinationdatabaseinformation
AccessLocationProfilefordestinationapplicationdatabaseinformationLocationCurrentCurrentDestinationServerDestinationPath&DatabaseName
UsingretrieveddatabaseinformationtolookupfordestinationdatabasedataInformationretrievedbylookupfunctions
Data一个用于记录位置的表单(外连数据库|DestDb),包含三个域:目标服务器:DestDbServer一个可见的设置视图(按关键字分类排序):外连数据库|一个隐藏的视图(按关键字分类排序):(外连数据库(两个视图均含以下三列:数据库标志号,目标服务器,目标数据库路径及文件名SampleCode-NotesREMtDbID:=tView:=REM"RetrieveLocationProfiletDestSvr:=@DbLookup("":"NoCache";@DbName;tView;tDbID;2);tDestDb:=@DbLookup("":"NoCache";@DbName;tView;tDbID;REM"Lookupfordestination@DbLookup("":"NoCache";tDestSvr:tDestDb;"ByAuthorName";"Thomas";SampleCode-Setsession=NewSetdb_this=Setview_this=db_this.GetView("LsvLocationProfile")'**Getcurrentdatabase'slocationdocumentviewExit
strLookupKey=Setdoc_this=view_this.GetDocumentByKey(strLookupKey,True)'**GetlocationdocumentIfdoc_thisIsNothingThenPrint"LocationprofiledocumentcouldnotbefoundEndstrServer=doc_this.DestDbServer(0)'**GetstoredserverstrDatabase=doc_this.DestDbPath(0)'**GetstoredpathanddatabaseSetdb_sts=session.GetDatabase(strServer,strDatabase)'**GetSTS½5-1½5-2½5-3“NOTES通用模块库”½5-466仅供内部使仅供内部使 6FORMULAS&¹6-2:充分考虑到查询函数@Dblookup、@DbCommand、@DbColumn对应用效率的影响。说明:当你的应用中要使用@DbColumn,@DbComand,and@DbLookup要考虑以下几点:¹6-3:确保那些须花费时间进行计算的函数如查找函数,只在必要的时候进行计算。将这些函¹6-4:在LotusScript说明:将变量指定为显式类型比指定为一般类型,代码编译速度更快。操作整数时尤其source.AutoReload=½6-3:尽可能使用GetNextDocument函数代替函数,随着循环的进行,性能将逐步降低。对于一个大的NotesView/NotesDocumentCollection对象使用GetNthDocument函数将降低性能。相反,用GetFirstDocument/GetNextDocument函数,性能会有改善。:尽可能用循环代替说明:For循环比Do循环运行更快FragmentFory=1to15000FragmentBLoopWhiley<=Fragmentfori=1to100sum=sum+x(i)FragmentBfori=1to100A比程序B的运行速度快Fragmentfory=0toforq=0to5000FragmentBforq=0to5000fory=0to2例FragmentIf(Asc(x$)=FragmentIf(Left$(x$,1)=例FragmentIf(Asc(Mid$(x$,1,1)=FragmentIf(Mid$(x,1,1)=ExampleFragmentIf(Len(x$)=FragmentIf(x$=½6-8,再对其中每条记录进行操作.这样会比每次只读一行速度要快.Fragmentj=Instr(i,buffer$,If(j<>0)Theny$(myindex)=Mid$(buffer$,i,j-i)y$(myindex)=Right$(buffer$,Len(buffer$)-EndIfLoopWhile(i<len(buffer$))AndFragmentInput#1,myindex=myindex+LoopWhileeof(1)=½6-9:简化Ififa=xandifa=xthenif:有关Forall引用数组的元素——对于一维数组Forall比For快75%,对于二维数组,要回一个浮点数。所以如果你不想得到一个浮点值,就须用“\”进行整数除法。77仅供内部使仅供内部使 7—支持更多的用户数/扩展容量/支持更多的用户数/扩展容量/限为512MB3000(NOTESR4.X中是用一个名为UNK¹7-3¹7-4:应有合适的归档或清除过时文档的方式,保证数据库的容量不超过2GB示例:如果一个应用要求所有的用户都能即刻看到所作的修改,而现有的架构中用户分让所有的用户都能访问。或者你得回头看看这个需求本身是否合理、能否改变为“所有的用户在4小时内看到所做的更新。并发用户数不超过50088仅供内部使仅供内部使 8¹8-1扩展名全采用小写字符形式,即数据库为.nsf,数据库模板为½8-1按部门,文件名中以部门名为前缀,如Nwfxxxx.nsf按应用的性质,文件名中以应用性质为前缀,如Newsxxxx.nsf½8-2:视图/文件夹、表单/文档表单(df),如(sf),sfSubformjavascriptsjscrpt_XXXXXjava代理,如java_XXXXX½8-3:视图名(非别名)integer变量string/textstrXXXXlong变量lngXXXXboolean变量blnXXXXvariant变量vrtXXXXReferstothedataassociatedwiththecurrentdocumentTheparentofthecurrentAchildofthecurrentAprofiledocumentfromwhichyouareretrievingprocessingparametersUseifyouareworkingwithinonecollectionandyouneedtogetthecollectionofresponsestothecurrentAnalternativetousingthevariablename Useifyou'reusingchildastheNotesDocumentobjectvariable.date1,UsetocompareforcomparingvariousAlreadyanargumenttotheformevents--usingthisnamekeepsyourscriptsTouse,setuidoc=sourceinPostOpen.Thenyoucanusethisobjectvariableinfieldandactionscriptsintheform.99仅供内部使仅供内部使 9¹9-1:每个数据库都要包含内容较完整的“关于此数据库”和“使用此数据库”“关于此数据库”“使用此数据库”¹9-2¹9-4:一般情况下,Formulas或LotusScript程序有效注释量必须在20LotusScript函数的注释比较标准,当然,并不局限于此格式,但上述信'Function: //函数名称'Description: //函数功能、性能等的描述'Calls: //被本函数调用的函数清单'CalledBy: //调用本函数的函数清单DocumnetsAccessed://被访问的文档(此项仅对于牵扯到数据库操作的程序Documents //被修改的文档(此项仅对于牵扯到数据库操作的程序 // // // //'¹9-7DimintMaxAsInteger'**'**Variabletocontainuser'sname(canonicalizeformatDimstrFullNameAs¹9-9:对分支语句(条件分支、循环语句等)¹9-10Subexample_fun('codeonecommentsCodeBlock'codetwocommentsCodeBlockTwoEndSubexample_fun('codeonecommentsCodeBlockOne'codetwocommentsCodeBlockTwoEnd½9-2:'ifSendFlagisTRUEif(SendFlag)then'ifmsgwaswassentsuccessfullyif(receive_flag)then½9-3ifnotviewisnothing//programifnotdocisnothing//programEndIf'**endof(ifnotdocisnothing)EndIf'**endof(ifnotviewisnothing)10WEB10WEB仅供内部使仅供内部使 10WEBWebNotes函 注释 仅支持@DbCommand("Domino";"ViewNextPage")语法@DbCommand("Domino";"ViewPreviousPage")语法来ENVIRONMENT关键字
(CGI)环境变量,使用预定义的域名称来收集有关Web用户环境的信息。用户平台的 仅返回服务器平台使用@ClientType区别Web和为了根据用户类型(WebNotes用户)编写公式,对于计算子表单、热点、操作Web@ClientTypeNotes用户返回“Notes”,对于Web用户返回Web。Web;因此,缺省值的公式不能引用“视图中的选定文档”避免使用@Now和避免依赖基于时间的值(@Now@DocumentUniqueID),@Unique@DocumentUniqueID并且计算额外值(例如增量整数)在@DbLookup和@DbColumnDomino不允许通过服务器名称进行查询。服务器参数必须是一个空字符串或是复本标识NotesWeb应用程序中使用的命令。及使用时的注意事项。支持的@command -240Server参数不应用,但必须将它指定为空字符串("")。 当Web按钮被“Web访问:产生页面时使用Javascript”的数据库属性激@command失效。使用“创建”“Web元素”“文件加载控制” Web按钮被“Web访问:产生页面时使用Javascript”Notes中的“文件”“关闭”命令@Command([FileSave])以模拟“提交”按钮。 Server参数必须指定为空字符串("") Web按钮被“Web访问:产生页面时使用Javascript”@Command([FileCloseWindow])“提交”@Command([OpenView];"ViewName";
OpenView
当数据库属性“Web访问:在生成页面时使用JavaScript”¹10-3:为WEB用户提供NOTESWebNotesWeb应用程序,可以设Web上使用,请在数据库属性框中选择“Web访问:当生成页面时使用JavaScript”,如果没有这个设置,Domino只能识别文档注意Domino显示所有的按钮、操作和热点,即使它们它们包含了Web此公式在当前数据库中打开新的MainTopic。@Command([Compose];"MainTopic")@Command([Compose];"formname")@Command([Compose];"":"database";"formname")@Command([OpenView];"viewname")@Command([OpenView];"":"database";"viewname")¹10-3:WEB中不支持RTF域,为了使Web用户在文档中附加文件,请在表单上包含“文件上1、以设计模式打开表单,选择控件的位置,然后选择“创建”“Web元素”“文件上载控件” 打开此控件属性框的“隐藏”附签,选择“对以下客户隐藏段落:NotesR4.6或更高版 管理员须在服务器上定义一个temp目录。若此目录不存在,附件不会与文档一起选择文件来附加文件。Domino保存文档中的附件。不是所有的浏览器都支持此特性。¹10-4:在Web应用程序中使用导航器,必须选择“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 13539.3-2026低压熔断器第3部分:非熟练人员使用的熔断器的补充要求(主要用于家用和类似用途的熔断器)标准化熔断器系统示例A至F
- T/ZSP 010-2024社区自治“365敲门”工作规范
- T/JSXH 0009-2025印制电路板退锡废液再生氢氧化锡
- T/COOA 18-2025渐变焦眼镜用眼镜架
- T/CCPA 63-2025黄金尾矿基免烧免蒸养轻骨料
- T/CSHE 0014-2025抽水蓄能电站工程施工控制网测量规程
- GB/T 48220-2026爆炸物品公共安全管理术语
- AI在科学教育中的应用
- 面向给排水学生的水务科技P PT
- 2027届山东省枣庄市中学区永安乡黄庄中学八年级数学第一学期期末学业质量监测模拟试题含解析
- 2026及未来5年中国电力线载波抄表数据监测研究报告
- 第四单元.14 梅兰芳蓄须明志 课件 2026-2027学年统编版小学语文 五年级上册
- 2026年前列腺癌诊疗指南(中国专家共识)
- 学院 升本 实施方案
- 超声波探伤培训教材
- 急诊护理风险评估与干预
- 2025煤炭行业发展年度报告
- 2026内蒙古鄂尔多斯市国有资产投资控股集团有限公司社会招募见习人员17名笔试历年参考题库附带答案详解
- T∕CPCPA 0017-2026 托育机构婴幼儿回应性照护服务规范
- 2026春季学期国开机电专科《可编程控制器应用实训》一平台在线形考形成任务1至6答案
- 人事考评课件
评论
0/150
提交评论