:电子公文管理系统设计与实现
:
公文文档存放在oracle中的blob字段中,具体是通过delphi中tblobfield类的loadfromfile()和savetofile()方法实现了数据库的存入和读出。
3.2 公文内容的自动解析和批量归档
为了解决在公文归档过程中手工输入各种元素信息的效率问题,系统实现了公文内容的自动解析。根据公文格式规定,通过程序对指定的公文进行自动分析,解析出各种元素的内容,然后自动填入数据库。
delphi提供了两个类:twordapplication和tworddocument[3]。前者可以连接到ms word应用程序中,后者可以连接到一个word文档。公文中的每一段、每一行以及每一个表格,都可以通过tworddocument对应的如paragraph、line
以及table对象等获得。根据公文承办规定中对相关元素位置、格式的定义,配合识别元素的关键词信息,通过逐段逐行分析,就可以解析得到元素内容。
实现了对一个公文的解析功能,再配合findfirst、findnext以及findclose等windows的api函数的递归调用,就可以查找指定路径下(包括子目录)的所有word文档,然后逐一对之进行解析并将分析结果入库,就可以实现公文批量归档的功能。
公文内容自动解析及批量归档功能的实现,简化了公文归档的工作量,用户只需指定文件或者路径,系统即可自动完成剩余工作,大大提高了公文归档的效率。
3.3 基于内容的全文检索查询
指定通过公文标题、发文机关等元素内容,查找满足条件的公文,是基本的数据库查询操作,比较容易实现。但是在公文的查找中存在一类需求,即用户只记得公文的大致内容,如公文内容中包含的几个关键词,但是关于公文更详细的内容如发文时间、发文机关名称等并不清除。在这种情况下需要对公文进行基于内容的全文检索查询。
该功能的实现流程如图2所示。对数据库中的每条记录,均先将对应的word文档保存到本地,然后用delphi的tworddocument类打开。tworddocument类的content属性为range对象,调用其find.execute()方法可以在该范围内进行文本查找,功能与word应用程序中调用“编辑-查找”功能菜单一样,不仅可以进行基本的查找,还可以通过参数控制在查找过程中是否区别大小写、是否使用通配符等。如果匹配成功,则该方法返回true,系统为该条记录做好标记,作为查询结果中的一条进行显示。当数据库中所有的记录都处理完后,查询处理结束,所有被标记的记录均为满足条件的结果,即内容中包含指定关键词的公文。
公文文档存放在oracle中的blob字段中,具体是通过delphi中tblobfield类的loadfromfile()和savetofile()方法实现了数据库的存入和读出。
3.2 公文内容的自动解析和批量归档
为了解决在公文归档过程中手工输入各种元素信息的效率问题,系统实现了公文内容的自动解析。根据公文格式规定,通过程序对指定的公文进行自动分析,解析出各种元素的内容,然后自动填入数据库。
delphi提供了两个类:twordapplication和tworddocument[3]。前者可以连接到ms word应用程序中,后者可以连接到一个word文档。公文中的每一段、每一行以及每一个表格,都可以通过tworddocument对应的如paragraph、line
以及table对象等获得。根据公文承办规定中对相关元素位置、格式的定义,配合识别元素的关键词信息,通过逐段逐行分析,就可以解析得到元素内容。
实现了对一个公文的解析功能,再配合findfirst、findnext以及findclose等windows的api函数的递归调用,就可以查找指定路径下(包括子目录)的所有word文档,然后逐一对之进行解析并将分析结果入库,就可以实现公文批量归档的功能。
公文内容自动解析及批量归档功能的实现,简化了公文归档的工作量,用户只需指定文件或者路径,系统即可自动完成剩余工作,大大提高了公文归档的效率。
3.3 基于内容的全文检索查询
指定通过公文标题、发文机关等元素内容,查找满足条件的公文,是基本的数据库查询操作,比较容易实现。但是在公文的查找中存在一类需求,即用户只记得公文的大致内容,如公文内容中包含的几个关键词,但是关于公文更详细的内容如发文时间、发文机关名称等并不清除。在这种情况下需要对公文进行基于内容的全文检索查询。
该功能的实现流程如图2所示。对数据库中的每条记录,均先将对应的word文档保存到本地,然后用delphi的tworddocument类打开。tworddocument类的content属性为range对象,调用其find.execute()方法可以在该范围内进行文本查找,功能与word应用程序中调用“编辑-查找”功能菜单一样,不仅可以进行基本的查找,还可以通过参数控制在查找过程中是否区别大小写、是否使用通配符等。如果匹配成功,则该方法返回true,系统为该条记录做好标记,作为查询结果中的一条进行显示。当数据库中所有的记录都处理完后,查询处理结束,所有被标记的记录均为满足条件的结果,即内容中包含指定关键词的公文。