论文部分内容阅读
Lotus Domino/Notes作为国际主流Intranet/Internet网络计算平台,具有单一架构的企业级信息集成和知识管理平台,提供工作流自动化及标准的Web服务、应用和开发环境,在企业级通信、协作、知识管理和Web应用方面拥有大量成功的应用。Domino/Notes是一个群件产品,具有完善的工作流控制、数据库复制技术和完善可靠的安全机制,尤其适合于处理各种非结构化与半结构化的文档数据、建立基于计算机网络的工作流应用。Lotus的群件模式包含三个技术领域,即通信、协同操作和协调运行。通信是指电子邮件的应用,协同操作是指群组共享公共论坛和工作区中的信息,协调运行是指工作流的自动化。
信息共享的实现
项目管理数据库要满足信息共享的需求。数据库主要包括两大类共享文档:已经完成开发但需要继续维护升级的项目文档和原程序代码,简称存档文档;已经立项正在设计开发中的项目文档和原程序代码,简称讨论文档。存档文档是系统开发成果的重要组成部分,应保持和运行系统的版本一致,以备维护和升级所用。所以存档文档设计为不可编辑,只允许有权限的读者查看,并且不包含答复文档。讨论文档是在系统设计开发过程中形成的,需要不断讨论、补充和修改的文档,讨论的意见成为针对某个讨论文档的答复和答复的答复文档。所有共享文档被分为若干个项目,每个项目又包含几类文档,比如原代码文档、项目可行性分析、设计类文档等,文档的答复文档也相应属于同一项目。
为此,文档管理数据库需要建立两个视图——存档视图和讨论视图,它们又各自包括两个子视图——按项目查看和按文档类型查看。项目管理数据库的用户按角色的不同和文档的类别享有查看、编辑等权限。归档视图中的文档应该不允许任何用户修改,所有用户只能查看,若要修改编辑文档,首先由数据库管理员按工作流程将文档从存档视图中调出放入讨论视图,再由用户修改文档。
数据库的安全性设计
Domino/Notes的安全性可在多个层次上得到实施。在有些层次,Domino/Notes管理员和应用开发者可采用不止一种安全类型。一级比一级更精细,从要求网络环境实际安全的宏观级一直到高度微观的安全性层次。可以把安全性想成是一座金字塔,从底部到顶部依次为:网络、服务器、数据库、视图、窗体、文档、节和字段。安全性的底层需要保护对Domino服务器和Notes网络的物理访问及逻辑访问。有了物理上和逻辑上都安全的网络,沿着金字塔向上,就可以控制Domino服务器的访问、对数据库的访问、对数据库中窗体和视图的访问、对具体文档的访问、对文档中节的访问,最终可以控制对文档中字段的访问。在某些级可能会有多种安全选择,而且在有些情况下,比如视图访问和节访问,所谓的安全性确切地说应该是增强数据库可用性的一种方式。
网络和服务器的安全由Domino/Notes管理员负责设计和管理,数据库一级的安全问题可以通过本机加密和访问控制列表来保障。本机加密可以通过在数据库属性中选择简单、中等和强加密设置,即使把数据库文件拷贝后重新打开也需要原先数据库的ID;每个数据库都有一个访问控制列表(ACL),它规定了用户和服务器在数据库中享有那些特权。当用户每次打开ACL起作用的Notes数据库时,用户名与ACL中用户名和组进行对照,以确定用户拥有何种类型的访问权。ACL的访问权等级有以下几个:
* 无权访问。无权访问者无法将数据库图表置于Notes的工作区。
* 存件人。存件人能创建文档,但在文档被存储和关闭后,存件人就不能再查看文档或数据库中的其他任何文档。
* 阅读者。阅读者只能阅读数据库的文档。
* 作者。作者能创建、阅读文档。如果被列为文档作者,还能修改文档,并能删除那些自己被列为作者的文档,运行仅能修改自己是作者的那些文档的代理程序。
* 编辑者。编辑者能创建、阅读、修改并删除数据库中的任何文档,还能运行代理程序。
* 设计者。设计者能创建或修改数据库中的设计元素;创建和运行代理程序;创建、阅读、修改和删除数据库中的文档。
* 管理员。数据库管理员可以执行其他数据库用户的全部功能。另外,管理员还可以改变数据库的ACL,并可删除数据库。
角色为控制访问数据库中的特定功能提供了另一种手段,可以把具有相同权限的一类用户或群组归为一个角色,并在ACL中设置,角色可被用于数据库作者字段、阅读者字段、视图或文件夹属性和表单属性等场合。
对项目的管理规范要求用户对不同的文档有不同的存取权限,因此把用户按工作岗位和工作内容分为几个角色:数据库管理员、审批人、项目开发设计人员、系统运行维护人员和业务操作人等。除了数据库管理员设为管理员级别和业务操作人设为阅读者以外,其他角色应设为作者级别。数据库模板先设定以上几种用户角色,随着项目的增加,数据库管理员可以根据情况再添加角色的种类,以满足用户分类的需要。数据库为了动态的设置文档的读者,建立一类权限控制文档,由数据库管理员负责维护,文档里设定了项目名称、文档类型名称和相应的读者群,读者包括一类用户(角色)和某几个用户ID。所以数据库设计了权限表单和控制权限视图,表单包含三个域:
项目名称--可以从已存在的项目名称中选择也可输入新的项目。
文档类型--可以选择也可以重新定义。
读者--从数据库的ACL中选取。当用户添加一个新文档时,要在系统提供的权限控制文档定义好的项目名称和文档类型清单中选择,新文档的读者域由系统填写权限控制文档读者域的角色名和用户名。在用户新建或编辑文档时,如果改变了项目名称或文档类型的值,在离开编辑域时执行以下代码:
Sub Exiting(Source As Field)
On Error Goto l1
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As notesdocument
Dim dc As NotesDocumentCollection
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim i(1 To 2),j,s As String
Set db = session.CurrentDatabase
Set view = db.GetView( "权限" )
Set uidoc = workspace.CurrentDocument
i(1)=uidoc.fieldgettext("项目名称")
i(2)=uidoc.fieldgettext("文档类型")
Set dc = view.GetallDocumentsByKey(i, True)
Set doc=dc.getfirstdocument
a=Lbound(doc.读者)
b=Ubound(doc.读者)
s=""
For j=a To b
s=s+doc.读者(j)
If j<>b Then s=s+","
Next
l1: Call uidoc.fieldsettext("read",s)
End Sub
项目管理的工作流
在项目开发过程中,当某个用户在编辑一份文档后,希望传阅给其他同事以获得意见或建议时,可以使用表单的指定传阅人功能。系统列出数据库的ACL供用户选择,并向指定传阅人发送请求传阅的邮件到传阅人的邮箱。传阅人在查看了文档后,以原文档的答复文档发表自己的看法。对于任何一个工作流来说,都必须规定一个原则,以便处理文档传递给某个人但没有采取任何操作这样的情况。
为处理这一情况,通常设计者要确定一个采取某种行动的时限。当这个时限期满后,可以触发某一个事件。在文档管理数据库设计中,依据正在传阅的文档类型不同,用户可以有三种选择处理以上情况,可以不指定传阅时限即忽略不管;可以指定传阅时限,但不必要求每一位传阅人做出答复;还可以确定一个传阅时限,在时限终止前,系统再次提示传阅人作出答复,时限终止时,系统向传阅申请人发出传阅记录。当某个项目结束开发或升级后应由质量监督员对文档进行审阅,经过审阅的文档才能存档入库。文档管理数据库做了相应的设计,由用户利用申请存档操作由系统向指定审批人发送审批提示,审批人在文档数据库上检查文档是否符合相应的规范,并利用批准或拒绝操作将文档存档或向存档申请人发出拒绝存档的信息并说明理由,系统删除存档文档所属的答复文档并记录文档的质量监督员备查。存档文档只能查阅不能被修改,如果需要再被修改时再申请,由管理员将其调出存档视图,数据库将保留原始文档(即数据库保存所有以前存档过的版本),并新建一份拷贝放入未存档类视图中,所有用户将在新建的文档拷贝上进行修改。用户可以随时查看修改日志和以往存档过的版本。