免费论文查重: 大雅 万方 维普 turnitin paperpass

关于文档管理一体化系统关键技术

最后更新时间:2024-03-30 作者:用户投稿原创标记本站原创 点赞:3556 浏览:8287
论文导读:开的时候,想载入Word进程,进行菜单、工具栏的初始化设置,在打开文档,这个过程会持续数秒到几十秒的时间,从用户的角度来说,使用起来非常缓慢。如果能迅速打开文档,则能有好的用户体验。可以采用Word进程池预12下一页
摘要:该文针对文档管理一体化系统涉及到的重要的关键技术进行了研究,包括Word进程与Windows窗体的融合技术、基于VSTO技术的Word文档处理技术、数据交换安全加密技术和加解密时间优化策略,提出了相应的解决办法。
关键词:文档管理;进程;安全;VSTO;AES
1009-3044(2014)15-3684-04
Key Technologies Research of Integrated System of Document Management
YU Xiao
(Computer Department of Sichuan Normal University, Chengdu 610101, China)
Abstract: This article studies on key technologies of integrated system of document management including the technology of Word Process and Windows Form fusion, the technology of Word Process based on VSTO, the technology of data exchange security encryption and the technology of encryption time optimization strategy. This article also puts forward practicable methods.
Key words: management of document; process; security; VSTO; AES
目前,政府部门、大专院校和科研院所在日常工作和科研中涉及到大量文档处理的工作。其中相当一部分文档有固定的文档格式和文档审批流程。同时,文档中涉及到的诸如经费、人员比例、单位等信息需要进行查询统计。这就产生了大量的事务性工作。例如,国家自然科学基金自1986年成立时,经费仅为8000万,随着国家财政对基础研究的投入不断增长,自然科学基金从1986年的8000万元起步增长到2013年的235亿元[1],与1986年比达到了294倍,项目填写、申报、审批、评审的工作量大大增加。
文档填报和管理已经成为越来越繁重的工作。政府部门、相关企事业单位要处理来自于下属单位的大量的Word文档,这些Word文档通常有特定的内容和专门的格式,同时文档需要专门的管理,文档内部的内容又迫切需要查询和统计,而现在一般的文档管理系统都未能对文档内部的内容进行管理。只能对整个文档的描述进行管理。
当前的文档处理方式大都基于一个Word模板的方式,用一种特定格式的文档制作成模板,采用VBA 或者VSTO的方式来进行文档的特定管理。例如,国家自然科学基金的申报书,就是采用这种方式。尽管这种方式可以在文档内部通过相应位置弹出窗口来配合输入,一定程度上制约了文档的格式和录入标准,提高了文档录入的效率,但是其弊端也是显而易见的。首先是一种文档处理就需要一个文档模板,把代码分别嵌入到每个文档中去,这导致万一出现bug,或者项目需要升级时,就很难处理。需要对于每个文档进行修改,这种低效率在企业级应用中是无法容忍的,其次,文档缺乏有效的管理,没有办法对文档版本和文档内容进行制约,只能人工的维护,导致效率低下,再者,文档的安全性得不到保证,无法对文档进行安全加密解密处理,无法保证文档传输过程中的安全性。一旦文档被窃取,文档内容泄露导致的损失无可避开,最后,无论是文档填报者还是文档管理者,都需要大量手工的劳动来完成事务处理工作以及统计查询分析工作。
要解决当前文档处理存在的理由,就需要一个能够管理和协助文档录入工作并能够对文档流转进行管理、对文档进行加密解密处理的系统。系统还必须能够对文档的内容进行统计查询。这些功能必须对用户是透明的。用户无需了解文档如何存放,如何加密解密,如何查询统计分析。设计这样的系统,需要解决不少技术难题。由于系统采用Word,一些技术难题来源于微软的底层实现的漏洞。
本文针对文档管理一体化系统涉及到的关键技术进行了研究。
1 Word进程与Windows窗体的融合技术
通过调用底层Windows API调用来实现,涉及到进程、消息、GDI等底层操作。可以实现Word进程嵌入Windows窗体。这样就能够开发出一体化的文档管理系统。从而使Word本身成为系统的一部分,系统通过Com调用和Word通信。这样Word可以和开发的系统完美结合,实现软件一体化。主要涉及难点如下:
1) 系统使用Word进程与外部文档使用Word进程的冲突理由。
使用应用程序类为系统打开独立的Word进程,并隐藏Word进程界面,通过Com接口制约Word,但是当外部文档打开的时候,会默认查看进程列表,从而使用系统使用的Word进程,外部文档显示在了系统签入Word界面中,导致使用混乱。解决办法是采用应用程序类的DocumentOpen事件捕获外部文档打开的动作,外部文档进入系统内部进程采用的文档标识号为“文档”加数字,根据此条件在事件处理句柄中进行拦截,并向调用窗体线程发送消息,同时主动关闭打开的文档。
2) 系统使用Word进程与外部文档使用Word进程的冲突理由。
在调用Win32API嵌入Word进程窗体的时候,如果失去焦点,会导致窗体无法正常切换回来,过去通常的解决办法是提示用户耐心等到Word打开,这种办法不友好。可以采用在每一个关键操作前后调用父类的Focus()策略来避开窗体焦点的丢失,从而解决理由。3) 提高文档打开效率。
通常文档打开的时候,想载入Word进程,进行菜单、工具栏的初始化设置,在打开文档,这个过程会持续数秒到几十秒的时间,从用户的角度来说,使用起来非常缓慢。如果能迅速打开文档,则能有好的用户体验。可以采用Word进程池预论文导读:IOleMessageFilter{publicstaticvoidRegister(){IOleMessageFilternewFilter=newMessageFilter();IOleMessageFilteroldFilter=null;intntemp=CoRegisterMessageFilter(newFilter,outoldFilter);}publicstaticvoidRevoke(){IOleMessageFilteroldFilter=null;intntemp=
先载入的方式,在系统开始的时候预先打开几个Word进程,并进行初始化,并隐藏进程。当文档载入的时候,选择其中的一个Word进程来使用,用完以后再次隐藏进程,并且不关闭进程。标识Word进程的除了重要的ApplicationClass之外,就是进程本身的句柄,ApplicationClass可以操作Word进程,而进程句柄则可以对进程关闭的时候作为标识使用。如果系统意外崩溃,Word进程就成了孤悬进程,无法在被正常使用,那么可以通过系统记载在日志文件离得Word进程句柄,重启系统的时候,用句柄直接将上次的Word进程关闭。
相关数组可以定义如下:
Word应用类数组: public static Word.ApplicationClass[] wd1 = new Word.ApplicationClass[nMaxDocNumber];
Word进程句柄数组: public static int[] wordWnd1 = new int[nMaxDocNumber];
Word 进程数组:public static Process[] wordProcess = new Process[nMaxDocNumber];
2 基于VSTO技术的Word文档处理技术
常用的Word文档处理开发通常使用VBA,但是VBA有很多不足之处。首先,它只面对VB脚本语言,开发环境显得简单,不够强大;其次,VBA把代码分别嵌入到每个文档中去,这导致万一出现bug,或者项目需要升级时,就很难处理。需要对于每个文档进行修改,这种低效率在企业级应用中是无法容忍的;还有,VBA的另一个理由是安全保护做得很薄弱,很多人可以利用宏制造病毒。
VSTO (Visual Studio Tools for Office) 是基于.NET 框架的Office 开发技术。它最大的特点是完全与.NET结合,在开发过程中可以不受限制地使用.NET 的各种技术,同时还保留了COM 组件开发方式中对Office 程序的强大制约[2] ,是实现Office 智能文档的高效、安全的工具[3-4]。
使用VSTO对系统的Word操作进行程序制约,可以进行辅助项目的填写,无需借助于VBA,VSTO生成的模块是系统的一部分,用户不避再去保存多个文档模板,从而达到文档管理的一体化。对于用户来说,面对的只是一个整体上的软件系统。
使用VSTO会产生被呼叫方拒绝接收呼叫的理由,这是由于多线程调用跨越Com边界造成的,IoleMessageFilter对频繁的请求无法及时回应,导致呼叫拒绝,可以采用重载IoleMessageFilter接口重新定义回应策略的方式来解决。关键代码如下:
public class MessageFilter : IOleMessageFilter
{ public static void Register()
{IOleMessageFilter newFilter = new MessageFilter();
IOleMessageFilter oldFilter = null;
int ntemp = CoRegisterMessageFilter(newFilter, out oldFilter);
}public static void Revoke()
{IOleMessageFilter oldFilter = null;
int ntemp = CoRegisterMessageFilter(null, out oldFilter);
}int IOleMessageFilter.HandleInComingCall(int dwCallType,
System.IntPtr hTaskCaller, int dwTickCount, System.IntPtr
lpInterfaceInfo)
{return 0;
}// 线程调用被拒绝,重试
int IOleMessageFilter.RetryRejectedCall(System.IntPtr
hTaskCallee, int dwTickCount, int dwRejectType)
{if (dwRejectType == 2)
{return 99;
}return -1;
}int IOleMessageFilter.MessagePending(System.IntPtr hTaskCallee,
int dwTickCount, int dwPendingType)
{return 2;}
3 数据交换安全加密技术
文档数据交换的安全是很重要的。文档在数据交换过程中一旦发生数据泄露,会给当事双方带来难以估量的损失。因此,文档管理一体化系统在设计上就必定要保证文档数据交换的安全性。
文档加密安全可采用如图1所示的加密方案,先采用R 128为加密,再在输出文档的时候对文件进行AES256位加密。这样得到安全度很高的密文文件。R是一种流算法,它对数据的每个字节进行操作,与RC2算法一样,它支持长度为40位、64位以及128位的密钥,算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性[5]。高级加密标准(Advanced Encryption Standard,AES),在学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。[6] 。256位密钥长度的AES算法是被证明是非常安全的。