Feng.Li's Java See

抓紧时间,大步向前。
随笔 - 95, 文章 - 4, 评论 - 58, 引用 - 0
数据加载中……

Lotus 程序设计随笔

Lotus Notes程序设计随笔(一)
作者 李建壹 Louis Lee(小路哥)
一、前言
许多初学Lotus Notes(Lotus Notes以下简称Notes)的朋友常常会因为Notes学习范围太广、教育训練课程太贵、中文资料太少⋯等等因素,而不知该从何开始入门学习。不过因为这些因素而放弃的话,其实是非常之可惜的,毕竟Notes的功能及其整合性在群组软件領域中,仍然是領先其它群组软件的佼佼者。
Louis为了让许多初学Notes的朋友可以快速上手,所以决定着手撰写此系列的文章,希望以最浅显易懂的白话文來为初学者建立Notes程序设计最基本的观念(但会不会中断不敢保证 :p)。不过既然是「随笔」,所以一些顺序的编排就不会那么的有系统。另外,在章文中虽然偶尔会提到一些技术观念,但并不属于高深的技术文件,纯粹只是观念养成的文章。若您想进一步了解文中提及的观念时,Louis「强烈」建议直接參考Notes程序设计說明资料库。当然,本系列文章中若有讹误还请各位前辈高手多多指教。
二、Notes学习方向
Notes的学习方向主要分为程序设计与系统管理兩部份,一般通称为Notes AD(Application Development)与SA(System Administration),而这也是IBM官方的說法。不过,有时候AD也有人称为AP,而SA则常会与IT界常用的系统分析(System Analysis)搞混,所以在与其它朋友交流时可千万不要鸡同鸭讲。
但不論是Notes AD还是SA的知識,这兩者并无明确界线,而且兩者其实是相辅相成的。以ACL的设定來讲,就无法明确归纳至AD或SA任一范畴,因为不管是在开发应用程序(应用程序以下简称AP)或是管理Domino系统,ACL的设定都是必须的常識。另外,在开发Web AP时,为了让浏览器使用者可以正常浏览存取Web AP的内容与资料,也须要先在服务器上做一些设定,而这也是开发人员所须要了解的。
所以就Louis个人的观点而言,千万不要将自己的角色局限在程序设计师或系统管理员而排斥学习任何一方面的知識。因为如此只会让您在执行一些任务时捉襟見肘罢了。接下來就让我们进入的正题吧!!
三、Notes资料库的分類与基础结构
在学习Notes AP开发的第一步骤,就是要先对Notes资料库有所了解,如此才不会因为观念不足或是错误而导致在开发过程中产生阻碍。所以Louis先整理一些观念让您稍微了解:
Top
(一)Notes资料库的分類
以目前市场上的资料库产品而言,就资料型态、功能性或配置方式分成好几類,例如最常听到的就是关聯式资料库(Relational Database),通常简称为RDBMS或是RDB,而最具代表性的就是Oracle、DB2、Informix、SQL⋯等等,不过这都是要付授权费,如果是免费的,目前最红的该属MySQL了(Notes都可以跟这些资料库整合喔~~)。
就资料型态而言,Notes属于文件式资料库而非关聯式资料库。很多初学Notes的朋友对文件式资料库这名词通常都会很疑惑,一是因为网路上很难找到相关信息,二是对Notes还不是很了解。不过在之后的内容中Louis会陸续說明文件的观念。
就资料库的配置方式而言,Notes则被归類在分布式资料库,为什么呢?因为Notes
的资料库可以藉由抄写机制,将各资料库抄本分置到各服务器与客户端中。分布式资料库的理論在网路上有很多资料,若有兴趣的话可以到各大搜寻引擎网站找找。
  
(二)Notes资料库的结构
每一个Notes资料库在windows OS下是以档案格式存在的,其扩展名通常是NSF,也就是Notes Storage Facility的简写,翻译成中文就是Notes储存设备。至于扩展名NTF也是Notes范本资料库,全名是Notes Template Facility,是用來产生一般资料库的范本。也就是說,您可以利用模板资料库來新建一个资料库,而此资料库中的设计是与模板资料库的设计一模一样的。
按照官方的說法,每个Notes资料库是由四个基本组件所组成:
1.ACL:
就是Access Control List,一般翻译成存取控制清单,或是权限控制清单,顾名思义就是让资料库管理员可以指定使用者对该资料库执行何种动作。
2.设计组件:
是指套表、视界、外框、图文框、領航员⋯等等组件,而这些都是Notes资料库最最基础的组件,也是用來让资料库可以与使用者互动的基本组件,没有这些组件,资料库即无法运作。
3.所谓邏辑:
是指程序设计师在资料库中所撰写的程序语言,Lotus Script、公式、代理程序都是。主要是要运算处理资料库中的资料,或者达成某些自动化的作业。
4.资料:
是指储存在文件中的文字、數字、日期时间、附加档案⋯等等信息。
四、资料的安全控管
若要简单描述Domino对资料的安全控管,基本上由外而内可以分成几关:服务器è资料库è文件è隐藏公式。
以服务器这一关來說,是在服务器文件中控管的,例如允许或不允许哪些使用者存取此服务器、允许或不允许哪些使用者可以在服务器上建立或删除资料库…等等。
若是使用者被赋予存取服务器的权限,就会进入到资料库安全控管这关,而这关的安全控管就是由资料库ACL來决定的。
再來是文件的安全性控管,这是经由套表属性之安全卷标下的选项,以及讀者与作者欄位來处理的。
最后就是隐藏公式,其实,隐藏公式根本就不算是安全性控管的方法,这只能說是开发技巧。因为即使透过隐藏公式把套表中的特定欄位隐藏起來,使用者仍然可以透过文件属性方块看到各欄位中的资料。
  
Top
五、ACL
既然我们在前面多次谈到ACL,不稍微跟他交个朋友好像說不过去,所以在这儿就为大伙儿引荐他吧,呵呵。在ACL中主要有几种组件设定:使用者類型、权限類型、执行动作。
设定使用者類型是为了避免ID被误用。举例來說,通常服务器在资料库ACL中都是管理员权限,假设服务器ID被有心人士盗用,可能就会造成极大的破坏。所以为了防范有心「人」士进行这种破坏行动,就必须在ACL中正确设定为服务器類型,如此该人士即使拿到服务器ID也没办法使用Notes client來对资料库执行任何活动。因为,服务器不是「人」,所以不会使用Notes client(不过在系统管理中,Louis强烈建议把服务器当作是「人」,这样有助于管理概念的建立)。但相对的,如果未设定适当的類型,也会导致某些动作无法执行。
再來是权限類型,依权限低高依序有七层-没有权限、储存者、讀者、作者、编辑者、设计师、管理员。【没有权限】当然就不能对资料库执行任何动作,因为連进去的权利都没有。Louis常戏称【储存者】为工讀生权限,储存者仅能输入资料到资料库中,输入完毕后,就无法再看到这些资料。感觉就像找了一位工讀生來key in大量资料到资料库中,但又不想让工讀生记起这些资料或是看到其它资料。
先假设文件或套表中没有讀者欄位,当使用者被赋予【讀者】权限时,使用者就只能阅讀文件,而不能编辑文件,当然更不可能建立文件(可执行动作之建立文件选项被强制disable了)。不过,一但文件中有讀者欄位,若使用者的名称未在讀者欄位的名称清单之中,则即使有再高的ACL权限还是无法阅讀该文件。
至于【作者】权限就必须跟【作者】欄位配合使用才具效用,当使用者被赋予【作者】权限,但作者欄位中的使用者名称却是别位使用者时,这时即使该份文件是目前使用者所建立,但因为其名称未列于作者欄位中,所以无法编辑该文件,仅能阅讀而已。顺带一提,如果使用者被赋予【编辑者】(含)以上权限,但文件中的作者欄位中并没有这位使用者名称,使用者还是可以编辑文件,因为【作者】权限必须跟【作者】欄位配合使用才具效用,也就是說【编辑者】(含)以上权限不受作者欄位的约束。
至于【设计师】权限就是多了使用Domino Designer來开发AP的权限。而管理员则是多了修改ACL的权限。
兹概略整理下表以供參考:
  
   管理者  设计者  编辑者  作者  讀者  储存者  没有权利
ACL设定  V                  
建立修改设计组件  V  V               
编辑所有文件  V  V  V            
编辑自已文件  V  V  V  V         
增加新文件  V  V  V  V     V   
读取所有文件  V  V  V  V  V      
  
在资料库建立时,会在ACL的使用者清单中看到-Default-这笔项目。-Default-的作用是,当使用者在ACL中找不到适用于自己的权限时,就套用-Default-的权限。也就是說,凡名称未明列在ACL中或未包含在ACL的群组中,就套用-Default-的权限。在开发AP时若无特殊需求,-Default-通常都设定为编辑者。
您还会看到LocalDomainServers群组与OtherDomainServers群组。顾名思义,只要是与目前资料库的所在服务器位在同一Domino网域的服务器都会自动包含在LocalDomainServers群组中,除非您去names.nsf中更改此群组文件,那又另当别論了Orz。所以此群组预设权限是管理员,主要是为了让相同网域内的服务器可以进行抄写作业。至于OtherDomainServers群组就是跟LocalDomainServers相反了,因为此群组的成员均为不同网域外的Domino服务器,而且预设是无权限。有些集团企业因为有一个以上的Domino网域,所以可能会利用此群组來达到某些跨网域存取的需求。不过,在达成此類需求时,请先手动把那些位于不同网域的服务器名称加到names.nsf中的OtherDomainServers群组文件喔。
最后要谈到Anonymous这个特殊项目,这是要手动新增给Web AP使用的。也就是当未透过Web ID & Password登入的使用者,均会被视为匿名者并套用Anonymous项目的权限。若Web AP未设定此项目时,当您使用浏览器开启资料库时,系统就会给您一个警告,要求您到ACL中新增此一项目喔。请特别注意,在开发Web AP时若无特殊需求,请将此项目设为无权限,否则您资料库中的资料可能就会在网路上趴趴造了~~。
待续⋯
李建壹 Louis Lee(小路哥)
2006/3/8

posted on 2007-08-05 11:41 小锋 阅读(528) 评论(1)  编辑  收藏 所属分类: lotus Domino

评论

# re: Lotus 程序设计随笔  回复  更多评论   

Simpleflow 基于Lotus的工作流开发引擎
参照Lotus Workflow开发模型
并提供一整套更快速与灵活的开发框架

http://www.simpleflow.com.cn
QQ: 935139121
Simpleflow 工作流QQ群:78560640
2009-04-15 22:00 | Simpleflow

只有注册用户登录后才能发表评论。


网站导航: