日期:2014-04-23  浏览次数:21215 次

WEB环境下办公自动化文档修改痕迹保留的实现

一、痕迹保留的现状与思考

随着政府机关和许多企事业单位网络建设逐步完成,对于在如何利用网络,如何表现出网络的优势方面,用户最容易想到,同时也是最容易产生效果的应用,就是办公自动化系统(OA)。在当前的软件开发实践中,B/S模式(浏览器/服务器模式)的开发可以采用三层结构,前端服务层、中间业务层、后台数据库。由于其扩展性好,数据安全性高,同时无须考虑客户端的兼容性,解决了C/S模式二层结构的诸多局限性,因而在办公自动化系统中得到了广泛的应用。

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

目前,修改痕迹的保留较好的处理办法有两种,一种是重新设计专用编辑器,另一种是调用MS Office字处理软件,通过对Word的编程,实现对修改痕迹的保留。从理论和实践上来看,第一种办法比较好,利用嵌入在HTML页面内的专用图文混排控件,我们可以方便的加强客户端的显示及处理功能,减少开发工作量,提高软件质量。

二、第三方控件的介绍

办公之星控件(OStarOCX)是智岛软件公司推出的一款基于图文混排的文档处理控件(类似Word的控件),办公之星控件(OStarOCX)完全封装了办公之星的文字、图形、表格、图表等功能,提供了几百个编程接口;在ERP、CRM、HR、OA等系统里,开发难度非常大的文档处理、统计、报表等输出功能都可由办公之星控件(OStarOCX)轻松实现,其所见即所得的效果跟现实里的完全一样。办公之星控件(OStarOCX)是一个标准的OCX控件,适用于Windows环境的各种开发工具(如VB,VC,Delphi, C+Builder, PB, Java等), 并且针对Web开发环境做了大量的优化。

三、痕迹保留的具体实现

第三方控件在WEB环境下办公自动化程序中的运用,极大丰富了办公自动化程序的功能和应用范围。要在WEB环境中使用办公之星控件,必须首先将控件加入WEB编程环境,然后我们就可使用办公之星控件的各种接口了。

1. 办公之星控件相关接口方法说明

方法 BSTR GetCurUser() 返回当前用户名称
方法 SetCurUser(LPCTSTR strName) 设置当前用户名称
方法 SetEmendState(BOOL bEmend) 设置修订状态.b为TRUE时为修订状态,为FALSE时为非修订状态
方法 BOOL GetEmendState() 返回修订状态.b为TRUE时为修订状态,为FALSE时为非修订状态
方法 ShowEmendDlg() 显示接受或拒绝修订对话框
方法 PrevFindEmend() 往后查找修订
方法 NextFindEmend() 向前查找修订
方法 AcceptEmend() 接受单个修订
方法 AcceptAllEmend() 接受所有修订
方法 RefuseEmend() 拒绝单个修订
方法 RefuseAllEmend() 拒绝所有修订

2. 设定批改文档的用户

默认状态下文档的修改用户为超级管理员(admin),在对文档进行操作前我们通常要设定批改操作的用户。例:

OStar.SetCurUser("张三")

上述代码(javascript脚本)设定当前文档的操作者为“张三”。上面代码中“OStar”(下面代码同)是程序中标识办公之星控件的惟一名字,在插入控件时通过id进行设置。

3. 实现对修改的留痕

在web文档里做一按钮,实现对修改留痕的控制。该按钮实现功能源程序(javascript脚本)为:

if(OStar.GetEmendState()){
OStar.SetEmendState(0);
window.status="";
}else{
OStar.SetEmendState(1);
window.status="修订中...";
}

该按钮为一开关按钮,能够在留痕与正常编辑状态间切换。

4. 查看修改

各操作按钮功能及实现代码如下:

function PrevFindEmend(){
OStar.PrevFindEmend();//前一处修订
}

function NextFindEmend(){
OStar.NextFindEmend();//下一处修订
}

5. 接受或拒绝修改

各操作按钮功能及实现代码如下:

function AcceptEmend(){
OStar.AcceptEmend();//接受修订
}

function RefuseEmend(){
OStar.RefuseEmend();//拒绝修订
}

function AcceptAllEmend(){
OStar.AcceptAllEmend();//全部接受
}

function RefuseAllEmend(){
OStar.RefuseAllEmend;//全部拒绝
}

四、痕迹保留实现效果

通过上述编程,实现了OA与图文混排文档的无缝集成,保证了所有对于修改痕迹的恶意操作都无法通过系统的认可,确保批改人员的修改意图不被扭曲或是误解,保证了信息交流的安全性。同时可以充分利用办公之星控件强大的编辑功能,随时查阅领导修改和批注的要点,又避免了成文后打印前存在的成文版本与打印文本有出入的漏洞,可以明确各个环节的责任。痕迹保留实现的效果如下图: