您好,欢迎来到易榕旅网。
搜索
您的当前位置:首页陕西省地税局财务系统档案管理子系统的设计与实现

陕西省地税局财务系统档案管理子系统的设计与实现

来源:易榕旅网
西安电子科技大学硕士学位论文

陕西省地税局财务系统档案管理子系统的设计与实现

姓名:王磊申请学位级别:硕士专业:软件工程指导教师:郑有才;杨选瑞

20100501

摘要 随着计算机技术、网络技术和数据库技术的飞速发展,税务系统信息化建设发展很快,尤其是近年来“金税工程”,使得众多信息系统上线运行。随着税务系统信息化水平的不断提高,但税务系统中的档案管理和共享仍然存在很多问题,因此陕西省地税局提出建设档案管理系统。 论文在分析陕西地税档案管理需求的基础上,提出了基于MVC模式的系统架构,给出了系统的总体设计方案,并基于Oracle数据库,进行了数据库的规划和设计。功能设计部分介绍了系统的业务功能,重点介绍了基于Oracle Text技术实现的档案全文检索功能。然后对业务功能中的系统设置、数据录入、档案销毁和借阅管理等功能的设计做了详细论述,在实现部分给出了系统模块的实现方法和结果。最后,论文通过对系统进行测试,验证了系统的功能性、可用性,并对系统实现进行了客观的评估。 该档案管理系统已经在陕西省地税局得到了实际的应用,实现了陕西省地税系统内部档案的电子化管理,达到了预期的效果。 关键词:税务信息化 档案管理 J2EE MVC Abstract With the rapid development of computer technology, network technology and database technology, the construction of Informatization of Taxation is developed rapidly, specified “Jin Shui Engineering”, and in recent years, a lot of information system have successfully run on-line. With the continuously rising level of the informationization of the tax system, but archive sharing and management is a very important problem in the tax system. So Shaan Xi province local tax bureau wants to build the Tax Archive management system. This thesis starts from the research background, current condition and key technology of the tax archive system, based on analysis of requirements of the system, presents the system architecture based on the MVC pattern. Then this thesis also presents the total design solution, and makes the database design aiming to Oracle Database. Design part of this thesis presents the system functions, and focuses the archive full-text search function bases on Oracle Text. After that, this thesis presents the design solution of the system functions including system administration, data inputting, destruction of documents and management of borrowing document in detail, and presents the implement approaches and results. Finally, by testing the tax archive system, the thesis verified its functionality and the availability and gave a objective assessment for the system’s implementation . The tax archive management system has been practically applied in Shaanxi Local Tax Bureau. During the application, the electronic data management function of tax was realized and the desired results were achieved. Keyword: Informatization of Taxation Archives Management J2EE MVC 西安电子科技大学 学位论文独创性(或创新性)声明 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名: 日期: 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后结合学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。 (保密的论文在解密后遵守此规定) 本学位论文属于保密,在 年解密后适用本授权书。 本人签名: 日期: 导师签名: 日期: 第一章 引言 1 第一章 引言 1.1 课题背景及来源 税务系统的信息化在我国政府电子办公一直都走在前列,目前国家税务总局确认税收信息化的总体目标建立和完善中国税收管理信息系统,简称金税工程,英文缩写为CTAIS(China Taxation Administration Information System)。国家税务总局确定四到五年的时间完成金税三期的建设,也就是完成“一个平台、两级处理、三个覆盖、四个系统”的建设。其中,“一个平台”即建立一个包含网络硬件和基础软件的统一技术平台;“两级处理”即依托统一的技术平台,根据总局和省局管理上对数据的不同要求,逐步实现税务系统的数据信息在总局和省局集中处理;“三个覆盖”即应用内容逐步覆盖所有税种,覆盖所有工作环节,覆盖各级国、地税机关,并与有关部门联网;“四个系统”即通过业务的重组、优化和规范,逐步形成一个以征管业务为主,包括行政管理、外部信息和决策支持在内的信息管理应用系统[1]。 陕西地税也在进行税务信息化工作。本文所论述的档案管理系统即属于陕西地税的“信息化软件平台集成与整合”项目,该项目通过建立一套完整的信息化软件工作平台,在陕西地税应用系统中实现信息共享,发挥当前应用系统最大的复用性,减少开发和维护所需工作量,同时通过该平台更快地集成与整合新的业务系统,方便与外部机构或企业的连通,使陕西地税信息化软件系统一体化、规范化、标准化。 陕西地税信息化改革的整体体系结构能够满足现在和未来不同用户群体的需求,并且可以随需求的变化而不断发展和优化的整体构架。项目组将首先开发一个通用的将来系统可以扩展的基础平台,以后系统在此平台上增加功能后,利用平台提供的资源功能注册,灵活的扩展系统功能。系统根据业务的要求,进行组件化设计,把公用的功能进行封装,提高软件的复用度。 税务档案管理是陕西地税信息化改革的重要部分。随着计算机技术的迅速发展和广泛应用,电子文件和电子档案在税务系统中都已普遍存在,档案资料的数字化、光盘存储、计算机管理和网上检索查询利用是税务档案管理发展的必然趋势。在税务信息化建设中,建设符合国家规范的电子档案管理信息系统,是税务系统档案管理向现代档案管理模式迈进的重要标志,同时也是档案工作以档案实体保管、利用为重点向档案信息数字化存储、提供服务为重心转变的重要过程。 2 陕西省地税局财务系统档案管理子系统的设计与实现 1.2 课题研究现状 目前国内税务行业中,在档案管理信息化建设中情况复杂:有的税务机构仍然采取传统的手工档案管理模式;有的税务机构已经自主开发或采购了一些档案管理信息系统,但在使用中存在诸多问题。 国内大部分的税务机构依然采用手工档案管理模式来管理本单位的各类档案。手工档案管理模式存在以下五个方面的缺点。 1.档案立卷装订工作程序复杂。税务行业中的档案具有数量巨大、种类繁多的特点。而在档案管理实际工作中,单卷档案的手工装订过程包括:一是按年度、科室和保管期限对档案进行分类、整理和组卷;二是编写卷内文件页号;三是要编制卷内目录;四是要拟写案卷题名;五是填写案卷封面;六是要装订案卷;七是要将档案装盒并填写案卷盒。可以看出,单卷档案的装订工作非常繁杂,需要相当大的工作量。 2.档案归档时间过于集中。在传统的手工档案管理模式下,每年的档案归档时间往往比较集中。例如次年度6月份前一次性完成前一年度所有档案的归档工作。这往往会造成短时间工作量大且归档案卷质量不高的情况。 3.档案服务方式较为封闭。手工档案管理模式下,档案服务以手工调阅为主,非常的不方便。档案借阅者只能亲自到档案库房查阅。 4.文件使用时效性差。当多个借阅者需要同时查阅同一份文件时,自能依次逐人查阅,造成文件使用率低下,无法完全实现文件在同一时间的共享。 5.档案查阅中检索方法过于单一。随着信息化建设不断取得成效,公文的数量不断上升,特别是电子档案的数量、种类在不断增加,传统的手工档案管理模式无法提供丰富和多样化的检索方式。 因此,档案管理的信息化建设是大势所趋。目前国内部分税务机构或者自主开发或者购买了档案管理系统系统,来管理本单位的档案,但在使用过程中依然存在诸多问题。经过调研分析,发现主要的档案管理方式有两种: 1.在单位使用的办公自动化(Office Automation,简称OA)系统中,增加了档案管理模块:由于整个OA系统全部由软件公司制作,编程人员不熟悉国家有关档案管理法规和税务行业档案管理法规,加以“档案管理模块”在整个OA系统中仅是一小部分,而不是一个独立的系统,因此出现了许多弊端。例如缺乏档案专业性、电子档案归档不完整、操作窗口过于简单、借阅手续需要层层审批、档案管理模块升级困难等等。 2.购买了通用档案管理信息系统:通用的档案管理信息系统遵循了国家档案管理的相关法规,但是在税务行业中使用时,未考虑税务行业档案的自身特点,例如数量巨大和种类繁多等。同时,税务系统多年来已经投入使用 第一章 引言 3 了多个信息系统,通用的档案管理信息系统也无法提供与已有信息系统之间的互操作能力,无法使得档案在税务系统内部通畅的流通,造成了一个新的“信息孤岛”。 另外,各级税务机构独自建立的档案管理系统,使得税务系统内部在档案管理上各自为政、相互隔离,同市不同县的同类系统中,版本不同,功能范围不同,业务分散,直接加大了统一管理监控的难度,难以保证各级税务数据的准确和及时,降低了工作效率,加大了系统维护难度。同时也造成电子档案资源不能予以共享,因而不能实现文件一次输入、多次使用,一家输入、多家使用,分散输入、综合利用的档案资源信息化共享的目标。 因此,根据金税工程的“一个平台、两级处理”的原则,在税务系统中建立统一的税务档案管理系统已经非常迫切了。 1.3 课题研究的目的和完成的工作 通过对陕西省税务系统中档案管理现状的研究,在对档案的种类、数量、特点研究的基础上,考虑目前借阅者检索方式的要求以及与其他信息系统的互联互通,遵循国家档案管理法规和税务系统的行业法规,结合金税工程采用的信息技术的特点,综合运用计算机技术、数据库存储技术、计算机安全等技术,建立税务档案管理信息系统。 税务档案管理系统的建设符合金税工程的建设目标,即“一个平台、两级处理、三个覆盖”。系统采用地税统一的管理结构,各级地税机构通过各自的终端实现对所辖范围内档案的管理和检索。 系统设计时需要考虑到地税工作人员的计算机水平,尽可能提供易学习、易操作的人机界面,提供类似于搜索引擎的全文检索功能。同时,提供文档的电子版本,来提高档案的使用频率。 税务档案管理系统将根据业务需求分析,做整体功能模块划分,以及数据库方案设计。 1.4 论文章节安排 本文的组织结构如下: 第一章,引言部分,介绍课题背景,对当前税务档案管理现状进行分析。对论文的主要工作和章节结构作了简单介绍。 第二章,介绍陕西地税档案管理系统开发过程中使用的相关技术。首先介绍了MVC的概念,以及MVC在软件开发过程中的优势。然后介绍Oracle数据库和Oracle Text技术。 4 陕西省地税局财务系统档案管理子系统的设计与实现 第三章,介绍陕西地税档案管理系统的需求,从系统目标、业务流程、业务功能、数据库需求和系统结构等方面,对需求进行了分析。 第四章,介绍陕西地税信息化软件工作平台系统的总体设计思想。根据需求分析确定系统的开发目标,详细介绍了系统的总体逻辑结构、网络结构、软件结构和数据库的设计。 第五章,介绍了系统的功能设计及实现。主要对系统中的系统管理、档案销毁和档案借阅等模块进行详细的分析和设计,并给出了实现结果。 第六章,介绍了系统的功能测试和性能测试,以及通过测试改进的系统性能指标。 第七章,总结归纳作者在项目开发中的思考,指出本文研究取得的成果。并对今后的进一步研究工作进行加以归纳,以便今后进一步地进行研究。 第二章 系统相关技术介绍 5 第二章 系统相关技术介绍 本章介绍了开发档案管理子系统需要用到的相关技术。首先介绍MVC构架,分析其在现代软件开发过程中的优势,而Oracle 10g也是以B/S为基本构架,非常适合作为档案管理子系统的开发工具。同时,档案管理子系统的开发中,采用了Oracle Text技术来实现电子档案的全文检索功能,因此本章对Oracle以及Oracle Text技术作了简要的介绍。 2.1 MVC简介 2.1.1 MVC模型 MVC(Model-View-Controller,模型-视图-控制器)。MVC模式将应用分成三个层——模型层、视图层、控制层。使用MVC模式的目的是增加代码的重用率,减少数据表达,数据描述和应用操作的藕合度。同时也可以提高软件可维护性、可扩展性、灵活性以及封装性[2,3,4]。 模型(Model):负责维护数据并提供数据访问方法,负责业务流程和状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC模式的核心。MVC设计模式把应用的模型按一定的规则抽取出来,抽取的层次很重要。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只建议应该组织管理这些模型,以便于模型的重构和提高重用性。业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据保存,也就是对象的持久化。比如将一条教学参考信息保存到数据库,或从数据库查询教学参考信息,可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。 视图(View):负责数据的显示,代表用户交互界面。对于Web应用来说,可以概括为HTML界面,但有可能为XHTML,XML和Applet等。随着应用的复杂和规模的扩大,界面的处理也变得越来越具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交给模型(Model)处理。 控制器(Controller):用来处理用户命令以及程序事件,可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。控制层就是一个分发器,它决定了选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。 6 陕西省地税局财务系统档案管理子系统的设计与实现 控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。 模型、视图和控制器三者的动态协作过程为:视图接获用户请求,将请求发送给控制器;控制器接收使用者的消息,要求模型处理应用领域的资料;控制器选择需要更新的视图,视图使用更新的模型数据显示出来。 2.1.2 MVC的优势 MVC主要有以下四个优点[5,6]: 1.有多个视图对应一个模型的能力:在目前用户需求变化快速的情况下,可能有多种方式访问应用的要求。由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。假如对于同样的数据,需要用不同的视图来显示,如表格、直方图、曲线图等,则只需要用同一个模型返回的数据,而在视图显示部分做不同的处理即可。 2.由于一个应用被分离为二层,因此有时改变其中的一层就能满足应用的改变,增强了系统的可维护性和扩展性。一个应用的业务流程或者业务规则的改变只需改动MVC的模型层,而显示方式如果需要变化则只需要改变某个视图。控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以方便的实现对用户请求权限的管理。 3.有利于软件工程化管理和开发的分工。由于不同的层功能分隔,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码,而且能够更好地实现开发中的分工。网页设计人员只需要负责开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。 4.有利于组件的重用。分层后更有利于对不同功能的组件进行封装,也有利于对不同组件的测试和重用。如模型层可独立成一个能用的组件,视图层也可做成通用的操作界面。 2.2 Oracle 10g简介 2.2.1 Oracle数据库简介 为了能够充分利用Oracle在改善性能、提高查询速度方面的特性,有必要对Oracle数据库的体系结构做一个简单介绍。Oracle 10g数据库服务器提供了一个完善的信息管理环境,它储藏大量数据,并为用户提供对这些数据的快速访问。Oracle 第二章 系统相关技术介绍 7 10g数据库由Oracle实例和Oracle数据库物理文件组成[7,8]。 Oracle的体系结构,决定了Oracle数据库性能的高度可调整性,在这样的平台上也能最大限度地提高查询速度。Oracle实例是用来访问数据库文件集的存储结构及后台服务进程的集合,每个运行的数据库系统都与实例有关。oracle实例的存储结构包含在称为系统全局区域(SGA)的内存区域中,SGA在虚拟内存中进行分配,用于存放Oracle服务器进程。SGA包括共享池、数据库缓冲区高速缓存以及重做日志缓冲区。后台服务进程主要有用户进程和服务器进程两类,用户进程在用户方工作,它向服务器进程请求信息。服务器进程接受用户进程发出的请求,根据请求与数据库通信,通过这些通信完成用户进程对数据库中数据的处理要求。服务器进程中还包括一系列的后台进程,用来处理系统必须的一些工作,主要的后台进程有数据库写入进程(OBWR)、日志写入进程(LGWR)、检查点进程(CKPT)、系统监控进程(SMON)以及恢复进程(RECO)等。 Oracle物理文件主要包括一个或多个数据文件、两个或更多的重做日志文件、一个或多个控制文件、初始化参数文件。数据文件是用来存放实际数据的物理文件,数据库中的所有数据信息都是存放在数据文件中的。数据文件必须对应于一个表空间,每个表空间可以包含一个或多个数据文件。重做日志文件按顺序记录了数据库中所有数据的变化,通常与数据文件分开在不同的设备上存放,当系统发生故障时,这些日志文件能够以正确的顺序恢复数据库事务。为了提供最高的可靠性,Oracle 10g需要至少两个重做日志文件才能运行,如果服务器是运行在归档日志模式下,则写满的日志还会通过归档进程写入归档日志文件中,以保证数据库以最安全的模式下工作。Oracle 10g在创建数据库时建立控制文件,控制文件中包含有数据库的重要信息如数据名称、所有数据库文件和重做日志文件的完整路径名、当前的日志序列号以及相关的检查点信息等。控制文件对数据库至关重要,在数据库运行时,控制文件不断被更新,如果正在使用的控制文件失效,则该数据库不能正常运行。Oracle实例在启动时会读取初始化参数文件中的内容来设置数据库的运行环境,通过参数文件,可以优化内存结构,其中有些参数将会影响到用户对数据库的访问速度[7]。 2.2.2 Oracle 数据库特性 Oracle 提供了几种机制,用于支持信息管理系统的重要需求[8]:  多用户系统的数据并发特性。  数据必须在一致的环境下进行读取和修改操作。  高性能要求同时支持更多的数据库用户操作。 为了支持这些需求,要求数据库提供: 8 陕西省地税局财务系统档案管理子系统的设计与实现  并发特性  读一致性  锁机制  静默数据库  真正应用集群  可移植性 1. 并发特性 在使用多用户数据库时常常会碰到数据更新失败、删除失败等情况,如果有多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生并发问题。并发问题包括: 丢失或覆盖更新(幻像读):当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其他事务的存在。最后的更新将重写由其他事务所做的更新,这将导致数据丢失。例如,两个编辑人员制作了同一文档的电子副本。每个编辑人员独立地更改其副本,然后保存更改后的副本,这样就覆盖了原始文档。最后保存其更改副本的编辑人员覆盖了第一个编辑人员所做的更改。如果在第一个编辑人员完成之后第二个编辑人员才能进行更改,则可以避免该问题。 未确认的相关性(脏读):当第二个事务在其他事务正在更新时同时运行,会发生未确认的相关性问题。第二个事务正在读取的数据还没有确认并且可能由更新此行的事务所更改。例如,一个编辑人员正在更改电子文档。在更改过程中,另一个编辑人员复制了该文档(该副本包含到目前为止所做的全部更改)并将其分发给预期的用户。此后,第一个编辑人员认为目前所做的更改是错误的,于是删除了所做的编辑并保存了文档。分发给用户的文档包含不再存在的编辑内容,并且这些编辑内容应认为从未存在过。如果在第一个编辑人员确定最终更改前任何人都不能读取更改的文档.则可以避免该问题。 不一致的分析(非重复读):当第二个事务多次访问同一行而且每次读取不同的数据时,会发生不一致的分析问题。不一致的分析与未确认的相关性类似,因为其他事务也是正在更改第二个事务正在读取的数据。然而,在不一致的分析中,第二个事务读取的数据是由已进行了更改的事务提交的。而且,不一致的分析涉及多次(两次或更多)读取同一行,而且每次信息都由其他事务更改;因而该行被非重复读取。例如,一个编辑人员两次读取同一文档,但在两次读取之间,作者重写了该文档。当编辑人员第二次读取文档时,文档已更改。原始读取不可重复。如果只有在作者全部完成编写后编辑人员才可以读取文档,则可以避免该问题。 幻像读:当对某行执行插入或删除操作,而该行属于某个事务正在读取的行的范围时,会发生幻像读问题。事务第一次读的行范围显示出其中一行己不复存 第二章 系统相关技术介绍 9 在于第二次读或后续读中,因为该行已被其他事务删除。同样,由于其他事务的插入操作,事务的第二次或后续读显示有一行已不存在于原始读中。例如,一个编辑人员更改作者提交的文档,但当生产部门将其更改内容合并到该文档的主副本时,发现作者已将未编辑的新材料添加到该文档中。如果在编辑人员和生产部门完成对原始文档的处理之前,任何人都不能将新材料添加到文档中,则可以避免该问题。通过使用多种类型的锁机制和多版本一致性模型解决这些问题。 2.读一致性 支持的读一致性包括:保证语句所看到的数据集在语句执行过程中不会改变。保证数据库数据的读操作不会等待写操作,也不会等待对相同数据的其他读操作。保证数据库数据的写操作不会等待对相同数据的读操作。如果尝试更新并发事务中的相同数据行,保证写操作不会等待其他写操作。 为了管理多版本一致性模型的一个读一致集。当更新数据时,提交之前,Oracle必须在同时对表进行杳询和更新操作时,创建数据更新前的数据被保存到数据库的撤销记录中。当事务没有任何用户的查询操作所看到的数据都是更新前的数据。例如,使用系统全局区和撤销记录中的信息构建表数据的读一致视图。只有当事务提交,完成对数据库的更新之后,在用户事务之后的语句所看到的数据才是修改之后的数据。事务是Oracle 提供读一致性的主要策略。 3.锁机制 Oracle使用锁机制控制对数据的访问。当更新信息的时候,数据服务器使用锁控制数据,只有当更新操作提交之后才释放控制权。当某个事务获得数据的锁之后,其他事务将不能对这些信息进行修改操作,从而保证了系统的数据完整性。 4.静默数据库 数据库管理员有时需要在非并发数据库事务下操作,一种方法是关闭数据库,然后在指定模式下打开数据库。提供了一种新的特性,数据库管理员可以将数据库置于静默状态,不需要中断当前用户的操作,执行一些数据库操作。 5.真正应用集群 真正应用集群包含运行在多个集群机器上的众多实例,这些实例之间彼此保持通信。RAC 使用集群软件,访问驻留在共享磁盘上的共享数据库,为用户提供更高的规模、可靠性。RAC 同时能够支持大型事务下和数据仓库系统,为大型企业应用提供更高的性能,同时节省IT 投资。 6.可移植性 Oracle 能够在多个平台上进行移植,保证应用不需要进行修改,就可以访问不同平台上的数据库系统.保证Oracle 能够成功移植,是因为Oracle的代码是跨平台的,用户在需要的时候,可以对服务器进行升级,而不会对数据库系统和应用产生影响。 10 陕西省地税局财务系统档案管理子系统的设计与实现 7.可管理性 管理Oracle 数据库系统操作的人称为数据库管理员,也就是DBA 。DBA 负责创建数据库、保证数据库正常运行、监视数据库的使用情况。除了替告和提示之外,Oracle 还提供了大量的工具,支持DBA 的管理工作。 2.2.3 Oracle Text Oracle一直致力于全文检索技术的研究。Oracle Text使Oracle具备了强大的文本检索能力和智能化的文本管理能力。使用Oracle Text,可以方便而有效地利用标准的SQL工具来构建基于文本的新的开发工具或对现有应用程序进行扩展。应用程序开发人员可以在任何使用文本的Oracle数据库应用程序中充分利用Oracle Text搜索,应用范围可以是现有应用程序中可搜索的注释字段,也可是实现涉及多种文档格式和复杂搜索标准的大型文档管理系统。Oracle Text支持Oracle数据库所支持的大多数语言的基本全文搜索功能。 Oracle Text索引建立过程如图2-1所示。 图2.1 Oracle Text索引创建过程 Oracle Text 索引文档时所使用的主要逻辑步骤如下: 1. 数据存储逻辑搜索表的所有行,并读取列中的数据。通常,这只是列数据,但有些数据存储使用列数据作为文档数据的指针。例如,URL_DATASTORE 将列数据作为 URL 使用。 2.过滤器提取文档数据并将其转换为文本表示方式。存储二进制文档 (如 Word 或 Acrobat 文件) 时需要这样做。过滤器的输出不必是纯文本格式 -- 它可以是 XML 或 HTML 之类的文本格式。 第二章 系统相关技术介绍 11 3.分段器提取过滤器的输出信息,并将其转换为纯文本。包括 XML 和 HTML 在内的不同文本格式有不同的分段器。转换为纯文本涉及检测重要文档段标记、移去不可见的信息和文本重新格式化。 4.词法分析器提取分段器中的纯文本,并将其拆分为不连续的标记。既存在空白字符分隔语言使用的词法分析器,也存在分段复杂的亚洲语言使用的专门词法分析器。 5.索引引擎提取词法分析器中的所有标记、文档段在分段器中的偏移量以及被称为非索引字的低信息含量字列表,并构建反向索引。倒排索引存储标记和含有这些标记的文档。 在应用程序开发中使用Oracle Text的步骤比较简单,大致可以分为以下几个步骤: 1.建表和文本装载: 建表即为文本的存储创建对应的表结构。具体的表结构需要考虑具体的应用程要实现文本的全文检索首先必须把正确的文本加载到数据库表中,默认的建立序的需求。 索引行为要求将文档装载在文本列中,尽管可以用其它方式 (包括文件系统和 URL 形式)存储文档。默认情况下,系统应该将文档装载在文本列中。文本列可以是VARCHAR2、CLOB、BLOB、CHAR或BFILE。 关于文档格式,因为系统能为包括HTML、PDF、Microsoft Word和纯文本在内的大多数文档格式建立索引,可以将其中的任何文档类型装载到文本列中。 装载方法主要有以下五种。 1)SQL INSERT 语句 2)ctxload 可执行文件 3)SQL*Loader 4)从 BFILE 中装载 LOB 的 dbms_lob.loadfromfile() PL/SQL过程 5)Oracle Call Interface 2.为文本建立索引 文本装入文本列后,就可以创建Oracle Text索引。文档以许多不同方案、格式和语言存储。因此,每个 Oracle Text 索引有许多需要设置的选项,以针对特定情况配置索引。创建索引时,Oracle Text可使用若干个默认值,但在大多数情况下要求用户通过指定首选项来配置索引。 每个索引的许多选项组成功能组,称为“类”,每个类集中体现配置的某一方面,可以认为这些类就是与文档数据库有关的一些问题。例如:数据存储、过滤器、词法分析器、相关词表、存储等。 每个类具有许多预定义的行为,称之为对象。每个对象是类问题可能具有的 12 陕西省地税局财务系统档案管理子系统的设计与实现 答案,并且大多数对象都包含有属性。通过属性来定制对象,从而使对索引的配置更加多变以适应于不同的应用。 1)存储(Storage)类 存储类指定构成Oracle Text索引的数据库表和索引的表空间参数和创建参数。它仅有一个基本对象:BASIC_STORAGE,其属性包括:I_Index_Clause、I_Table_Clause、K_Table_Clause、N_Table_Clause、P_Table_Clause、R_Table_Clause。 2)数据存储(Datastore)类 数据存储:关于列中存储文本的位置和其他信息。默认情况下,文本直接存储到列中,表中的每行都表示一个单独的完整文档。其他数据存储位置包括存储在单独文件中或以其 URL 标识的 Web 页上。七个基本对象包括:Default_Datastore、Detail_Datastore、Direct_Datastore、File_Datastore、 Multi_Column_Datastore 、URL_Datastore、User_Datastore。 3)文档段组(Section Group)类 文档段组是用于指定一组文档段的对象。必须先定义文档段,然后才能使用索引通过 WITHIN 运算符在文档段内进行查询。文档段定义为文档段组的一部分。包含七个基本对象:AUTO_SECTION_GROUP、BASIC_SECTION_GROUP、HTML_SECTION_GROUP、NEWS_SECTION_GROUP、NULL_SECTION_GROU- P、XML_SECTION_GROUP、PATH_SECTION_GROUP。 4)相关词表(Wordlist)类 相关词表标识用于索引的词干和模糊匹配查询选项的语言,只有一个基本对象BASIC_WORDLIST,其属性有:Fuzzy_Match、Fuzzy_Numresults、Fuzzy_Score、Stemmer、Substring_Index、Wildcard_Maxterms、Prefix_Index、Prefix_Max_Length、Prefix_Min_Length。 5)索引集(Index Set) 索引集是一个或多个Oracle 索引 (不是Oracle Text索引) 的集合,用于创建 CTXCAT类型的Oracle Text索引,只有一个基本对象BASIC_INDEX_SET。 6)词法分析器(Lexer)类 词法分析器类标识文本使用的语言,还确定在文本中如何标识标记。默认的词法分析器是英语或其他西欧语言,用空格、标准标点和非字母数字字符标识标记,同时禁用大小写。包含8个基本对象:BASIC_LEXER、CHINESE_LEXER、CHINESE_VGRAM_LEXER、JAPANESE_LEXER、JAPANESE_VGRAM_LEXER、KOREAN_LEXER、KOREAN__MORPH_ LEXER、MULTI_LEXER。 7)过滤器(Filter)类 过滤器确定如何过滤文本以建立索引。可以使用过滤器对文字处理器处理的文档、格式化的文档、纯文本和 HTML 文档建立索引,包括5个基本对象: 第二章 系统相关技术介绍 13CHARSET_FILTER、INSO_FILTER INSO、NULL_FILTER、PROCEDURE_FILTER、USER_FILTER。 8)非索引字表(Stoplist)类 非索引字表类是用以指定一组不编入索引的单词 (称为非索引字)。有两个基本对象:BASIC_STOPLIST (一种语言中的所有非索引字) 、 MULTI_STOPLIST (包含多种语言中的非索引字的多语言非索引字表)。 3.查询 建立了索引,就可以使用 SELECT 语句中的 CONTAINS 运算符发出文本查询。使用 CONTAINS 可以进行两种查询:单词查询和ABOUT查询。 1)词查询示例 词查询是对输入到 CONTAINS 运算符中单引号间的精确单词或短语的查询。在以下示例中,我们将查找文本列中包含 oracle 一词的所有文档。每行的分值由使用标签 1 的 SCORE 运算符选定: SELECT SCORE(1) title from news WHERE CONTAINS(text, 'oracle', 1) > 0; 在查询表达式中,可以使用 AND 和 OR 等文本运算符来获取不同结果。还可以将结构性谓词添加到 WHERE 子句中。可以使用 count(*)、CTX_QUERY.COUNT_HITS 或 CTX_QUERY.EXPLAIN 来计算查询的命中 (匹配) 数目。 2)ABOUT查询示例 在所有语言中,ABOUT查询增加了某查询所返回的相关文档的数目。在英语中,ABOUT 查询可以使用索引的主题词组件,该组件在默认情况下创建。这样,运算符将根据查询的概念返回文档,而不是仅依据所指定的精确单词或短语。例如,以下查询将查找文本列中关于主题 politics 的所有文档,而不是仅包含 politics 一词的文档: SELECT SCORE(1) title from news WHERE CONTAINS(text, 'about(politics)', 1) > 0; 4.显示满足查询条件的文档 通常,通过使用Oracle Text查询应用程序,用户可查看查询所返回的文档。用户从命中列表中选择一个文档,然后应用程序以某种形式显示该文档。通过Oracle Text,可以用不同的方式再现文档。例如,可以通过突出显示查询词来显示文档。突出显示的查询词可以是相关词查询中的词,也可以是英文 ABOUT 查询中的主题词。 以下是关于输出效果和用于每个输出效果的过程的信息:  突出显示的文档,纯文本格式版本(CTX_DOC.MARKUP)  突出显示的文档,HTML版本(CTX_DOC.MARKUP)  突出显示纯文本格式版本的偏移量信息(CTX_DOC.HIGHLIGHT) 14 陕西省地税局财务系统档案管理子系统的设计与实现  突出显示HTML 版本的偏移量信息(CTX_DOC.HIGHLIGHT)  纯文本格式版本,无突出显示(CTX_DOC.FILTER)  HTML版本文档,无突出显示(CTX_DOC.FILTER) 5.索引维护 索引建好后,如果表中的数据发生变化,比如增加或修改了记录,怎么办?由于对表所发生的任何DML语句,都不会自动修改索引,因此,必须定时同步(sync)和优化(optimize)索引,以正确反映数据的变化。 在索引建好后,可以在该用户下查到Oracle自动产生了以下几个表:(假设索引名为myindex): DR$myindex$I,DR$myindex$K,DR$myindex$R,DR$myindex$N 其中以I表最重要,可以查询一下该表: select token_text, token_count from DR$ myindex $I where rownum<=20; 可以看到,该表中保存的其实就是Oracle 分析文档后,生成的term记录在这里,包括term出现的位置、次数、hash值等。当文档的内容改变后,可以想见这个I表的内容也应该相应改变,才能保证Oracle在做全文检索时正确检索到内容(因为所谓全文检索,其实核心就是查询这个表)。那么如何维护该表的内容,不能每次数据改变都重新建立索引,这就要用到sync 和 optimize了。 同步(sync):将新的term 保存到I表; 优化(optimize):清除I表的垃圾,主要是将已经被删除的term从I表删除。 Oracle提供了一个所谓的ctx server来做这个同步和优化的工作,只需要在后台运行这个进程,它会监视数据的变化,及时进行同步。另外,也可以用定义用户自己的job来定时完成该工作。 2.3 本章小结 税务档案管理系统主要的核心是围绕数据库进行的。数据库的全文检索技术为用户提供了易用的检索接口,而Oracle Text技术是建立在Oracle Database已有的众多技术之上的,因此需要首先了解Oracle数据库的基本原理。本章简述了税务档案管理开发拟采用的MVC和B/S的概念,介绍了数据库的相关知识和Oracle Text的原理和开发步骤,为后续内容的阅读做好准备。 第三章 系统需求分析 15第三章 系统需求分析 本章具体描述陕西税务档案管理系统的业务流程、需求分析、模块划分、数据库设计及系统组成,并进行相应的分析。 3.1 项目概述 针对目前陕西省税务系统内部档案管理手段落后、效率低下、多名用户之间无法共享同一份税务档案,各地市税务档案管理系统各自为政,档案无法在全系统流通的现状,开发一套陕西税务档案管理系统,实现全省税务档案的统一管理和共享,能够为档案借阅者提供方便的、实时高效的档案借阅和检索服务,为各级税务机构提供完善、安全的档案归档服务,从而为在陕西税务系统中实现数字化的“无纸化”办公奠定基础。 1.系统目标 本系统是对陕西省税务系统内部的各种档案进行归档、整理,进而执行全面管理的档案管理系统;同时为税务系统各级工作人员提供全面的档案检索的软件平台,通过Web方式提供简单方便的档案查阅功能。为各级税务机构提供完善的档案管理功能,对档案从录入、归档、查阅到销毁提供全面支持。系统将建立全省统一的档案数据中心,提供完整的数据备份等方式来保证档案的安全。 2.主要解决的关键技术 本系统将采用关系数据库与全文检索相结合的方式来管理档案数据,为借阅者提供全面的检索支持,包括基于多条件和关键字的查询。本文主要针对关系数据库与全文检索的结合进行设计。 3.项目范围 项目的开发范围包括整个陕西税务档案管理系统的设计与实现,主要包括系统的架构、全文检索与数据库结合的设计和各模块的功能设计实现,具体包括以下三个部分的内容。 1)本文论述陕西税务档案管理系统的整体架构设计,包括系统架构、网络架构2)关系数据库与全文检索的结合是本文的关键技术,将论述如何采用Oracle数和应用软件体系架构; 据库提供的基础知识来实现基于关系和基于关键字的查询机制,并论述完整的数据库实现方案; 3)根据业务需求说明,系统将在功能设计部分对部分核心业务模块进行详细的功能设计实现。 16 陕西省地税局财务系统档案管理子系统的设计与实现 4.用户特点 本系统面向的用户有三类用户:系统管理员、档案管理员和普通用户。 系统管理员负责系统内的人员维护以及为了保证系统正常运行的支持工作。负责设置和维护全省范围内的系统参数。具有很高的计算机操作和维护能力,并对整个档案管理系统的架构和内部参数非常熟悉。 档案管理员为陕西税务各级机构内的专业档案管理人员,具有较高的计算机操借阅者为陕西税务各级机构内的工作人员,一般来讲,计算机操作能力较差,作和维护能力,其主要的职能是完成档案的录入、归档、销毁等管理性职能。 主要是利用档案管理系统来查阅档案,从而完成自己的工作。 3.2 系统需求分析 3.2.1 业务流程设计 税务档案管理系统业务主要包括两部分:档案整理和档案利用[11,12]。如图3.1所示。 图3.1 业务流程图 下面分别介绍每个步骤中完成的主要功能。 1.档案整理 档案整理主要是将各类档案输入到档案管理系统中,并根据用户的归档要求,1)著录:主要指的是将档案输入到档案管理系统中。税务系统中,档案的种类进行相应的归档工作。可分为两个步骤:著录和整理。 第三章 系统需求分析 17非常多,从大的角度可以分为电子文档和纸质文档。纸质文档需要通过手工录入或者电子扫描的方式录入到系统中,而电子文档可以通过系统导入的方式直接进入档案管理系统,也可以通过与某些信息系统建立的数据接口,将档案录入到档案管理系统中。 2)整理:著录结束后,档案被放置在待归档数据库中。此时,用户可以根据自己在系统中设定的归档条件和归档方式,对待归档数据库中的文档进行归档。系统允许用户自定义自己的归档条件,归档方式主要分为按卷归档和按件归档。 2.档案利用 档案利用主要是对档案全文数据库中已经归档的文档进行的各种管理工作,包1)档案查询:针对档案全文数据库,支持关系查询,即根据用户输入的多个条括档案查询、档案借阅、档案保管和统计分析等工作。 件进行查询;关键字查询,即根据用户输入的关键在,在数据库中进行跨类别和跨库的档案查询; 2)档案借阅:某些用户在工作中,需要查阅纸质档案的原件,因此系统需要提3)档案编研:是以档案文献为主要对象,按照一定的题目,在充分研究档案内供档案借阅管理功能,其中包含了档案借阅的审批流程; 容的基础上,通过汇编、编述、著作等手段,以一定的成果形式提供给利用者的一项工作。系统需要提供相关辅助功能。 4)档案保管:主要是对过期档案的销毁以及纸质档案的库房保管的管理工作,5)统计分析:对数据库中各类档案进行各种统计分析工作;对档案查询和借阅6)导出:主要是针对用户需要的各种不同数据存储格式,例如PDF、DOC等,其中过期档案的销毁也必须有对应的审批流程; 情况进行的各种统计分析工作。 进行格式的转换工作。 3.2.2 业务功能分析 在税务系统中,不同的税务机构都有自己的文档需要管理。而采用全省集中式的档案管理,所有档案统一放置在省中心的数据库中,则需要完整的权限管理来讲不同机构管理的档案分离开来。 通过对业务需求的分析,陕西税务管理系统主要完成以下六方面的功能: 1.税务档案管理系统需要对各级税务机构以及各级管理员的身份和角色权限进行管理的功能,同时也包含了众多的系统参数的设置,例如组卷条件和组卷方式等参数; 2.税务档案管理系统需要根据设置好的参数,对档案进行组卷和正式归档, 18 陕西省地税局财务系统档案管理子系统的设计与实现 将档案从待归档数据库中迁移到归档全文数据库中,并为已经归档的文档建立对应的全文索引。 税务档案管理3.为普通用户提供多种电子档案的查询手段,主要包括基于关系的查询和基4.为需要纸质介质的档案的普通用户提供档案借阅管理流程,包括借阅的申5.提供对过期档案的销毁支持,从全文数据库中移除。 6.统计分析,对文档库中文档的分类、文档的查询和借阅情况的进行统计分具体功能模块划分如图3.2所示。 于关键字的查询两种方式; 请、审批等步骤。 析,生成对应的报表。并提供对应的查询和报表打印功能。 系统管理数据录入档案检索借阅管理档案销毁统计分析签到/签退人工组卷关系检索借阅申请销毁申请报表定制机构管理自动组卷关键字检索借阅审批销毁审批报表查询操作员管理档案归档档案借阅档案销毁报表打印权限集管理参数管理 图3.2 税务档案系统模块划分 以下对各大功能模块做简要论述: 1.系统管理模块 该模块主要包括签到/签退、税务机构管理、人员管理、权限集管理、参数管理等子模块。 2.数据录入模块 该模块主要是将用户输入的档案进行组卷,包括人工组卷、自动组卷两种组卷方式,并提供归档功能。包括人工组卷、自动组卷和归档等子模块。 3.档案检索模块 第三章 系统需求分析 19该模块主要为查阅者提供电子档案的检索支持。为了方便借阅者,同时提供基于关系的检索和基于关键字的检索两种检索方式。 4.借阅管理模块 该模块包括借阅申请、借阅审批和借阅等子模块,在此需要遵循税务系统的内部档案借阅管理流程。 5.档案销毁模块 该模块包含档案销毁申请、档案销毁审批和档案销毁等子模块。在此需要遵循税务系统的内部档案销毁管理流程 6.统计分析模块 该模块包含报表定制、报表查询、报表打印等子模块,通过报表来体现各个统计分析的结果。 各个模块都在税务档案管理系统应用服务器上部署,所有模块之间的数据交换都在该应用服务器上进行处理,交换的方式主要通过数据库来完成。通过应用程序和数据库设计,来完成各个税务机构档案之间的隔离,同时又提供全省统一的档案数据库。该数据库设计采用双机热备的方式,保证数据的安全性。 系统中的核心模块是组卷归档模块和档案检索模块。组卷归档模块是按照用户定义的组卷方式,将档案进行组卷,并进行合理的归档。在归档的过程中,为了支持后续的全文检索,需要针对该卷档案建立全文索引,因此组卷归档模块是税务档案管理系统中信息的总输入口。而档案检索模块则是税务档案管理系统中被使用频率最高的模块,电子档案管理中,大量的用户都是通过电子手段来查阅已有的档案,只有少部分用户需要借阅纸质档案,因此档案检索模块中界面设计的好坏、查询交易的响应时间都是至关重要的。同时,为了保证查询的效率,数据库中存取路径的设计,也至为重要。本文第五章将对组卷归档模块和档案检索模块进行详细的设计和实现。 3.2.3 数据库需求分析 税务档案管理系统的数据来源于两个渠道:一个渠道是下级各级税务机构中的专业档案管理人员,将档案输入税务档案管理系统;一个渠道是目前税务系统中已经使用的各类信息系统,可以通过接口或数据抽取和转换程序,自动地从这些系统中抽取档案数据。 在税务档案管理系统对外提供的数据检索服务上,主要包含两种:基于关系的查询和基于关键字的查询。其中基于关键字的查询,要求对全省所有的档案创建倒序索引,否则无法为用户提供全省档案的检索。这有点类似于互联网上的搜索 20 陕西省地税局财务系统档案管理子系统的设计与实现 引擎。搜索引擎为网民提供基于关键字的检索服务,它必须尽可能的将全球所有Web网页的内容收集到自己的数据库中,这样才能为用户提供该网页的检索服务。如果部分网页没有被搜索引擎搜集到,则用户无法通过搜索引擎访问到该网页。目前互联网上的各个搜索引擎都没有也无法将全球所有的网页收集完全。同时,根据陕西省税务档案管理系统的总体目标,全省税务档案数据将集中存放在省中心,全省各级税务机构的职责是完成档案数据的录入、检索等,而不负责数据的存储和维护工作。 图3.3 数据库地市存放和省中心存放比较示意图 因此,陕西省税务档案管理系统中的数据库将采用全省集中存储的解决方案。 这种大集中的数据库体系具有以下优点: 1.在全省范围内,实现了税务系统内部的档案共享,也解决了档案在各级机2.除了为用户提供基于关系的传统的档案查询手段之外,基于统一的数据库构内部多出存放的问题,从而保证了档案在税务系统内部的一致性; 可以建立全局的档案的倒序索引,为用户提供基于关键字的查询,从而降低了对用户操作计算机和学习专业档案知识的要求,同时也为税务系统下一步对公众开放税务档案的检索服务打下了扎实的基础; 3.降低了下级税务机构档案管理的工作量。档案数据统一存放在省中心,下级税务机构都只通过客户端(即浏览器)来访问数据,自身无需维护众多的服务器,也无需维护档案数据,从而降低了对下级机构专业档案管理员的能力要求,降低了日常工作量,从而节省了IT成本支出; 4.全省统一的数据库,可以实现快速的档案共享和档案管理。传统上档案管理工作都需要专门的人员在专门的时间来进行,使得档案共享和档案的归档工作不能及时进行,甚至发生过今年6月份之后还在处理去年的档案,严重制约了档案的共享和管理。而全省统一的档案管理系统可以实现快速的档案共享和档案管 第三章 系统需求分析 21理,各级机构的档案工作人员可以在工作中实时的进行档案管理工作; 5.全省统一的数据库体系,通过与其它信息系统之间的接口进行互联互通,消除了税务系统中的“信息孤岛”,使得信息系统从档案管理的角度被连成了一体,为税务系统下一步的“数字化办公”打下了良好的基础。 同样,这种数据库体系在设计时,也必须考虑该体系存在的一些缺点: 1.省中心服务器的要求高;全省统一的数据库体系,要求省中心的服务器为全省提供服务,对计算机硬件资源的要求比较高。要求采用小型机或者PC服务器的集群模式来提供服务,普通的服务器无法满足要求; 2.服务端数据库结构复杂:同时为全省的税务系统用户服务,将来还要考虑为公众用户提供检索服务,因此在数据库体系设计时,还要考虑与应用服务器之间的关系,需要考虑负载均衡、数据库备份与恢复等问题,这都将导致数据库体系的机构比较复杂,导致维护困难; 3.数据的安全性要求高;全省的税务档案集中存放,对数据安全性提出了高要求。省中心数据库中任何数据的损坏,其影响也是全局性的,会造成该数据在全省税务系统内部无法访问。因此,必须在省中心数据库体系中进行完备的数据安全性设计,来保证数据的安全。其中采用双机热备的方式来保证数据服务的不间断运行;采用充分的数据备份方案,来保证数据安全。 4.维护人员素质要求高:由于上述服务器、数据库结构和数据安全的高要求,同样也对维护人员提出了高要求。要求维护人员必须具备操作系统、数据库、网络等知识之外,还要求具备对双机热备、负载均衡和数据库的备份与恢复等知识,因此维护人员的素质要求相当高; 5.恢复困难。由于数据量的巨大以及档案管理系统对生产系统的支持,包括和众多信息系统之间的数据关联,一旦由于异常造成了数据库崩溃后,这种数据库系统的恢复时异常复杂和困难的。 不过,总体上来讲,这种数据库体系的设计是利大于弊。而在文中提到的这些除了数据库的体系设计之外,考虑到全省数据集中存放,要求数据库可支持的缺点在实施的过程中,是可以采取手段予以避免。 数据库容量为20TB,三年内可支持100TB。另外在数据检索速度、并发、数据安全和数据备份与恢复方面也必须有完善的考虑。 3.2.4 系统结构分析 B/S(Browser/Server,浏览器/服务器)结构是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构[15-17]。在这种结构下,用户工作界面是通过浏览器来实现,极少部分事务逻辑在前端(Browser)实现,主要事务逻辑在服务器端 22 陕西省地税局财务系统档案管理子系统的设计与实现 (Server)实现。B/S三层体系结构采用三层:客户层/中间层/服务器层结构,在数据管理层(Server)和用户界面层(Client)增加了一层结构,称为中间层,使整个体系结构成为三层。三层结构是伴随着中间件技术的成熟而兴起的,核心概念是利用中间件将应用分为表示层、业务逻辑层和数据存储层三个不同的处理层次。三个层次的划分是从逻辑上分的,具体的物理分法可以有多种组合。中间件作为构造三层结构应用系统的基础平台,提供了以下主要功能:负责客户机与服务器、服务器与服务器间的连接和通信;实现应用与数据库的高效连接;提供一个三层结构应用的开发、运行、部署和管理的平台。这种三层结构在层与层之间相互独立,任何一层的改变不会影响其它层的功能。 数据库数据库数据库工作流引擎数据库接口事务处理应用服务层(业务逻辑)Web Server 服务层互联网税务专网浏览器浏览器浏览器 图3.4 系统网络结构示意图 在B/S体系结构系统中,用户通过浏览器向分布在网络上的服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。而其余如数据请求、加工、结果返回以及动态网页生成、对数据库的访问和应用程序的执行等工作全部由Web Server完成。随着Windows将浏览器技术植入操作系统内部,这种结构已成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序是一个非常大的进步[18,19]。 B/S结构的主要特点是分布性强、维护方便、开发简单且共享性强、总体拥有成本低。B/S特别适合于大集中式的信息系统,因此,在陕西省税务档案管理系统 第三章 系统需求分析 23中采用B/S结构。 陕西省税务档案管理系统的系统结构示意图如3.4所示。 3.3 本章小结 本章从系统的业务流程、业务功能、数据库需求和系统结构进行了描述,总结了系统的需求分析,希望通过本章的阅读可以了解到系统建设的主要内容和项目的基本架构和流程需求,为下一章的总体设计做好准备。 第四章 税务档案管理系统设计 25第四章 税务档案管理系统设计 4.1 系统设计原则 根据金税工程及陕西省税务系统需求及业务功能要求,本系统在总体架构上按照四个方面原则进行设计[21,22,23]。 1.完整性:系统必须能够使全省的税务系统业务档案做到分布式采集、统一存储管理和分布式应用。符合金税三期总体框架设计的要求。 2.规范性:系统结构设计规范化,对税务档案的存储管理、数据结构、数据处理及前端应用都要有明确的标准规范。遵循国家与税务局的相关技术规范. 3.扩展性:目前系统设计满足陕西省税务系统内部的档案管理需求,未来还应该满足与其他信息系统之间的互联互通,以及内部档案对公众开放检索查询服务的需求。 4.继承性:应该在满足现有的档案管理功能的前提下,留有接口进行以后更多系统应用功能的整合和应用提升。 4.2 系统总体逻辑结构 根据第三章的需求分析,陕西省税务档案管理系统按三层架构设计,即:表示层、业务层和数据层。系统的总体结构见图4.1。 图4.1 系统逻辑结构图 下面分别对系统三层结构中的功能予以描述。 26 陕西省地税局财务系统档案管理子系统的设计与实现 一、数据层 数据层包括两个部分:档案管理数据库和档案全文检索数据库,分别利用了Oracle Database和Oracle Text。完成的主要功能包括: 1.档案管理信息系统本身使用的数据库,主要用来完成档案管理信息系统中的各种数据,包括人员、机构、参数、权限等,并存储档案管理信息系统的操作日志,以及各种档案的摘要信息; 2.存储各种档案。税务系统中的档案种类繁多,大致可以分为文档类档案,主要指TXT、WORD、PDF等电子文档;图像类档案,主要指图片、视频等。这种分类主要是考虑对全文检索的支持。在数据库中,需要利用Oracle Text为第一类文档类档案建立全文索引; 3.利用Oracle Text创建全文索引; 4.全文索引的同步维护和优化。 5.通过数据库提供的外部接口,接收并解析业务层所发出的SQL语句,并进行相关的数据处理,返回执行结果。 二、业务层 业务层主要包括三个小的层次,分别为Web服务器、应用功能模块和对象关系映射(Object Relational Mapping)层。 1.Web服务器,主要的功能为浏览器发送的客户请求进行响应,并根据用户的URL进行业务路由,即将用户的请求发送给相应的业务模块进行处理,并将处理结果返回给客户。在Web服务器上需要考虑用户并发的问题。这里我们选用Tomcat作为Web服务器。 2.应用功能模块,包括了税务档案管理系统中的系统管理、组卷归档、档案检索、借阅管理、保管管理和统计分析等业务功能。在J2EE架构中,业务功能模块是通过Servlet来实现。本系统选用的Tomcat服务器,是一个优秀的Servlet容器。每个业务模块作为一个Servlet部署到Tomcat服务器中。 3.对象关系映射。J2EE架构中,业务模块访问数据库有多种不同的方式,例如JDBC、ORM等。本系统中我们采用了ORM。主要的原因是采用ORM,隐藏了数据访问细节,使得通用的数据库交互变的简单易行,并且完全不用考虑复杂的SQL语句。本系统采用的ORM产品时Hibernate。 三、表示层 表示层主要指的是浏览器。本系统中所有用户的客户端软件都采用统一的浏览器软件,包括普通用户、档案操作员和系统操作员。 第四章 税务档案管理系统设计 274.3 系统网络结构设计 Web服务器档案数据库其他信息系统陕西税务档案管理系统的网络结构示意图如图4.2所示。 局域网局域网广域网系统管理员、档案管理员、普通用户等

图4.2 系统网络结构示意图 在系统网络结构示意图中,整个系统可以分为三个部分: 省中心服务器:包括Web服务器和档案数据库服务器,为全省提供业务支持和集中的数据存放; 其它信息系统:在未来,税务系统要实现档案管理系统与其它税务信息系统之间的互联互通,使得档案信息可以在系统之间共享和流通。为此预先设置了与其它系统之间的连接,以待后续扩充; 浏览器:税务系统中的各类用户,包括系统管理员、档案管理员和普通用户,均通过浏览器来使用档案系统提供的各类服务或各项管理工作,此处再无需任何的客户端软件,仅采用通用浏览器软件即可。 陕西省税务系统中建设有自己的内部网络系统,实现了全陕西省内部各级税务机构之间的网络互连。因此,本系统可以通过税务系统内部的广域网来实现全省档案管理系统的网络互连。 目前为止,陕西省税务系统已经建设了多个信息系统,通过内部自己的网络系统将这些信息系统连接在一起。从档案管理的角度来看,税务档案管理系统处 28 陕西省地税局财务系统档案管理子系统的设计与实现 在其网络的逻辑核心,将其他系统联系在一起,通过网络与各个系统的接口进行交互,来完成各种文档在系统之间的流通。 同时在部署是,将Web服务器与数据库服务器相隔离。系统上采用双机热备的技术方案,来保证应用不间断运行的要求。同时在数据管理上,为保证数据的安全性和可靠性,采用Oracle RAC方案。 根据第三章需求分析中的论述,本系统在未来需要考虑为公众用户提供税务档案的检索服务。因此,在网络方案设计上,需要有所考虑。可以再服务器端,通过网关、路由设备等,与外部公众网络进行连接,通过防火墙保障数据的安全。 4.4 系统软件结构设计 陕西省税务档案管理系统中,档案的数据来源有两个:一个来源是下级税务机构档案操作员通过浏览器提交上来的电子档案;一个来源是从其它信息系统中自动传送过来的电子档案。而从全文检索的角度,电子档案可以被分为两类:一类是可以提供全文检索服务的电子档案,例如TXT、WORD、PDF等,Oracle Text技术可以直接为此类文档建立全文索引;一类是图片、音频、视频等电子档案,此类档案无法创建全文检索,因为全文检索是基于文本的[24-26]。 因此,在软件结构设计上需要考虑两种不同类型的文档,它们需要不同的处理方法。可以提供全文检索服务的电子档案,与档案管理系统中的其它数据,统一存放在数据库中,通过Oracle统一的外部接口(即SQL语句)进行访问;而无法创建全文检索的电子档案,则存放在文件系统中,而在数据库中只存放文档的简单信息和在文件系统中的路径信息,以方便访问。 根据业务需求分析,服务器端系统软件结构如图4.3所示。 Web服务器系统管理数据录入档案检索借阅管理档案销毁统计分析系统基础服务:权限、日志、工作流引擎等关系对象映射(ORM)JDBC for Oracle Text数据库文件系统 图4.3 服务器端系统结构图 第四章 税务档案管理系统设计 29 从技术角度讲,服务器端采用J2EE架构。而税务档案管理系统中的各个业务功能,则是通过Servlet和Ejb来实现。从技术角度讲,系统的软件结构示意如图4.4所示。 浏览器Web服务器EJB容器HTMLJSPEJB数据JavaAppletServletEJB其它系统J2EE平台J2EE平台 图4.4 系统软件技术结构图 下面对系统软件结构图4.3中的各个功能模块做简要描述。 档案管理系统中服务端软件分为五个层次: 数据库层是服务端的所有数据存储,是档案管理系统的基础; 数据操作层是对系统中所有数据库操作的封装,针对系统的需求又分为ORM和JDBC。关系对象映射,档案管理系统中的其它系统数据,如用户信息、参数、日志等通过关系对象映射技术进行访问。关系对象映射为系统提供了通用的数据库访问接口。JDBC也是一种数据库访问方式。本系统中对可以创建全文检索的档案采用将档案直接存放在数据库的方式。而对此类档案存放的数据库表进行的访问,需要使用SQL语句进行访问,因此无法通过ORM进行,只能通过JDBC方式进行访问。 系统基础服务层:通过使用数据库操作层封装的各项数据服务,为上层应用业务功能提供基础的系统服务,包括系统权限管理,系统日志记录等。另外在档案借阅和档案销毁中,需要工作流引擎的支持。因此在系统基础服务中,通过开源的嵌入式工作流引擎来提供此服务。 业务逻辑层,包括了档案管理系统中的各项基本业务功能,有系统管理、数据录入、档案检索、档案借阅、档案销毁和统计分析。每个业务功能模块包含的基本业务功能如下。 系统管理:包括签到/签退、税务机构管理、人员管理、权限集管理、参数管理等子模块,主要提供系统级的功能。 30 陕西省地税局财务系统档案管理子系统的设计与实现 组卷归档:主要提供人工组卷、自动组卷两种组卷方式,并提供归档功能。在归档功能中,为文本类的电子档案创建对应的全文索引,并存储在数据库中。 档案检索:该模块主要为查阅者提供电子档案的检索支持。为了方便借阅者,同时提供基于关系的检索和基于关键字的检索两种检索方式。基于关系的检索即常规的对数据库表中属性进行的查询;而基于关键字的查询,则是建立在全文索引的基础上进行的相似性匹配查询。 档案借阅管理:包括借阅申请、借阅审批和借阅等功能,在此需要遵循税务系统的内部档案借阅管理流程。在底层嵌入式工作流引擎的支撑下,提供借阅管理的流程控制。 档案保管:包含档案库存管理、档案销毁申请、档案销毁审批和档案销毁等功能。在此需要遵循税务系统的内部档案销毁管理流程。在底层嵌入式工作流引擎的支撑下,提供档案销毁的流程控制。 统计分析:包含报表定制、报表查询、报表打印等功能,通过报表来体现各个统计分析的结果。 最上层的是Web服务层,提供对用户各项请求的响应,包括建立链接、交易分配等通用功能。 4.5 系统数据库设计 数据库可以理解为一个或多个企业或部门中,为多个用户服务的、在计算机上可运行的、有结构的数据集合。从业务需求研制一个数据结构的过程称为数据库设计,一般来说,数据库设计要经历:需求分析(数据规划或信息需求分析)、概念设计、逻辑设计和物理设计这几个步骤。数据库设计是把现实世界的商业模型与信息需求转换成数据库的模型的过程,它是建立数据库系统的核心环节,数据库及其应用的性能和调优都是建立在良好的数据库设计的基础上。 4.5.1 规范化设计原则 数据库设计是应用程序设计的基础,其性能直接影响应用程序的性能。数据库性能包括存储空间需求量的大小和查询响应时间的长短两个方面。为了优化数据库性能,需要对数据库中的表进行规范化[20]。 规范化就是满足适当范式的模式,通常可以通过判断分解后的模式达到几范式来评价模式规范化。范式级别从低到高有:1NF、2NF、3NF、BCNF、4NF及5NF,通过分解,可以将一个低一级范式的关系模式转换成若干个高一级范式的关系模式。产生冗余和异常的两个主要原因是部分依赖和传递依赖。因为3NF和BCNF模式中不存在非主属性对码的部分函数依赖和传递函数依赖,所以具有较好的性 第四章 税务档案管理系统设计 31能。数据库模式通常要变换成为3NF或更高级别的范式。 规范化的优点是:减低了数据冗余度,从而减少数据库的存储空间;保证数据增加、删除和修改等操作的有效正常进行,维护了数据的一致性。规范化主要强调实现存储的灵活性和高效性,可以使规范化的结构占用最小的存储空间,增强数据库的存储效率。 然而,在数据仓库中对数据模型进行规范化处理后,结果并不理想。因为经过规范化处理以后的数据模型形成了一系列的小表,每个表的数据量较小。为完成对这些小表的处理需要应用程序对这些表进行动态的互联操作,这就需要在不同的表中进行IO操作,从而降低了查询速度。基于这个缺点,加上存储成本的日益降低,同时考虑到一些应用需要较快的响应速度,综合考虑权衡存储与性能,在设计表时应考虑对某些表采取分割表、保留冗余列、增加派生列等方法进行反规范化处理,通过降低表的规范化程度,牺牲存储的灵活性和高效性,以取得快速的访问效率。 数据库设计的另一个重要问题就是完整性约束。完整性规则提供了一种手段来保证当授权用户对数据库作修改时不会破坏数据的一致性。关系模型的完整性规则是对关系的某种约束条件。关系的完整性共分为三类: l)实体完整性(entity integrity):规定基本关系R的主属性不能取空值。在实际数据库设计中是通过定义主码又称主键 (primary key)来实现。 2)参照完整性 (referencial integrity):现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系是用关系来描述的,这样自然就存在着关系与关系间的引用。在数据库设计中是通过定义外码 (foreign key)来实现的。 3)用户定义完整性(user defined integrity):就是针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。 4.5.2 数据库建模 根据从需求分析中得到的数据字典、需求文档,创建了所属实体并确定实体间的联系后,形成了陕西地税档案管理系统的实体关系图。系统数据库设计的实体关系图如图4.5所示。 32 陕西省地税局财务系统档案管理子系统的设计与实现 角色权限档案借阅机构表角色操作日志档案类型登录日志用户表数据录入记录代码表机构管理员档案销毁记录档案分类 图4.5 系统数据库实体关系图 然后根据分析和转换规则,将实体和联系都转换成关系模式集。经过权衡存储空间与性能以及应用的需要,进行规范化与反规范化后,形成主要的数据库表集[9,10]。由于系统中涉及到的关系表为数众多,详细的表结构请参见附件。 除了系统使用的数据库表之外,在税务档案管理系统中,还需要考虑档案的具体存储。前文讲过,系统中档案分为两类:第一类是文本类档案,即Oracle Text可以对这些文档创建全文索引,包括TXT、WORD、PDF等;第二类是Oracle Text无法为其创建全文索引的档案,包括图片、视频、音频等档案。税务档案管理系统在处理这两类档案时采用了不同的处理方法。 第一类档案,在数据库中创建专门的数据库表,将档案本身直接存储在数据库表中,通过Oracle Text技术,通过专门的SQL语句来对档案进行访问; 第二类档案,由于Oracle Text无法为图片、视频和音频文件创建全文索引,因此将档案本身存储在数据库之外的文件目录中。 为此对应的两张数据库表结构表4.1和表4.2所示。 字段名 DOC_ID DOC_TYPE DOC_NAME ABSTRACT BRANCH DOC_DATE ARCHIVE_DATE DOC 表4.1 文本类档案表(t_text_docs) 中文字段名 字段类型 文档编号 NUMBER 文档类型 CHAR 文档名称 VARCHAR2 文档摘要 VARCHAR2 文档所述机构 NUMBER 文档日期 CHAR 归档日期 CHAR 文档 BLOB 字段长度 16 2 100 8 9 8 8 是否为空 N N N N N N N N 第四章 税务档案管理系统设计 33字段名 DOC_ID DOC_TYPE DOC_NAME ABSTRACT BRANCH DOC_DATE ARCHIVE_DATE FILE_NAME FILE_DIR 表4.2 图像类档案表(t_graph_docs) 中文字段名 字段类型 文档编号 NUMBER 文档类型 CHAR 文档名称 VARCHAR2 文档摘要 VARCHAR2 文档所述机构 NUMBER 文档日期 CHAR 归档日期 CHAR 文件名称 VARCHAR2 文件目录 VARCHAR 字段长度 16 2 100 8 9 8 8 100 256 是否为空 N N N N N N N N N 4.6 本章小结 本章介绍了陕西省税务档案管理系统的总体设计,通过对该系统的逻辑结构、网络结构和软件体系结构的设计介绍,使读者对系统结构更加了解。本章也对系统的数据库设计做了介绍,给出了数据库设计的ER模型,同时对档案存储的数据库表设计进行了介绍,阐述了两种不同档案类型的处理方法的差异。 第五章 系统功能详细设计与实现 35第五章 系统功能详细设计与实现 由于本文篇幅所限,本文仅对系统中的系统管理、数据录入、档案检索、档案销毁和档案借阅模块进行详细分析和设计,并给出实现结果 5.1系统管理模块的设计与实现 系统管理模块中包含签到/签退、机构管理、操作员管理、权限集管理和参数管理。本文中主要论述操作员管理和参数管理两个功能模块的设计与实现。 5.1.1 操作员管理 1.操作员管理功能模块设计 档案管理系统属于陕西信息化工作平台,与陕西地税信息化工作平台使用同一登录界面。本系统作为省地税财务系统的一个部分,用户管理、权限的分配由系统管理子系统统一设置,在本子系统中只调用相关接口进行数据同步。 主要的接口内容包括: 1)addUser:增加用户,向全局用户表中增加一个新的用户,要求确定该用户的ID、姓名、密码和所属单位; 2)deleteUser:删除用户,从全局用户表中删除一个已有用户; 3)changePassword:修改用户密码; 4)updateUser:修改用户,对登记在全局用户表中的用户信息进行修改,例如修改姓名、电话、地址等信息; 5)日志记录接口:主要有两个接口:插入日志和日志查询。 日志插入接口:通过该接口,档案管理子系统可以将本系统内部的操作日志情况,放入到全局日志记录表中,形成统一的管理。 日志查询接口:提供对历史日志信息进行查询的功能。 在档案管理子系统中,用户管理上采用了基于角色的授权机制,因此全局软件平台提供的用户管理功能并不能完全满足需要。为此,在系统中设置了角色、角色权限表,对系统中的所有功能进行编码;设置各种不同的角色,例如管理员、普通用户,同时也按照管理机构级别的不同,设置了不同类型的角色。某个用户进入系统后的权限,由他所属的角色确定。 系统提供人机界面来进行维护。 2.操作员管理模块实现 36 陕西省地税局财务系统档案管理子系统的设计与实现 根据登录提供的用户名和密码通过接口判断是否为合法用户: 该模块对应的核心算法如下所示。 Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\"); Connection connect; connect=DriverManager.getConnection(\"jdbc:odbc:FinancialDataSource\Statement state; String actNumber,actNo, password,pwd; state = connect.createStatement(); actNumber=(String)request.getParameter(\"txtActNumber\"); password=(String)request.getParameter(\"txtUsrPwd\"); password=password.trim(); actNumber=actNumber.trim(); out.println(\"You have provided incorrect information.. Go to home page.\"); String strQuery1 = \"select * from login_info where account_no='\" + actNumber +\"'\"; ResultSet result1 = state.executeQuery(strQuery1); if (logintype.equals(\"sess\")) session.setAttribute(\"user\ if (logintype.equals(\"cook\")) { Cookie c = null; c = new Cookie(\"user\Cookie[] cookieArray = req.getCookies(); for (int i = cookieArray.length - 1; i >= 0; i--) { } } Cookie cookie = cookieArray[i]; if (cookie.getName().equals(\"user\")) System.out.println(\"yes,cook\"); res.addCookie(c); 档案管理系统的主界面如图5.1所示。 第五章 系统功能详细设计与实现 37图5.1 系统主界面 系统管理员通过“管理入口”登录后进入系统后台管理主界面,如图5.2所示。 图5.2 档案管理员首页 5.1.2 参数管理 1.参数管理功能模块的设计 信息系统中往往存在很多类似数据字典的数据,而且要求系统提供对这类数 38 陕西省地税局财务系统档案管理子系统的设计与实现 据的管理和维护功能,即CRUD功能。CRUD指的是Create(创建)、Read(读取)、Update(更新)和Delete(删除)功能。 陕西地税档案管理子系统中也存在众多此类数据,包括系统的档案类型、分类方法、码表、机构、人员、角色、角色权限等。当用户刚开始使用本软件时,必须首先进入该子系统,进行档案管理系统的定制。然后才能进入其他模块,按照定制好的方式进行档案管理工作。 系统设计中对此类功能进行了统一考虑,提供了相应功能模块。 1)设置档案管理结构 包括设置档案类型,并在档案类型基础上,设置分类表。 (1)设置档案类型:根据档案管理的要求,建立所需的档案类型,为一致起见,市局及各分局都使用相同的档案类型。例如:文书档案、会计档案、声像档案等,并可以随着工作的发展任意添加新的档案类型。 功能包括:  添加:添加档案类型并定义其属性。包括:档案名称以及该档案类型是否包括项目、案卷和分类表等属性。  删除:删除己建立的档案类型。  复制:可以复制已有档案类型的属性、库结构及数据,形成新的档案类型。 (2)档案分类表:用户可根据本行业的档案分类规范建立相应的树型分类结构(分类表),如图5.3。任意添加/删除子项分类子及其内容(含义),并可任意选择分类字的连接符,可以从参数表中挂接分类项。 依据陕西省地方税务档案管理规定,归档的文件材料按照“组织机构—年度”分类法进行分类。 根据《中华人民共和国档案行业标准归档文件整理规则DA/T 22一2000》,归档文件的分类方式为“年度—保管期限—机构(问题)”,保管期限:1永久;2长期;3短期;年度是4位小数。 档案管理员首先根据本单位的实际情况,灵活设置档案类型,然后针对设置好的档案类型进行设置分类方案,档案管理员定义分类方法,设置分类方案的排序号,编辑分类目录,给每个分类设置值,并设置每条记录的设置状态和备注。 (3)日志库维护:系统提供三个日志库:系统日志库(用于记录用户对系统所做的操作,例如:检索查询、数据录入、修改权限等。)、档案查看日志库(所有查看记录)、借阅日志库(用户对档案的借阅信息)和销毁日志库。一旦发生数据丢失或泄密等情况,通过对日志库的查询就可以确定责任者,同时,日志库也为档案管理人员对档案管理系统的监控并为档案的各项统计提供依据。需要对日志库提供清除、删除、查询、恢复和备份等功能。 (4) 代码表设置:代码表就是系统中公用的表,如密级、主题词等,这些表的 第五章 系统功能详细设计与实现 39内容在系统中多次使用,而内容的范围有限,特别是在进行数据录入时,需要多次重复性输入[13,14]。为此把它们设置为代码表,使其内容变为可选项而不必手工录入。系统提供用户对代码表设置的主要功能有:新建、修改、录入、删除和属性设置。用户根据使用情况可建立越来越多的代码表供用户选用,可以为用户使用档案管理系统提供极大的方便。 需要维护的码表有:主题词、密级、重要程度等,这些码表由用户自己设置,在程序设计时,因为码表一次初始化好,以后基本上就固定不变了,所有陕西市局和各分局只设置一套码表。 (5) 档案类型文件库结构设置:自定义数据库结构根据用户选定的档案类型及其属性建立文件库结构。提供用户的主要功能如下:定义文件库结构(插入、添加和删除):对选定的档案类型,定义其属性结构,定义字段的输入方式、下拉选择框、初始值。建库:对已定义好的上述数据库结构进行确认和正式建立。查看库结构:用来察看建立好的文件库的数据库结构。 图5.3 操作界面示例 2)档案管理员设置 档案管理员负责借阅管理中的审批功能,列出具有审批功能的人员名单(按照不同分局)。 增加时,列出本机构所有人员的清单(类似系统维护里,人员维护;需要过滤 40 陕西省地税局财务系统档案管理子系统的设计与实现 出来选中的机构)。删除时,点击档案管理员清单,删除即可。 修改时,点中某个人档案审批时,只能修改其“是否使用”属性。 档案审批时, 选择“审批人”,只能选择“是否使用”属性=‘Y’的人员。 2.参数管理功能模块实现 档案类型显示:档案类型是一个树形结构,只有叶子结点才可以作为可操作的档案类型,如可以在叶子节点的档案类型下设置档案类型的分类,设置他的分类记录、输入档案件等。点击类型分类将显示档案类型的一级分类。关键代码如下: public String forTree(HttpServletRequest req, HttpServletRequest rep,IErrorHandler errorHandler, IMessageHandler messageHandler,ViewHelp viewhelp) { List list = getDalxService().getDalxQuery(“Y”); //只取出标志为可用的档案 req.setAttribute(“list”, list); return “dalxView.tree”; } public List getDalxQuery(String isuse) { StringBuffer sb = new StringBuffer(); sb.append(“SELECT”); sb.append(“LXDM”); //档案类型代码 sb.append(“,”); sb.append(“LXMC”); //档案类型名 sb.append(“,”); sb.append(“SFKY”); //是否可用 sb.append(“,”); sb.append(“LJF”); //连接符 sb.append(“,”); sb.append(“CODE”); //连接符 sb.append(“FROM DALX”); if (issue != null && !””.equals.(issue)) { sb.append(“WHERE “); sb.append(“ SFKY = ‘”); sb.append(issue); sb.append(“’”); } sb.append(“ ORDER BY CODE”); DalxQuery queryT = new DalxQuery(getDataSource(), sb.toString()); return queryT.execute(); } 第五章 系统功能详细设计与实现 41补充说明:在JSP中用到了树的标签,所以在查询的时候要按照code进行排序否则显示的树将是不正确的 档案类型增加:如果要在某个档案类型下增加一个子类型,首先要选择这个档案类型,假如要在“行政管理”下增加一个“其他管理”。那么首先选择“行政管理”,然后点击右面的“增加”,如下图5.4所示。 图5.4 档案类型管理 填写档案类型名称,如输入“行政管理”,展开类型树,可以在“类型分类”下面找到“行政管理”。输入完毕后保存。关键代码如下: public String Insert(HttpServletRequest req, HttpServletRequest rep, IErrorHandler errorHandler, IMessageHandler messageHandler, ViewHelp viewHelp) { DalxView viewin = (DalxView)viewHekper.getView(); String code = viewin.getCode(); String MaxId = getCommService().getMaxValue(“select max(lxdm) from dalx”); viewin.setLxdm(Integer.parseInt(MaxId) + 1); String Maxcode = getCommService().getMaxValue(“select lpad(max(code) + 1, length(‘ “ + code + “ ‘) + 2, ‘0’) as code from dalx where code < concat(‘ “ + code + “ ‘, ‘ 99’) and length(code) = length(‘ “ + code + “ ‘) + 2”); if (“0”.equals(Maxcode)) Maxcode = code + “00”; viewin.setCode(Maxcode); 42 陕西省地税局财务系统档案管理子系统的设计与实现 //设置主键 viewHelp.setView(getDalxService().insertDalx(viewin)); return “dalxViewChain.success”; } 5.2档案检索模块的设计与实现 Oracle Text 全文检索的核心机制就是通过Oracle 专利的词法分析器 , 将文档中所有的表意单元 ( term) 找出来 ,记录在一组以 dr$ 开头的表中 , 同时记下该 term出现的位置、次数、hash值等信息,进行检索时从这些表中查找相应的term,并计算其出现频率。 要使用Oracle Text,必须具有CTXAPP角色或者是CTXSYS用户。Oracle Text为系统管理员提供了CTXSYS用户,为应用程序开发人员提供了CTXAPP角色。使用Oracle Text建立全文检索的完整步骤包括:装载文本、建立索引、发出查询和索引维护。 下文针对第四章中涉及的档案数据库表,详细论述建立索引、发出查询和索引维护的设计与实现。 1.建立索引 在创建全文索引之前,Oracle Text需要知道被索引的文档格式、字符集、语种以及文件的存放类型等信息。首选项是通过CTX_DLL包中的ctx_dll.create_preference和ctx_dll.set_attribute过程来完成的。 Oracle 10g支持的文档存储类型如表5.1所示。 表5.1 Oracle 10g支持的文档存储类型 存放类型(DataStore) Direct_DataStore File_DataStore URL_DataStore Multi_Column_DataStrore Detail_DataStore 适用场合 在文本列中直接存放文件 文本列中存放文件名称,文件放在文件系统中 文本列存放URL,文件在互联网上 文件存放在表的多列中 文件头信息放在master表中,整个文档放在detail表的多行中 Nested_DataStore 文件存放在嵌套表中 Oracle Text针对不同的语言提供了不同的词法分析器(lexer),常用的有三个。第一个是basic_lexer,它是Oracle缺省的词法分析器,针对英语,能够根据空格和标点来将英语单词从句子中剥离,具有较高的处理效率;第二个是 第五章 系统功能详细设计与实现 43chinese_vgram_lexer,是专门的汉语分析器,支持所有汉字字符集,该分析器以字为单元来分析汉语句子,实现算法简单,但分析的词有些则不尽人意;第三个是chinese_lexer,是新的汉语分析器,支持utf8、zhs16gbk字符集,最大的改进是该分析器能够认识大部分常用汉语词汇,因此能够更有效率地分析句子,提高效率。但国内很多的文档中,都同时包含了汉语、英语字符集,因此Oracle 10g推出了一个新的词法分析器,World_lexer,它能够自动侦知被索引文档使用的字符集,从而简化了操作。 在使用词法分析器之前,需要设定首选项。下面使用一个匿名PL/SQL过程来完成此工作。 begin end 上面的存储过程制定了文档直接存储在数据库表的文本列中,同时制定了采用在创建索引之前,还必须制定过滤器的类型,过滤器的作用是从二进制格式的ctx_dll.create_preference(‘mydatastore’, ‘direct_datastore’); ctx_dll.create_preference(‘mylexer’, ‘World_lexer’); world_lexer词法分析器来对文本进行解析。 文件(如Word、PDF、XLS文档)中得到文本数据。Oracle Text支持的过滤器类型如表5.2所示。 表5.2 Filter类型 Filter类型 Inso_Filter Null_Filter Mail_Filter User_Filter Procedure_Filter 作用描述 过滤格式化文档(word、pdf、xls等) 对于普通文本(txt、html、xml)的设置 过滤邮件格式的文档 根据用户指定的外部filter来过滤文档 根据用户指定的存储过程来过滤文档 税务档案系统中的档案主要是Word文档,因此选用Inso_Filter类型的过滤器来创建索引。 因此,创建索引的对应语句为: create index mydocs_index on t_text_docs(doc) indextype is ctxsys.content 成功执行上述语句后,在当前用户下将产生四个表:DR$mydocs_index$I、DR$mydocs_index$K、DR$mydocs_index$R、DR$mydocs_index$N。其中DR$mydocs_index$I(简称$I表)存放了文档的词记录信息,包括词出现的位置、次 parameters (‘datastore mydatastore Filter ctxsys.inso_filter Lexer mylexer’); 44 陕西省地税局财务系统档案管理子系统的设计与实现 数、hash值等,全文检索的核心就是查询这个表。$I表的记录来源于被索引的文档集合,当被索引的文档集合发生变化时,需要进行同步的工作。 Oracle Text content类型的索引在创建时还可以考虑其它参数,如Stop_List用来指定被索引忽略的单词的列表;Storge用来指定如何存储索引,WordList用来指定如何展开茎干和模糊查询等。 2.发出查询 建立索引后,就可以使用Select语句中的contains运算符发出文本查询。查询的原理是:首先发出包含contains的查询命令,根据关键字在$I表中得到满足条件的rowid;然后根据rowid得到TOKEN_INFO,TOKEN_INFO中包含了满足条件的docid、row-no等信息,Oracle根据这些信息在$R表中取出满足查询条件的rowid,返回给原始的查询语句;最后Oracle根据这些rowid取出用户需要的数据。 使用contains可以进行两种查询:单词查询和about查询。 单词查询是对输入到contains运算符中单引号间精确单词或短语的查询。例如: select doc_name from t_text_docs where contains (doc, ‘个人所得税’) > 0; 将查找在文本中包含“个人所得税”的所有档案。在查询表达式中,可以使用 AND和 OR等文本运算符来获取不同结果,还可以使用 count ( 3 ) 或 CTX2QUERY.COUNT 2HITS来计算查询的命中数。 About查询可以增加某查询所返回的相关文档的数目。About查询使用索引的主题词组件,这样,查询运算符将根据查询的概念返回文档,而不是仅根据所指定的精确单词或短语。类似于关键词扩展的思路。例如: select * from t_text_docs where contains (doc, ‘about(税种)’) > 0; 将返回关于主题“税种”的所有文档,而不是仅包含“税种”一词的文档。 3.索引维护 在进行全文检索的过程中,我们发现索引建好后,如果数据被修改了或者增加了新的档案,在修改或新增的内容不能被查询到。为此我们对Oracle Text查询的原理进行了分析,发现了问题所在。 如进行查询中讲述的,查询的核心实际上是对$I表中记录的查询。当文档的内容发生改变或者新增文档后,$I表中的内容必须相应改变,才能保证Oracle在做全文检索时正确检索到。但是对t_text_docs表所执行的任何DML语句使得表中数据发生变化,Oracle都不会自动修改全文索引,即$I表中的记录不会自动变化。因此索引维护的工作必须由开发人员自己完成。但也不能每次发生变化都去重新建立索引,因为重建索引的过程是比较花费时间的。因此,需要采用同步(sync)和优化(optimize)索引,以正确反映数据的变化。 同步 (sync):是指增加新的文档时,该文档解析后,将新的term 保存到$I表,也就是将新的文档索引;优化(optimize):优化索引实际上是根据$N表记录的 第五章 系统功能详细设计与实现 45DOCID删除$I表对应的信息,清除$I表的垃圾数据,从而达到提供查询性能的目的。经常进行添加文档和同步索引的操作势必会使索引碎片越来越多,索引碎片严重的影响了查询的反应速度,需要将索引碎片合并。而实际上,优化索引也执行了合并token的步骤,减少索引的碎片。 Oracle提供了一个Ctx Server来做这个同步和优化的工作,只需要在后台运行这个进程,该进程就会监视数据的变化,及时进行同步。当启动了 CTXSRV服务进程,在后台的同步请求处理就会在提交修改1、2秒后新的数据马上就被索引了。 手工同步和优化的PL/SQL脚本: create or replace procedure sync is begin execute immediate ‘alter index mydocs_index rebuild online parameters (“sync”)’; execute immediate ‘alter index mydocs_index rebuild online parameters (“optimize full maxtime unlimited”)’; end sync; 4.应用中使用查询 在税务档案管理系统中,在JSP中实现查询脚本如下: if ( doccontent != null && doccontent.length() > 0 ) { } if ( queryStr != null ) queryStr = “(“ + queryStr + “)”; if ( queryStr != null ) queryStr += opterator+“contains(t.addfilecontent,’” + doccontent + “’)>0”; else queryStr = opterator+“contains(t.addfilecontent,’” + doccontent + “’)>0”; else queryStr = “ 1=1 “; queryStr = “ and “ + queryStr; session.removeAttribute(“com.egov.docflow.queryStr”); session.setAttribute(“com.egov.docflow.queryStr”, queryStr); 46 陕西省地税局财务系统档案管理子系统的设计与实现 5.3 档案销毁模块的设计与实现 销毁管理子系统允许用户对经过鉴定的旧档案进行销毁处理,即从档案库中删除,同时在系统日志中记录销毁信息(如申请人、批准人、销毁原因、销毁日期等),以便于对从前销毁的操作进行检索。领导鉴定需用户手工完成,其他功能均可通过系统实现。 1.档案销毁申请用户可根据需要检索到过期的档案,提出鉴定申请,打印鉴定申请单后由领导批示和签字(手工)。提出鉴定申请的档案仍然可以进行检索查询。本功能主要是打印档案销毁申请。 2.档案销毁审批对申请的档案销毁申请,做审批处理。 3.档案销毁处理档案管理员根据收到的相关领导签字审批后的鉴定申请单,可以根据上面的批示进行销毁处理,销毁的数据放在回收库中,由系统管理员手工清空。销毁处理,给相应的档案标记销毁标志,不在数据库物理清空。 4.销毁日志库检索销毁日志库记录了所有的销毁记录。用户可对其进行检索和查询。并打印结果。 打印申请的“分类号”,根据年度和保管期限判断。鉴定申请,用户可根据需要检索到过期的档案,提出鉴定申请,打印鉴定申请单后由领导批示和签字。提出鉴定申请的档案仍然可以进行检索查询。销毁处理给表“档案销毁申请”SQBZT设置“5”标志:给对应的FLID设置“已经销毁”标记。 由于考虑到档案的销毁需要明确的工作流程,因此本模块的设计中采用了工作流引擎的方式予以实现。对应的工作流程如图5.5所示。 管理员领导档案日志1 : 销毁申请()2 : 销毁信息()3 : 销毁审批()日终中的记录,同时保持了该工作流程中的业务状态。包括申请、审批、销毁等。4 : 档案销毁()5 : 销毁日志()6 : 销毁操作检索() 图5.5 档案销毁工作序列图 第五章 系统功能详细设计与实现 475.4 借阅管理模块的设计与实现 1.借阅管理模块的设计 借阅管理模块的功能包括: l)档案查看:对电子档案进行查看,对公开的件(SFGK=‘1’的件),都可以查看,对于不公开的件,需要进行借阅过程后进行查看。公开档案检索:检索出所有公开的档案,并且查看其文本正文;借阅档案检索:检索出所有己经审批通过的档案,查看其文本正文; 2)档案借阅申请,分为电子档案和纸质档案两种档案的借阅申请。纸质档案借阅申请:借阅方式默认=“纸质档案”(照片、实物档案算纸质档案),自动设置申请人、单位,填写申请时间,借阅天数,借阅原因,从档案库中查找想要借阅的分类或者某个件。从列表中选择要将此申请发送的审批人(从多个人中间选择);对不公开的件,提出借阅申请:纸质档案,自己填写文件题目;填写的其他内容一样; 3)档案借阅审批,对申请的电子档案和纸质档案申请进行审批。审批同意的,在档案借阅申请中可以查询。 4)归还管理,对用户归还的档案进行登一记。 5)借阅统计,统计某一时间段内借阅档案次数及档案详细信息。 本功能中也存在和档案销毁类似的工作流程,需要工作流引擎的支持。 同时,本功能主要是围绕着档案的借阅进行管理。除了档案查看和借阅统计功能之外,档案借阅申请、档案借阅审批和归还管理,可以被看作是档案的状态转换。因此在本模块设计中,采用了状态图来表示档案的具体状态及其之间的事件和转换。而档案销毁功能中也存在着档案的几种状态。 综合考虑,在档案管理系统中,对象档案生存期的状态如图5.6所示。 申请借阅审批借阅申请数据录入已借阅入库正常返还销毁销毁申请审批申请销毁待销毁 图5.6 档案状态图 2.借阅管理模块的实现 48 陕西省地税局财务系统档案管理子系统的设计与实现 借阅管理和销毁管理类似,都是一个多步的工作流程。申请人发出借阅申请,即向审批者发出消息。审批者根据收到的消息决定是否通过。在该流程中每个步骤都是以类似的原理进行流转。借阅管理的界面请见图5.7所示。 图5.7 档案借阅申请 为了在管理流程的各个步骤,采用消息机制,每一步工作完成后发送消息通知下一步骤。消息投递及接收的关键代码如下: context = new InitialContext(); QueueConnectionFactory qcf = QueueConnection conn; conn = qcf.createQueueConnection(); conn.start(); //开始连接 (QueueConnectionFactory) context.lookup(\"QCF\"); QueueSession session = conn.createQueueSession(false, Session.auto_acknowledge); Queue q = (Queue) context.lookup(\"Q\"); QueueSender sender = session.createSender(q); TextMessage sentMessage = session.createTextMessage(\"Borrow Apply\"); sender.send(sentMessage); QueueReceiver receiver = session.createReceiver(q); Message receivedMessage = receiver.receive(); System.out.println(\"have finished\"); 第五章 系统功能详细设计与实现 495.5本章小结 在本章中详细介绍了在本系统的开发过程中本人所从事的数据库全文检索的设计与实现,还包含有几个重要模块的设计与实现。主要论述了数据库全文检索的设计思路以及实现的全过程,对重要模块的功能设计、算法实现和处理流程等也进行了详细说明。 第六章 系统测试 51第六章 系统测试 陕西省地税档案管理子系统功能复杂、涉及到的相关部门较多,测试是反映软件工程质量的最有效的途径之一。 6.1测试范围 陕西省地税档案管理子系统作为基于Web的信息系统,其测试的主要内容侧重于内容测试、界面测试、功能测试、性能测试、安全性测试等。针对本系统的实际情况,重点考虑进行了功能测试、界面测试和性能测试。 6.2测试环境 陕西省地税局所提供的用以支持系统运行的软硬件环境。 服务器操作系统 Web服务器 数据库 服务器型号 : Red Head Linux 9.0 : WebLogic 7.0 : Oracle 10g : IBM P650 : Windows XP : 100Mbps 客户端操作系统 网络 客户端PC机配置 : CPU2.4G、1G内存 6.3测试需求 基于WEB的信息系统,经常从以下几个方面进行测试: l.数据和数据完整性测试 1)核实是否可以对数据库进行访问; 2)核实是否可以插入和显示内容和类别; 3)核实是否可以正确检索更新后的数据库数据。 2.性能测试 系统需要同时为多个用户提供服务。因此在性能测试中,需要考虑对应用系统中服务器的各项通用指标、Web服务器指标(平均事务响应时间、系统并发事务数、吞吐量等)进行测试和分析。 需要注意的是,在性能测试中,为了获取该应用系统的性能峰值,需要编写专门的客户端并发仿真程序,来伪造多用户同时使用的场景。 52 陕西省地税局财务系统档案管理子系统的设计与实现 3.功能测试 确保测试对象的功能正常,其中包括数据输入、处理、检索和统计等功能,核实代码规则,审批流程、用户权限等; 4.界面测试 确保系统界面符合GUI标准,具有很好的通用性,通过测试对象进行的浏览可正确反映业务的功能需求;并且具有很好的易用性,能使用户很快地入门。 5.安全性和访问控制测试 应用程序级别的安全性:核实不同的角色只能访问其所属用户类型已被授权访问的那些功能或数据。系统级别的安全性:核实只有具备系统和应用程序访问权限的角色才能访问系统和应用程序。 针对陕西省地税档案管理子系统的需求,测试工作主要包含内容测试、界面测试、功能测试和性能测试。 6.4测试报告 内容测试、界面测试和功能测试,与传统的信息系统的测试方法差别不大,而且测试过程涉及到大量测试用例和测试数据,此处仅简单列出部分测试结果。如表6.1所列。 表6.1 确认测试报告 测试项目 系统数据设置 数据录入 测试目的 数据完整性、引用检查 界面对数据合法性检查 测试数据 档案分类编目规范 07年档案 部分界面对输入数据检查不完善 档案借阅 档案归还 档案销毁 检查借阅流程 检查归还流程 检查系统安全和权限控制 档案查询 信息检索功能的准确性和健壮性 SQL语法错误 已修正 响应正常 响应正常 响应正常 利用JavaScript增强对用户输入数据的检查 已修正 测试结果 响应正常 改进意见 修改 性能测试,通过并发客户端仿真进行了测试。测试的过程中,采用了多个自动化的测试工具来进行测试。在本系统的性能测试中,主要针对系统并发事务数、 第六章 系统测试 53事务平均响应时间、系统吞吐量等指标进行了测试,测试的结果分别见图6.1、图6.2和图6.3。 图6.1 系统并发事务数 图6.2 事务平均响应时间 图6.3 系统吞吐量 性能测试结束后,对测试结果进行了分析,对应的分析表如表6.2所示。 表6.2 性能测试结果分析 54 陕西省地税局财务系统档案管理子系统的设计与实现 测试指标 数值 64.834s 60 175814.84 70.93% 响应时间较长 每秒系统处理事务数不是很多,基本满足要求 吞吐量很大,满足需求 该值大,这说明数据库操作消耗的CPU时间多 分析 平均事务响应时间 每秒系统处理事务数 吞吐量 数据库操作消耗的CPU时间 CPU平均利用率 剩余的可用内存 网络吞吐量 15.625% 30% 685 CPU的开销不高 内存值没有什么变化,有30%左右的的物理内存值, 说明内存没有泄露。 该值除以目前网络的带宽,结果小于50%,说明网络吞吐量正常 通过分析发现,事务响应时间过长的原因主要在于数据库物理设计不合理,主要是索引设计不合理。为此项目组对系统中的查询语句进行分析、优化,重建了索引;并针对特定的查询,采取了部分反规范化技术(例如增加冗余列等)。 重新测试结果表明,事务平均响应时间被控制在5秒以内,符合设计要求。 6.5本章小结 本章分析了系统测试的必要性、测试范围,详细说明测试环境和测试需求;然后在经过实际测试后,给出关键的测试项目及结果。经过修正,档案管理子系统通过测试,进入运行阶段。 第七章 结束语 55第七章 结束语 7.1 总结 本文就陕西地税工作平台的档案管理系统的设计和实现进行了较为深入和全面的分析。在本系统的试运行期间,原定的目标己经实现。通过了项目测试组的测试,实现了档案管理人员通过系统完成档案管理中的各种工作、各级税务管理人员通过网上借阅查询部分己经归档的历史信息的建设目标。档案系统同时还有一些需要改进的地方,而且系统中术语概念复杂,同时基于档案保密性的要求,还需要对用户进行针对性的培训。 通过完整得开发这套系统,加深了我对所学习理论知识得理解,以前感觉很抽象的理论,通过具体的实践后,体会到理论的妙处,对工作起到了极大的具体的实用的指导作用,达到了提高工作效率的目的。 7.2 进一步的工作 目前陕西地税档案管理系统建设取得了明显的成绩,对于全省内档案信息的电子化管理、全省数据共享以及档案管理与其它信息系统的互联互通,发挥了十分重要的作用。但也应看到,陕西地税档案管理系统建设面临的任务还有很多,还存在着一些有待解决的问题。 下一步需要解决的问题包括: 1.数据库性能优化,以及在极大的并发情况下,系统存在的性能问题。具体需要考虑的是:进一步优化I/O,主要指的是数据库的物理存储,根据系统运行情况,优化物理存储,提高系统并发能力;优化SQL、建立索引,通过系统的实际运行,采用索引重建、物化视图等方法,提高SQL执行效率等。同时需要进行的还有下一阶段用户使用手册文档的书写,以及对用户进行培训。 2.系统中的数据安全和数据保密问题。系统中目前采取基于角色的用户管理,提供了一定的安全措施。但进一步需要考虑数据泄漏、黑客窃取等安全问题,另外敏感信息的网络传输,也需要采取加密传输。同时,采取完善的备份与恢复机制来保证数据安全。 致谢 57致谢 首先衷心感谢我的导师对我的悉心教导,在他的精心指导下,如此多的工作得以圆满完成。 导师在我论文的开题、设立提纲以及论文的难易程度和研究深度的把握上给予我很大的帮助和耐心的指导。导师深厚的学术造诣、诲人不倦的工作作风、严谨的治学态度和认真负责的精神留给我很深的印象,使我终身受益。再次衷心感谢导师在学业上给我的巨大帮助和教诲。 同时感谢我的领导和同事,在我开发期间他们无论在工作上还是在生活上都给了我热情的帮助,让我在陕西地税现场开发的这段日子成为了我人生中的一段美好的回忆。 最后,非常感谢我的父母和家人,他们的鼓励和支持是我完成论文的原动力。 谢谢所有关心我支持我的人们! 参考文献 59参考文献 [1] 《陕西地方税务局系统档案工作管理办法》. 陕西地方税务局。 [2] 陈华军著. J2EE构建企业级应用解决方案. 人民邮电出版社,2002,3. [3] Paul J. Perrone著,张志伟,谭郁松,张明杰译,J2EE构建企业系统专家解 决方案. 北京,清华大学出版社,2001 [4] 刘晓华等著.J2EE企业级应用开发[M] .北京,电子工业出版社,2003.08: 179—182。 [5] 谢杨编. J2EE核心技术.计算机世界,2002 [6] 谢小乐.《J2EE经典实例》.机械工业出版社,2003 [7] Michael Autl著,江漫,张斌,扬帆等译. oracle数据库管理与维护技术手 册. 清华大学出版社, 2006 [8] 袁鹏飞. Oracle10g数据库高级应用开发技术. 人民邮电出版社, 2002 [9] 秦洁,唐玉. 面向对象的特征建模系统的实现. 辽宁工程大学学报, 2003. [10] Wendy Boggs,Michael Boggs. UML与RationalRose2002从入门到精通. 电 子上业出版社, 2002. [11] 《中华人民共和国档案行业标准档案著录规则GB3792.5一85》。 [12] 《中华人民共和国档案行业标准档案著录规则AD/T18一1999》。 [13] 《档案工作基本术语DA/T1一2000 General terminology for archives work 代替AD/T1一1992》,中华人民共和国档案行业标准。 [14] GBT/3792.5一85, 中华人民共和国国家档案局1999一05一31。 [15] Simon Broen(美)等. JSP编程指南. 电子工业出版社,2002 [16] Jose Annunziato(美).《JSP速成教程》.机械工业出版社,2002 [17] 川布朗(美)等著(王军等译).《JSP编程指南(第二版)》.电子工业出版 社,2002.10 [18] 布隆伯格J.考斯基P.特雷弗斯(美).《网页设计技术大全》.1998. [19] 郝阜平. 基于WINDOWS平台的服务器高可用性方法,青海大学学报, 2003.4:48-52 [20] 汤庸, 叶小平编著. 《数据库理论及应用基础》. 清华大学出版社, 2004 [21] Walker Royce(美). 《软件项目管理》. 机械工业出版社,2002 [22] 张友生编著. 《软件体系结构》. 清华大学出版社, 2004 [23] Karl E. Wieger(美)编著. 《软件需求》.机械工业出版社,2000 [24] 王偑芩编著.《国家税收》. 东北财经大学出版社,1999 60 陕西省地税局财务系统档案管理子系统的设计与实现 [25] 《中华人民共和国地方税收法规汇编》. 中国税务出版社,2003 [26] 单新萍. 税务管理. 中国税务出版社,1999 附录 数据库表 61附录 系统数据库表 系统所有表信息如下所示。 表号 1 2 3 4 5 6 7 8 表名 Role_Func DALX DADMJG DADM_JL DA_GLY DAK_PXTJ DAK_CKRZ DAK_JY 功能说明 角色权限表 档案类型表 档案管理代码表 档案代码表字典记录 档案管理员设置表 档案销毁数据库表 档案库查看日志数据库表 档案库借阅日志数据库表 表1 角色权限表 表中文含义 电子档案类型 数据类型 主键 非空 备注 NUMBER(2) √ √ NUMBER(2) √ √ Role_Func 表英文名 列名 列汉字名 Role_id 角色编码 Func_id 功能编码 表英文名 列名 LXDM LXMC SFKY LJF DALX 列汉字名 类型代码 类型名称 是否可用 连接符 表2 档案类型表 表中文含义 电子档案类型 数据类型 主键 非空 备注 NUMBER(2) √ √ VARCHAR2(60) √ CHAR(1) √ CHAR(1) √ 表3 档案管理代码表结构 表英文名 列名 BYWM BZWM SFKY SFKDX DADMJG 列汉字名 表英文名 表中文名 是否可用 是否可多选 表中文含义 数据类型 Varchar2(40) Varchar2(40) CHAR(1) CHAR(1) 主键 √ 电子档案代码结构 非空 备注 √ √ √ Y可用,N不可用,默认=Y √ Y可多选,N不可,默认=N;对多选的字段,以后一律用‘-’做分隔符 表英文名 列名 BYWM DMXH DMMC SFKY DADM_JL 列汉字名 表英文名 代码序号 代码名称 是否可用 表4 档案代码表字典记录 表中文含义 电子档案代码记录 数据类型 主键 非空 备注 Varchar2(40) √ √ NUMBER(3) √ √ 对每个表,从l开始排序号,作为组合主键和显示排序 Varchar2(40) √ CHAR(1) √ Y可用,N不可用,默认=Y 62 陕西省地税局财务系统档案管理子系统的设计与实现 表5 档案管理员设置表 表中文含义 档案管理员 数据类型 主键 非空 备注 Varchar2(6) √ √ Varchar2(30) √ √ pub_users表中的login_id CHAR(1) √ Y使用,N不使用,默认=Y 表英文名 列名 JGDM GLY SFSY DA_GLY 列汉字名 组织机构 人员代码 是否使用 表6 档案销毁数据库结构表 表英文名 列名 SQBID FLID SQR SQRQ XHLY XHSJ XHFS JYSM SQBZT DAK_PXTJ 列汉字名 申请表ID 分类ID 申请人 申请日期 销毁理由 销毁时间 销毁方式 销毁档案简要说明 申请表状态 表中文含义 数据类型 NUMBER(10) NUMBER(5) VARCHAR2(30) DATE VARCHAR2(300) VARCHAR2(50) VARCHAR2(200) VARCHAR2(300) CHAR(1) 主键 √ 电子档案库排序条件 非空 备注 √ 做唯一主键用 √ 唯一决定了组织机构和档案类型 √ √ 用户填写内容 非日期型,可填写其他信息息 用户填写内容 说明销毁档案的原保管期限、数量和简要内容容 √ ‘l’待审批‘2’审批同意‘3’审批退回‘4‘已经销毁。默认为‘1‘,销毁 处理后,为’4‘ 外键 列JID关联DAJ_ZB表主键 表7 档案库查看日志数据库结构表 表英文名 列名 LSH JYID CKR CKSJ SFYZ 外键 DAK_CKRZ 列汉字名 日志流水号 借阅ID 查看人 表中文含义 数据类型 NUMBER(18) NUMBER(18) VARCHAR2(30) 主键 √ 电子档案库查看日志表 非空 备注 √ √ √ 查看人的IP必须与借阅人的一致 √ √ 一致‘Y’,不一致’N’;不一致不允许查看,并给出提示 DATE 查看时间 CHAR(1) 是否与借阅人一致 列JYID关联DAJ_ZB表主键 附录 数据库表 63 表8 档案库借阅日志数据库结构表 表英文名 列名 JYID JGDM JYR JYFS SQRQ JYTS JYYY WJTM SPR SPZT DAK_JY 列汉字名 借阅ID 组织机构代码 借阅人 借阅方式 申请日期 借阅天数 借阅原因 纸质文件题目 审批人 审批状态 表中文含义 数据类型 NUMBER(18) VARCHAR2(8) VARCHAR2(30) CHAR(1) DATE NUMBER(4) VARCHAR2(200) VARCHAR2(200) VARCHAR2(30) CHAR(1) 主键 √ 电子档案库借阅记录 非空 备注 √ √ 为了方便检索用 √ √ √ √ √ √ √ √ 借阅人的IP需要与此IP进行验证 ‘1’电子;‘2’纸质 对纸质文件,填写这个 ‘1’待审批 ‘2’审批通过 ‘3’审批退回 ‘4’已删除 只有‘2’的才能在档案查看中看到;默认‘1’ ‘N’未过期,‘Y’已经过期:默认‘Y’;为编程简便起见设置 ‘N’未归还,‘Y’己经归还;对纸质文件 对归还纸质文件的说明,例如破损等 SPYJ SFDQ 审批意见 是否己到期 VARCHAR2(300) CHAR(1) √ SFGH GHRQ GHSM 外键 是否己归还 归还日期 归还说明 CHAR(1) DATE VARCHAR2(300) √ 列JID关联ADK_JY表主键

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrd.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务