Lotus平台下办公自动化中文档修改痕迹保留的实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Lotus平台下办公自动化中文档修改痕迹保留的实现

陈敏宇

(福建省高速公路有限责任公司,福州 350001)

摘要本文简要讨论基于Lotus Domino/Notes的办公自动化系统中文档修改痕迹的保留,并给出了具体的实现步骤、方法及相关源程序。

关键词 Lotus Office 文档痕迹保留办公自动化

1 痕迹保留的现状与思考

随着政府机关和许多企事业单位网络建设逐步完成,对于在如何利用网络,如何表现出网络的优势方面,用户最容易想到,同时也是最容易产生效果的应用,就是办公自动化系统(OA)。从目前的情况来看,市场上对基于Lotus Domino/Notes的办公自动化系统有比较旺盛的需求。

修改痕迹的保留是办公自动化系统的一个难点,很多基于B/S模式的OA系统处理的方法是:Word 文件只是简单的作为一个表单附件,在需要使用的时候调出来进行操作。但这一方法的缺点是没有对Word文档进行相关的控制。公文所要求的格式需要流程走完后由秘书或相关人员对Word文档进行相关处理,生成正式文件,在打印时无法满足国家对公文格式的要求。还有一种做法就是使用一个RTF域来代替Word,但这样做是以牺牲了用户的习惯和字处理功能为代价的,而且效果往往不见得理想。

国内的绝大部分OA产品都提供了对修改的痕迹保留,版本保存的功能,但大多都缺乏一个有效的方法来保护修改痕迹,无法防范应用水平高的用户对痕迹进行篡改,删除,拒绝。也就是说,如果一个用户在Word的"用户信息"设置中修改了自己的用户名,那么该用户此后对文件的修改将"嫁祸"到他人名下或可通过接受修订的功能来屏蔽用户的修改。这是因为这些OA产品和Word结合得还不够紧密,Word无法根据OA系统中的用户设置来取得真正的用户名,无法保证修改的完整性。

目前,修改痕迹的保留较好的处理办法有两种,一种是重新设计专用编辑器,另一种是调用MS Office字处理软件,通过对Word的编程,实现对修改痕迹的保留。从理论上来看,应该是第一种办法比较好,但重新开发一套功能完善的字处理软件并不是一件易事,费时费力,如采用第二种办法则简单得多,可以充分利用Word强大的编辑功能,以及痕迹保留及批注功能,省下大量时间。本文采用第二种办法实现对修改痕迹的保留。

2 痕迹保留的具体实现

COM技术在Notes程序中的运用,极大丰富了Notes应用的功能和应用范围,要在Domino Designer中使用MS Office COM对象,必须确认使用了正确的对象库,当安装了Office后,这些库就能在Domino Designer自动显示出来,虽然这些不是准确意义上的OLE类,它们还是显示在了Domino Designer设计界面"参考"附签中的"OLE classes"分类下。其中,Word 8.0 对应Office97, Word 9.0 对应Office2000。

为了确保该集成应用能正确运行,用户应在本地注册表中正确注册了相应的Windows应用程序(如Word 或 Excel)。在使用MS Word的COM接口之前,必须先理解MS Word对象层次关系结构,具体内容可在MS Office帮助中"Visual Basic入门指南"下的"Microsoft Word对象"一节中查阅。比如你要对Document对象进行操作,可查到Document对象的所有方法和属性,再进行相应的编程。具体方法如下:

2.1 创建库表

创建一个新数据库和一个新表单,在表单中创建一个RTF域,取名为"body"。Lotus 的RTF域可以嵌入并显示OLE对象,此"Body"域用来创建一个Word对象。接着创建三个操作按钮分别取名为"拟正文"、"隐藏痕迹"和"查看痕迹"及"保存退出"。

首先在表单中创建一个RTF域body,以嵌入word ,再做一按钮,该按钮实现对修改的留痕。其源程序为:

Dim db As New notesdatabase(servername,"jswfw")

Dim handle As Variant

Dim doc As NotesDocument

Set doc=source.document

Dim rtitem As Variant

Dim object As NotesEmbeddedObject

Set rtitem = doc.GetFirstItem( "Body" )

Dim session As New NotesSession

Dim user As String

user = monUserName

If ( rtitem.Type = RICHTEXT ) Then

Set object = rtitem.GetEmbeddedObject( "Microsoft Word 文档" )

Set handle=object.activate(False)

handle.showgrammaticalerrors=False

handle.showspellingerrors=False

handle.TrackRevisions = True

handle.PrintRevisions = True

handle.ShowRevisions = True

erName = user

erInitials = user

erAddress = ""

handle.save

End If

起草人在起草了文章后,单击该按钮,以后对该文章的所有修改都将保留痕迹。

2.2 保留痕迹的相关功能

(1) 查看痕迹。

"查看痕迹"操作按钮功能及实现代码如下:

Sub Click(Source As Button)

Dim session As New NotesSession

Dim ws As New Notesuiworkspace

Dim uidoc As Notesuidocument

Dim doc As Notesdocument

Set uidoc=ws.currentdocument

Set doc=uidoc.document

If (doc.HasEmbedded) Then

Set rtitem=doc.GetFirstItem("Body")

Set embed=rtitem.EmbeddedObjects(0)

Set OLEObject=uidoc.GetObject()

相关文档
最新文档