用户参与下的数字资源元数据获取及管理_第1页
用户参与下的数字资源元数据获取及管理_第2页
用户参与下的数字资源元数据获取及管理_第3页
用户参与下的数字资源元数据获取及管理_第4页
用户参与下的数字资源元数据获取及管理_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 学士学位论文题目:用户参与下的数字资源元数据获取及管理topic: the gathering and management of the digital resources metadata with user interaction姓 名: 学 号: 院 系: 信息科学技术学院计算机系 实验室: 网络与分布式系统实验室 导 师: 二零零五年六月论 文 评 定成绩 _良_指导教师意见: 元数据信息的构建和管理是一个数字资源存储系统或者数字图书馆的运行不可缺少的基础。向欣同学的毕业论文工作,是对这一部分的突出贡献。 论文所涉及的工作是“中文数字财富大全库(cdal)”的元数据管理模块,它对元

2、数据搜集填写的任务进行管理分派,跟踪和回收,并最终为cdal中的海量数字资源提供元数据描述文档。该模块是基于cdal系统中的海量数字资源之上,在用户参与过程中向用户发布元数据描述文档填写任务,在用户的任务申请到任务提交的整个过程中进行全程的记录和任务状态跟踪,最终获取用户填写的元数据文档并与对应资源绑定。解决问题包括:在dublin core元数据应用的基础上建立对网络数字资源的元数据描述方式,数字资源及元数据描述文档任务的状态标定,任务发布过程中的状态维护问题。 论文内容丰富,所涉及的工作量大,且有较强的系统性,是一篇很有价值的论文。 在毕业设计工作的过程中,该同学态度端正,积极努力,表现出

3、很强的进取精神和踏实的工作作风,为中文数字财富大全库(cdal)的发展做出了贡献。指导教师 (签字)2005年 6 月 9 日 39摘 要元数据作为复杂类型数据的一种描述方式,对数字图书馆中大量数字媒体资源的组织、存储、管理、检索与利用有极大的帮助。而元数据一般情况下不是数字资源的伴生产物,需要额外的方法组织和获取。本文描述了一套在用户参与下,通过注册任务,为数字资源收集元数据的机制及实现方法,并应用于中文数字财富大全库(cdal)中。本文主要工作是任务申注管理模块,它对元数据搜集填写的任务进行管理分派,跟踪和回收,并最终为cdal中的海量数字资源提供元数据描述文档。对于网络数字资源的元数据应

4、用大多建立在dublin core应用委员会核心元数据基础上。对dobulin core元数据集应用的一个思想就是在不改变原有核心元数据集的结构和语义的前提下,才能根据各自的具体需要添加或减少不必要的元素。任务申注管理模块是基于cdal系统中的海量数字资源之上,在用户参与过程中向用户发布元数据描述文档填写任务,在用户的任务申请到任务提交的整个过程中进行全程的记录和任务状态跟踪,最终获取用户填写的元数据文档并与对应资源绑定。任务申注管理模块的实现过程中实验性的解决了如下问题:在dobulincore元数据应用的基础上建立对网络数字资源的元数据描述方式,数字资源及元数据描述文档任务的状态标定,任务

5、发布过程中的状态维护问题。任务申注管理模块同时也是承担与用户交互任务信息的独立的模块,是用户参与cdal系统对中文数字资源元数据研究的直接接口。在和用户进行任务信息的过程中,任务申注管理模块为参与描述文档填写及元数据收集任务的用户实现了完整的用户接口。关键词:用户交互,任务发布状态 ,数字资源, 元数据, dublin core, 描述文档abstractthe metadata, as a descriptive method of complex type data, is the most basic thing in a digital resources storage system

6、. but generally the metadata is not generated along with the digital resources. we need other method to gather. this paper introduces a scheme toobtain metadata for digital resources, which has been applied to the cdal system designed by the networking and distributed system laboratory at peking uni

7、versity. the main work in this paper is the task registration module. it designed dispatches, tracks and reclaims those metadata in the form of metadata filling tasks, and finally provides cdal the descriptive metadata document for those massive digital resources.the metadata application of web-base

8、d digital resources mostly bases on the dc metadata standard, which is delivered by the dcmi(dublin core metadata initiative). and the kernel point to apply the metadata is to add or cut down some unnecessary elements according situation, but do not change the original structure and semantic in the

9、metadata element set. so the module of metadata task filling bases on those massive digital resources in cdal, releases to users the tasks of filling the descriptive metadata documents, records the task states while the user register and submit ones tasks, and obtains the descriptive metadata docume

10、nts filled by users and ties them with corresponding resources in the end. the module of metadata task filling has experimentally solved the following problems: 1) built up a method to describe the web-based digital resources in the form of metadata, which is based on the application of dc metadata

11、standard; 2) marking the release states of the digital resources and corresponding descriptive metadata documents; 3) the problem of harmonizing the procedure of the release states converting.meanwhile, the module of metadata task filling is also the direct entrance for user to participate in the re

12、search in cdal. it provides and implements a whole strong and convenient user interfaces to register, save or submit the metadata document filling task. keywords: user interaction, task release, digital resources, metadata, dublin core, descriptive document.目 录摘 要3abstract4目 录5第一章引言6第二章任务申注管理模块概述9第三

13、章主要研究和设计1231描述文档格式和dublin core1232资源状态的标定和描述文档管理1333状态一致性16331用户用户冲突16332服务维护冲突1734积分机制20第四章模块实现2141用户注册和登陆2142任务申请和提交22421任务参与方式23422任务发布控制24423任务状态一致性控制2643cgi程序的输入2744url编码2845元数据文档类metadatadoc3046文档回收和wiki发布32第五章未来工作和展望33参考文献34致谢35第一章 引言数字资源任务申注管理模块属于网络实验室“中文数字财富大全库(cdal)”的一部分。该模块操作于大量的本地数字资源及文本

14、描述信息上,引入用户参与建立元数据描述的机制,以实现更好的对数字资源进行管理。中文数字财富大全库(chinese digital assets library,简称cdal,昵称燕储 ) 是综合性的数字资源仓储系统。 该系统收集保存了大量网络上流传的数字格式资源,并按照dublin core应用委员会提出的数字信息分类框架划分数字信息种类,提供目录导引的查询、文件名关键字查询、以及元数据查询等三种外部利用方式,还提供元数据和系统构架接口描述,以支持关于海量中文数字资源的分类、存贮、管理、描述、访问、检索等问题的研究。元数据是像cdal这样的数字资源存储系统或者数字图书馆的基础。数字图书馆中数字

15、信息资源的组织、存储、管理、检索与利用都依赖于一套元数据方案。可以说,没有元数据,就没有数字图书馆的存在和发展。对元数据专项研究涉及到理论和应用的许多方面,如元数据数字信息的长期保存,元数据与互操作问题。对元数据的理解和认识,应该将元数据放在开放环境中,从异构系统互操作的角度,考虑如何描述信息内容的各个层次(从单个信息对象,到对象集合及其组织、管理和控制机制,甚至到信息系统本身),深入地研究元数据的性质、整个体系和层次。对元数据的理解是一种基本信息组织方法,为信息系统各个层次的内容提供规范的定义、描述、交换和解析机制,为分布的,多种和多层内容构成的信息系统提供互操作和整合的纽带,为计算机智能地

16、识别、处理、集成各种信息内容、信息过程和信息系统提供工具5。一般来说元数据分为三种类型:描述型(descriptive metadata),管理型(administrative metadata)和结构型(structural metadata)。cdal系统所研究和使用的dc元数据是一种典型的描述型元数据,尤其在网络中更为各种团体所接受的标准化元数据元素集。元数据标准的设计和应用则涉及到元数据标准框架(metadata framework)、元数据标记语言和置标规范(encoding)、元数据应用规则(application profile)元数据登记系统(metadata registry

17、)6。在元数据标准框架的设计上,北京数字图书馆研究所的“中文元数据标准框架”建立了一套制定中文元数据标准时遵循的规范或原则性文件,用于指导元数据标准的制定。北京大学数字图书馆研究所以dc为基础制定了拓片和舆图的元数据标准,设计并实现一套可以使用中文元数据标准对中文文献进行著录实践的试验系统,在著录试验系统的基础上结合calis和图书馆的项目建立“中文文献元数据示范数据库” 5。在元数据标记语言和置标规范(encoding)方面,与元数据相关的标记语言主要有html、xml,这两种语言都是大众熟悉的,因而参与研究的人员范围较广。元数据应用规则(application profile)涉及到元数据

18、的实际应用,是数字图书馆建设过程中不可避免的问题。我国的元数据应用规则(application profile)大多建立在dc元数据的基础上。元数据应用规则(application profile)的一个核心思想是在不改变原有元数据集的结构和语义的前提下,根据各自的具体需要添加或减少不必要的元素。在数字图书馆的建设中,珍贵馆藏资源和特色馆藏资源的数字化是一种主要的元数据应用方式,因而对元数据在诸如古籍、拓片、舆图、图谱、方志、家谱、建筑、学位论文等各种专门数字对象管理中的应用研究就很多。另外,元数据不仅应用在数字图书馆领域,还应用于社会经济领域里的各行各业。在中文数字资源大全库cdal系统中,

19、我们将元数据应用于各种各样的多媒体数字资源中,进行对海量中文数字资源的元数据描述以及元数据构架接口,元数据查询等的研究。cdal系统对元数据进行研究,需要为其已有的海量数字资源搜集准确高效的元数据描述文档,同时作为一个数字资源仓储系统本身也应该具备资源及资源的描述信息。因此cdal系统需要一个在开始阶段搜集和管理资源的元数据文档的模块。该模块应该能够从不同的渠道为每一资源发布搜集任务,跟踪搜集任务,并且在回收任务之后以适当的方式提供服务,同时不断的完善其元数据描述文档。最终通过这样元数据管理模块,cdal系统应该可以为每一类型资源都提供一份完整准确的元数据描述。任务申注管理模块正是为cdal中

20、的海量数字资源提供元数据描述文档,并对文档填写的任务进行管理分派和回收的部分。任务申注管理模块同时也是承担与用户交互任务信息的独立的模块,是用户参与cdal系统对中文数字资源元数据研究的直接接口。通过任务申注管理模块,用户可以申请任意资源的描述文档填写任务,根据资源描述信息的帮助,用户能够在少量时间代价下,完成数字资源元数据的填写,任务申注模块回收任务并进行相应检测。元数据描述文档与资源描述信息的结合可以更好的服务于多媒体资源的访问与管理。同时任务申注模块还应该提供用户相应激励措施。任务申注管理模块运行过程中,管理和记录所有数字资源的任务发布状态,记录任务的分派情况和回收情况,保证用户参与过程

21、的流畅和稳定。最终通过任务申注管理模块,可以为cdal系统的数字资源提供完整的元数据描述,从而支持cdal的检索和访问功能。任务申注管理模块是一个标准的cgi程序设计,通过大量的文件操作和小部分数据库操作,实现了对资源描述文档的管理,对描述文档任务的状态跟踪,并且以web的方式向用户提供服务,响应用户的申请任务,提交任务,修改任务等操作请求。其中对描述文档的管理和任务状态追踪是任务申注管理模块的核心部分,本文首先将总体介绍整个模块的功能接口和运行描述,然后将详细叙述本模块设计中各个关键部分的考虑和设计思路,包括根据dublin core协议对描述文档格式的制定,对资源描述文档填写任务的状态标记

22、和跟踪等。然后根据用户参与任务的完整过程,顺序的介绍各部分的具体实现。最后,介绍了任务申注管理模块后的操作,对回收的任务的处理,以及该模块长期运行以后的目标和期望。第二章 任务申注管理模块概述 任务申注管理模块是基于cdal系统中的海量数字资源之上,以数据库接口和用户接口的方式向用户提供描述文档填写任务的,在用户的申请任务到提交任务的整个过程中,任务申注管理模块需要全程的记录和跟踪任务状态。1,任务申注管理模块需要cdal系统模块的支持。海量数字资源是任务管理模块运行的基础,cdal系统中已经存储了约4t的多媒体资源,其中包括电影,电子书,声音,图像等等。系统模块定期会更新所有资源并且生成一份

23、资源列表和任务列表。任务申注管理模块需要根据资源列表和任务列表向web用户提供任务发布,并且全程将任务状态记录于列表中。因此任务申注管理模块虽然是cdal系统中独立的面向用户并且与用户交互的模块,但它离不开系统模块对其的支持,甚至需要和系统模块的协调工作。2,任务申注管理模块的数据库接口在cdal系统中,对所有资源的记录和任务状态记录均采用文本方式,但是在任务申注管理模块中对于用户信息管理和任务注册信息使用的是数据库方式,这是因为用户信息和任务注册信息都是会频繁改动和更新的信息,对于这些信息的记录采用现有数据库比文本方式操作更灵活和易操作。任务申注管理模块使用的是mysql数据库服务器,维护两

24、个数据表(people和register)。people数据表存储注册用户的基本信息,包括帐号,密码,邮箱地址,用户状态(已激活或未激活),总积分,权限级别等。register数据表记录当前所有被注册的任务的状态,包括注册的任务的物理地址,注册该任务的方式(离线填写和在线填写,或者该任务已经提交),注册该任务的用户等。任务申注管理模块访问数据库的方式是利用mysql数据库提供的链接库文件,使用一个数据库链接类dbconnect class实现的。由该类提供整个模块运行过程中使用到的所有数据库访问方法,包括连接指定数据库,断开链接,添加一个新用户,添加一个新的任务申请,删除一个已申请的任务,查找

25、一个用户或者任务,获取用户积分,获取一个任务等等。3,任务申注管理模块的用户接口注册:用户按照规定格式填写注册表单,并填写真实邮箱地址,提交后系统记录注册用户为未激活状态,并发送确认信到指定邮箱。激活:用户点击系统发到用户邮箱中信件的指定链接则自动完成注册,系统发给每一个未激活用户的激活链接都不一样。用户点击链接后系统修改用户状态为已激活。登录:用户填写已注册且已激活的帐号密码后完成登录,系统显示发布资源列表并显示描述文档下载。登录后可完成修改密码操作、查积分操作及提交任务操作。登录后可看见提供服务的资源描述文档填写任务。申请任务:用户可以申请为某个资源填写描述文档的任务,申请任务分为两种方式

26、,离线填写和在线填写。离线填写方式下,用户可以下载资源的空描述文档模板,填写完毕后上传提交;在线填写方式下,用户可以填写系统为用户生成的html格式模板表单,无需下载。保存任务:在线方式填写描述文档过程中用户的可选操作。用户可以保存填写的描述文档表单,以备下次继续填写。提交任务:用户可以有两种提交任务的方式。对于离线的任务,用户可以将填写完成的描述文档任务上传到服务器;对于在线填写的任务,用户确认完成后直接点击提交即可。任务申注管理模块在对用户所提交的任务进行一定的检查以后就为用户记分,并公布该任务情况。注销任务:用户对于已申请的任务可以选择注销操作,即删除用户对该任务的所有更改,恢复该任务的

27、初始状态。查看当前任务:用户可以查看自己已申请的或者已完成的任务列表。查看已完成任务:用户可以查看目前已由其他用户填写完成的所有任务列表,可以修正现有描述文档。海量数字资源任务申注管理模块数据库cdal系统注册帐号 激活帐号登陆 申请任务保存任务 提交任务注销任务 查看任务元数据描述文档描述提供服务回收任务任务申注管理模块结构图第三章 主要研究和设计31 描述文档格式和dublin core任务申注管理模块的元数据应用规则是建立在dc元数据的基础上的。dc (dublin core, 全称 dublin core metadata elements set) 是一个能够有针对性地描述网络信息资

28、源的标准化元数据元素集。作为学科间信息资源描述的首要候选者,dc也已得到国际间的广泛承认。作为数字图书馆的一个重要技术,dc得到越来越多的应用。dublin core元数据是用来补充现有检索和索引网络资源的方法的,它甚至不考虑我们要描述的资源是一个电子的文档还是真正的实体。dublin core元数据元素集(dcmes)是由dcmi发表的第一份元数据的标准集(ietf rfc 2413)。该元素集制定了一个用于描述信息的“核心”属性的语义词表,它是一个例如“描述”,“创建者”,“日期”等15个描述性的语义定义,可以应用于一个广泛的知识领域的元素集合23。然而对dc元数据元素集的应用是很灵活的,

29、这依赖于我们的硬件,软件,我们要描述的系统资源以及描述的目的。元数据应用规则的一个核心思想实际上是在不改变原有元数据集的结构和语义的前提下,才能根据各自的具体需要添加或减少相关的元素。在cdal的任务申注管理系统中,我们需要描述的资源类型多种多样,为了达到能够精确描述各类型资源的核心属性,我们需要为不同格式范围的资源制定不同的元数据集。制定不同格式的元数据集的另一个目的是,符合用户理解习惯的元数据集也利于用户参与。但首先要遵守的是:1)对任一资源提供的描述性的元数据集一定是要基于dc规则的结构和语义的,做为一种描述型的元数据,dc已经经历了很长时间的发展并且有很强的适用性;2)不同资源的元数据

30、集之间的差别,一方面是源于不同资源本身的属性限制,一方面应该来源于不断的实践和应用经验。通过对dc元数据元素集的参考的调整,以及目前网络上普遍对这些多媒体数字资源的描述研究,我们目前制定两种类型的元数据描述文档格式:书籍文章类型和电影类型。32 资源状态的标定和描述文档管理任务申注管理模块需要管理和组织所有数字资源的描述文档,同时将对这些文档的填写任务向用户发布,对发布和回收的任务要全程跟踪和标记。模块的功能需求决定了对资源的发布状态进行标定的需要,以及描述文档管理的需要。在制定了不同格式资源的相应描述文档之后,要对每一份资源的文档进行保存和管理。cdal系统的思想是每个资源在系统结构中看来是

31、一个完整独立的实体,和该资源相关的一切文件都被包含在该实体中,并且在资源实体移动过程中无需涉及其他模块的改动。这样的要求下将资源的描述文档也包含在该资源实体中,既同该资源其他文件放在同一物理地址中,是最好的选择。这样的保存使得资源同资源的描述文档绑定在一起,描述文档是描述资源本身的元数据信息集合,从概念上看也应该算作资源的一部分内容。将资源的描述文档存储于资源物理地址下而不是统一存储在同一个地址中的另一个优势是,任务申注管理模块需要系统模块提供的任务列表和资源列表以进行资源的任务标记和跟踪,而系统模块可以在扫描本地磁盘以更新资源列表的同时扫描资源的描述文档进而生成资源的任务列表。根据系统对资源

32、的任务发布需求可以将资源的任务状态分为三种:发布状态:资源可以提供下载,但没有任何关于此资源的描述信息,此时资源需要用户申请该任务并为其填写文档。发布状态时,其描述文档的下载链接对于任何注册用户可见,任何注册用户可以申请。注册状态:已有用户注册该任务并申请为该资源填写描述文档。注册状态时,其他用户不可申请该任务,并且该任务对非申请者应该不可见。完成状态:已收到用户提交的资源描述文档,并已通过检测,该资源描述任务到此结束,任何用户不可再申请该描述任务。同时该资源的描述文档公开发布,可以由任何用户查看浏览,并且可以提供其他用户修正该文档。任务申注管理模块将资源的任务状态标记于该资源的描述文档中,因

33、此资源描述文档也有三种状态,并且对应于资源的相应状态,我们用不同的描述文档格式来区分这三种状态:发布态:该描述文档仅有一行,记录的是任何资源的元数据元素集都含有的元数据项identifier,内容为该资源的服务器名资源物理地址。注册态:此时该描述文档内容同发布态文档相同,但于最后一行添加注册态状态戳“_reg_”。完成态:资源任务已经完成,此时该文档内容为该资源完整的元数据元素集合,并且于最后一行添加完成态状态戳“_end_”。任务申注管理模块需要cdal系统模块定期更新资源并且生成全局资源的任务列表,该列表是一个记录资源所在物理地址及其任务状态的列表。任务列表文件中记录的资源任务状态必须与资

34、源实际描述文档状态一一对应:当资源状态为发布状态,列表中标记为“topublish”;当资源状态为注册状态,列表中标记为“register_”;当资源状态为完成状态,列表中标记为“complete”;服务器更新任务列表格式检查wiki发布发布态注册态完成态a提取b用户申请c修改提交d检测不通过检测通过修改任务稳定ea系统模块定期对各类别目录下的资源描述文挡进行扫描,根据描述文档的不同形态定义识别该资源的状态,并记录于任务列表文件中。b当用户登陆系统后,系统根据任务列表文件将发布状态的资源的描述文档填写任务显示给用户并提供任务申请链接。c用户申请某一任务,系统修改列表中该资源的任务状态为注册状态

35、,并修改该资源的描述文档为注册态。d当用户提交填写好的描述文档时,系统将接收到的文档交与文件检测程序检测格式,检测通过后,该任务发布到wiki中。此时该资源任务状态和描述文档状态仍为注册态;若文件格式检测不通过,恢复该资源描述文档为发布态,并在任务列表文件中修改该资源任务状态重新为发布态。e当资源的描述文档在wiki中发布一段时间并达到稳定时,经过一定程序的评估后放入到资源物理地址下,覆盖原描述文档。到此为止,该资源的任务发布过程完全结束,已经收集到该资源的描述文档。33 状态一致性任务申注管理模块需要管理和维护海量数字资源的描述文档并记录和跟踪描述文档任务发布的状态,因此在对用户的操作响应中

36、就有着对资源描述文档和资源任务列表的读写操作,有可能出现资源描述文档状态同任务列表所显示的状态不一致的冲突。但我们只允许用户看到的资源状态与实际资源任务列表记录的状态不一致(这是全局列表的未更新而造成),而不允许资源任务列表和资源描述文档状态不一致。因此需要解决可能造成这种不一致的两个问题331 用户用户冲突当多个用户同时对同一任务进行申请时,有可能出现冲突。当多于1个用户同时申请一个任务时,各自的cgi线程都要修改该资源的描述文档状态和任务列表显示的状态,这种情况的文件访问没有任何的互斥保护,这种冲突在任务申注管理模块中的运行是极不稳定的。在用户申请任务,提交任务或者取消任务的过程中,任务申

37、注管理模块对特定资源元数据描述文档的修改以及对资源任务列表的修改必须是一个原子操作,要么全部执行,要么全部不执行。可以对两个用户的操作用一个“入口控制”来解决这种问题:所有用户对某一任务的操作都需要经过一个入口进行检查,如果出现冲突,则阻止用户的操作,否则才让用户通过入口。入口可以由数据库记录来实现,通过查询数据库记录来判断是否有其他用户申请的该任务;由于任务列表记录了所有资源的任务状态,并且在用户的所有操作中保持更新,所以也可以用任务列表来作为“入口”。当用户申请任务时,首先要读此列表文件,确认该资源的任务状态显示没有其他人申请了该任务,进行完相应操作后修改该任务状态为注册态,并退出列表文件

38、。可以使用linux环境下的信号量操作来实现这种对任务列表文件读取的互斥。332 服务维护冲突任务申注管理模块需要记录用户的任务申请情况并记录于资源任务列表中,这属于任务列表和描述文档的服务模块。cdal系统模块定期的需要扫描资源状态并逐层综合结果生成一个全局资源任务列表,以向用户提供服务。在这个扫描和生成过程中,需要读取资源目录下元数据描述文档状态并输出到资源状态列表,这是系统的维护模块。两个模块都要对资源状态列表进行写操作,所以也有可能出现资源描述文档状态同任务列表所显示的状态不一致的冲突。首先分析两个模块的运行过程:任务申注管理模块 接收到的用户操作可能有如下几种:申请任务,保存任务,继

39、续任务,提交任务,取消任务。模块对元数据描述文档及资源任务列表会产生相应的操作。申请任务:需要修改该资源状态标识为注册态,并修改元数据描述文档状态为注册态。保存任务:将用户提交的待保存的信息存于一个临时文件夹保存,文件名为资源的md5标识。该过程不对资源任务列表和资源描述文档做修改。继续任务:将用户先前保存的任务读取提供继续编辑。该过程不对资源任务列表和资源描述文档做修改。提交任务:将用户提交的任务保存于一个临时文件夹,留作后续的格式检查,或者提供wiki发布。该过程不对资源任务列表和资源描述文档做修改。取消任务:修改资源任务列表标识为待发布态,并且修改描述文档为发布态。用于任务申注模块可能对

40、资源状态列表和资源描述文档都进行操作,但该模块的操作都一定保证资源状态列表同资源描述文档状态一致。资源中国地图描述文档资源列表中国地图 register 任务申注管理模块cdal系统维护模块 更新生成任务列表的过程是生成磁盘级资源任务列表并逐层综合结果为一个全局列表的1。任务申注管理模块的入口控制操作可以仅修改各服务器上的磁盘级任务列表,而该模块发布的服务是基于cdal系统模块定期生成的全局资源任务列表的,所以系统维护模块应该定期的扫描各磁盘级任务列表并更新全局任务列表。该更新过程是以数据盘为单位再逐层聚合的,如下图:全局列表服务器b服务器a系统维护模块示意图不同于任务申注管理模块,系统维护模

41、块的更新操作仅仅是为了更新全局任务列表,甚至可以只合并子列表和局部列表就可以;另外,系统维护模块不修改资源的描述文档状态,仅仅是读取状态并写入磁盘级任务列表。分析两模块的运行流程,只有一种可能会导致这种不一致性:系统维护模块先于任务申注管理模块读取资源状态,却后于任务申注管理模块写任务列表。因此应该保证两个模块的操作做为单一整体,使得各自的操作能够串行化。由于两个模块的冲突点是在资源任务列表,所以通过在该列表上加上信号量控制的方式来保证这种串行,即系统维护模块同任务申注管理模块之间的入口控制。两个模块视它们要修改的资源任务列表为入口,进行操作前获得入口的操作权,操作之后释放操作权。系统模块首先

42、获取在子列表上的信号灯,如果已被任务申注管理模块占有,则等待,然后获取信号并读取子盘的各资源状态写入列表,扫描结束后释放信号开始下一个子盘的操作;任务申注管理模块检测到信号灯的存在以后等待系统维护模块释放信号后再操作。系统对一个服务器上的所有子盘扫描结束后,在合并局部列表的过程中也以同样方式顺序对子列表占有信号再处理。经过这样的调度可以一直保证资源状态和列表显示的一致。有可能出现系统更新列表和任务请求操作同时到达但是更新操作先执行的情况,这样更新后的列表仍然不是最新的,任务请求操作的结果可以在下一次更新时被记录到全局列表。34 积分机制给予任务申注管理模块中参与描述文档填写任务的用户以一定的积

43、分是非常必要的。实际上填写一份完整的描述文档并不是一件容易的事情,特别是在我们不能提供足够的描述性信息源的时候,因此需要一个积分机制来激励和感谢用户对cdal的贡献,奖励的办法很简单,就是针对cdal现有的资源给予他们比普通用户更多的权限。由于cdal系统运行的目的是为了研究和试验,主要目的并不是提供服务,所以我们非常鼓励用户参与到描述文档填写的任务中来,虽然普通浏览用户具有一定的浏览和下载的权限,但是我们给予对cdal有共享的用户更高或者更实际的权限,比如下载排队时的优先权,下载更大流量的权利,或者更高的下载速度,其权利的使用就依赖于积分的多上。由于积分机制的使用波动性很大,各项积分的设置必

44、须恰到好处才能达到激励的作用,另外,该机制的运行也需要改动web服务器以适应各种需要,所以目前任务申注管理模块还没有实现这个部分。第四章 模块实现本章详细介绍了任务申注管理模块中各个关键程序的实现方式和运行过程,以及对一些具体部分实现时遇到的问题和解决办法。41 用户注册和登陆用户帐号的正常使用必须经过注册,激活,登陆三个部分。注册时用户必须提供真实邮箱,以激活帐号用,同时将来可能提供忘记密码或者发送特殊信件给用户的功能。用户登陆后可以正常使用。文件名描述misreg.cppmodify.cppcheckpass.cpplogin.cppsarsmis.cppmail.hmail.cpp对用户

45、注册帐号请求的处理对用户修改帐号信息请求的处理激活帐号的程序用户登录操作的程序,完成对用户信息的验证以后允许用户进入系统任务申注管理系统的主界面。当用户通过登陆页面以后,该程序负责向用户显示任务列表及相关用户接口,登陆用户就在这个界面上参与描述文档填写任务。邮件处理函数。该程序负在用户注册帐号以后发送激活链接到用户指定邮箱注册帐号:提取用户信息:用户名,用户密码,用户邮箱;在服务器端验证用户信息的有效性:帐号必须有字母和数字组成且不能少于4位,帐号未被注册过,密码必须由字母和数字组成且不能少于6位,两次密码输入必须一致,用户邮箱必须真实。如果验证失败则返回重填;在数据库记录用户帐号,标记用户积

46、分为-1,表示该帐号未激活;向用户邮箱发送确认信,并附带激活帐号链接;注册成功。激活帐号:用户点击激活链接;提取用户待激活帐号名;在服务器端验证用户信息的有效性:帐号必须存在,帐号积分必须为-1。如果验证失败则返回;在数据库记录帐号已激活,修改该用户积分为0;激活成功。登陆帐号:提取用户信息:用户名,用户密码;验证帐号信息:帐号必须存在,帐号密码正确。如果验证失败则返回重填;写入用户登录日志;读取任务列表,向用户显示发布任务;登陆成功。42 任务申请和提交任务的申请和提交是任务申注管理模块最核心的部分,不仅需要处理用户的一系列操作请求,同时要管理和维护系统中海量数字资源的描述文档及其任务状态。

47、任务申请和提交的环节的稳定工作是任务申注管理模块首要保证的。421 任务参与方式任务申注管理模块将任务发布的最终目的是希望接收到用户完成的完整的描述文档,任务的完成方式可以有多种,其中对描述文档最初的申请和填写可以有两种:离线方式和在线方式。离线方式是较容易实现的一种方式,用户查看资源信息并决定申请该任务时,任务申注管理模块为用户生成一份空的描述文档模板,用户将此模板下载到本地并填写完毕后上传到系统中即可。但是这种方式的缺点有:1, 对于系统来说,用户所提交的描述文档的格式无法控制,接收到用户的文档后还需要进行格式上的检查2, 对于用户来说,用户填写的过程很烦琐,用户需要下载文本格式的描述文档

48、模板到本地,然后要到网络上搜索元数据项信息,填写过程中还要调整文档格式,填写完毕后还要登陆系统上传。这种方式占用用户的本地空间,并且操作麻烦,不方便用户进行。对于经常上网或者具备上网条件的用户来说,这种方式很不直观。因此我们提供另外一种填写任务文档的方式在线填写,它可以实现:用户在线填写文档,不用下载或者管理本地文件;用户可以分多次填写文档,填写完但不提交的文档可以保存并下次继续填写;用户不用考虑文档格式的问题,直接填写元数据项即可。此外,用户还有另外一种参与任务的方式,就是修正其他人填写完毕的描述文档,这种方式较填写完整任务文档来说比较轻松,但能很大程度上帮助形成一份准确的资源描述文档。42

49、2 任务发布控制文件名描述misassign.cppmisdownload.cppmissubmit.cppmisaccept.cppperl.plmisreview.cpp负责向用户提供任务申请的相关说明和指导信息。当用户申请某任务时,由该程序提供离线方式和在线方式的接口。离线任务处理程序。当用户选择离线任务时,由该程序负责相关处理,并生成描述文档模版提供用户下载链接。在线任务处理程序。该程序负责用户的上传描述文档,在线填写描述文档,在线继续填写上次文档三种方式的请求。任务接收程序。当用户上传描述文档,在线提交任务,在线保存任务,取消任务后由该程序负责相关处理。当用户上传描述文档时,首先由该

50、perl程序接受文件,再转由misaccept.cpp程序进一步处理。向用户显示历史任务。当用户申请某一资源的描述文档填写任务时,任务申注管理模块misassign.cpp程序向用户提供离线方式和在线方式的入口。如果用户选择离线方式填写,由misdownload.cpp程序负责处理并生成描述文档模板,供用户下载,同时修改任务列表标记 如果用户选择在线方式填写,由missubmit.cpp程序负责处理。实际上该程序有三种输入方式,0方式表示用户要提交一个离线方式填写的文档,这种情况下该程序仅仅是提供用户上传已完成的描述文档的界面;1方式表示用户选择了在线方式填写新文档,程序标记资源状态后,提供用

51、户填写的界面,该界面包含了用户应该填写的所有元数据项,并提供用户保存文档和提交文档的接口;2方式表示用户需要继续上次填写的在线文档,此时程序需要读取上次保存过的文档信息并显示给用户,用户可以继续填写。无论用户是通过missubmit.cpp文件提交离线文档,还是提交在线文档,或者保存文档,都是由misaccept.cpp程序接收。如果用户提交了离线文档,该程序得到perl.pl文件的输入,然后做后期操作。如果用户提交了在线文档,该程序接收到用户填写的各数据项后,组织这些数据项并保存到服务器本地,如果发现用户执行的是提交操作,则将描述文档保存到指定位置,供wiki发布另外misaccept.cp

52、p还负责执行取消任务的操作,如果接收到用户取消任务的请求,则该程序负责还原资源状态为发布态,并在列表中标记,删除以前用户提交的所有文档。用户离线或在线提交的任务都记录到数据库,用户登陆后可以查看自己参与过的所有任务,misreview.cpp负责列表显示用户申请过的任务,并且显示每一任务的申请方式,如果是离线任务,提供上传文档的连接,如果是在线任务,提供继续任务的连接,如果任务未完成,提供取消任务的连接,如果任务已完成,显示任务当前状态。总的来说,missubmit提供了三种方式的访问,离线提交任务,在线填写新任务,在线继续填写任务;misaccept也接收三种方式的访问,离线提交的任务,在线

53、提交或者保存的任务,取消任务。示意流程图如下:misassignmisdownloadmissubmitmisacceptmisreviewperl-任务列表 -1 在线填写离线填写1 提交/保存在线任务0提交离线任务2 取消任务0 提交离线任务2 继续在线任务修改修改423 任务状态一致性控制文件名描述doclistop.hdoclistop.cpp头文件函数的具体实现,包括修改描述文档的函数,identitycheck函数,创建临时文档函数正如前面对状态一致性的描述,在描述文档任务的申请到提交的过程中,任务申注管理模块需要使用信号量对入口控制的保护,随时保证描述文档状态和列表显示的一致性。

54、建立一个alterdoc函数实现对资源描述文档修改的函数。int alterdoc(string position, int mode, string filename);该函数实现对资源描述文档的状态转换,mode参数指明了转换方式,其中0方式表示将position位置的资源描述文档转换为发布态,即该文档只包含资源的identifier标签;1方式表示将资源描述文档标记为注册态,在发布态文档末尾添加一行“_reg_”;2方式表示将文档修改为完成态,只需从固定目录下filename文件读取并覆盖即可。该函数仅由identitycheck函数调用。建立一个identitycheck函数控制对任务

55、列表和描述文档的操作步骤。int identitycheck(string rscpath, string checkstr, int writectrl, string deststr, string filename);该函数检查任务列表中rscpath指示的任务状态是否为checkstr,如果需要修改则改为deststr状态,并且调用alterdoc函数实现相应的描述文档转换。如果deststr为“compelte”,表示要修改为完成态,则调用alterdoc函数修改描述文档为filename文档。该函数在修改任务列表之前必须进行信号量互斥保护,方法是先对要修改的磁盘级任务列表建立信号量

56、并且占有该信号,然后修改任务列表,调用alterdoc函数修改描述文档,最后再释放该信号。43 cgi程序的输入文件名描述htmlinput.hhtmlinput.cpp头文件,定义了htmlinput类,和getinput函数htmlinput类的实现每个cgi程序执行前的第一步都要从环境变量或者标准输入流中获取输入的标签和标签值再进行处理,这只是一个很小的对字符串的处理函数,但是频繁出现在每个文件中。另外,cgi输入的格式不是固定的,不同文件需要接受的输入的标签数标签名都不一样,造成不同的cgi程序中getinput函数不同,没有通用性。因此应该建立一个单独的模块处理cgi输入,该模块应该具有的功能有:可以以url串为输入,自动读取标签数分配空间,记录标签名和相应标签值;可以方便的获取标签值,可以按照标签名取值;提供统一的接口,对所有cgi程序,对任何输入都适用。定义一个htm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论