集成融合服务与iLibrary系统实现:表示层_liferay论文

iLibrary:表示层集成融汇服务及系统实现,本文主要内容关键词为:融汇论文,系统实现论文,iLibrary论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。

【分类号】G250.7

1 引言

近年来,集成融汇服务(Mashup)在图书馆领域得到迅速发展[1]。其根本原因在于服务本身的日益多元化,用户对于多来源、多形式服务整合应用需求的日益增加。表示层对象融汇是集成融汇应用的基本形式,它通过选择、组合多个不同来源的表示层对象构建出一个新应用,使用户在一个或者多个自定义页面里使用多个网站提供的功能[2],这也是迄今为止最为成熟的集成融汇应用模式。

为了整合中国科学院国家科学图书馆(简称国科图)自身资源、国内外图书馆资源、出版界等第三方提供的各类服务,并为科研人员与科研团体进行服务的整合呈现,iLibrary系统(http://ilibrary.las.ac.cn)应运而生。iLibrary收集国科图、其他图书馆与出版商服务、谷歌等第三方系统的多种类型服务形成服务资源库,以及基于资源库的服务获取,生成、管理与使用的动态机制,通过上网起始页与门户系统为用户进行服务综合呈现,并提供完善的社区管理功能。本文将分别介绍iLibrary系统的应用模式、设计思路与实现方法。

2 应用模式与功能模块

2.1 用户需求

集成融汇本质上是一种SaaS(Service as a Software)思想的应用模式,图书馆领域对于集成融汇服务的需求主要来源于以下几个方面[3]:

(1)建立单独馆藏资源的信息服务很难满足用户日趋复杂化的需求,而对第三方组织、机构、个人资源的集成利用成为当前用户需求发展的一个新趋势。

(2)基于图书馆端系统的服务越来越不适应用户的需求,纽约公共图书馆(NYPL)通过对用户的调查发现,大部分年轻学生平时主要使用的是社会网络空间与个人电脑桌面系统等工具。

(3)Web2.0时代,创新(Innovation)与竞争(Competition)成为影响图书馆发展的两大要素,用户不再是单一的网络信息消费者,同时还是信息生产者、网络服务构建者,进而成为图书馆员的合作对象、竞争对象。

iLibrary系统整合各个图书馆资源、第三方组织与机构开放的服务与资源,并整合了用户常用的其他工具,实现将图书馆的服务嵌入到用户的操作环境中(个性化主页),并收集用户分享的服务资源,为用户进行多种方式(个人门户与社区门户)的服务与资源的整合呈现,满足了用户日益迫切的对于集成融汇服务的需求。

2.2 系统框架

iLibrary用户包括系统管理员、学科馆员、科研人员与科研团体。系统管理员进行系统的运行维护与高级设置,一般由系统开发维护人员担任;学科馆员进行系统的辅助推广、小工具需求的提出、进行门户系统的辅助构建并与终端用户的进行交流,在系统中的角色一般为其服务的科研领域与科研团体对应社区的管理员。科研人员与科研团体为系统的终端用户,通过上网起始页与门户系统使用系统服务。

图1为iLibrary系统的应用模式与系统功能模块框架示意图,通过该框架可以看到,iLibrary主要分为三大模块,分别实现小工具(“小工具”为iLibrary系统及Widget[4]的中文称谓,可以视为服务的可视化呈现接口)管理、服务呈现与用户管理。本框架中,系统从国科图平台、其他图书馆与出版商平台、谷歌等第三方平台获得服务资源,与系统自带的门户工具一起,形成小工具库;系统用户(科研人员)可以在系统中进行小工具注册、标注、指定类别与评论等操作;系统也可以将系统中的小工具以服务形式提供给其他Widget平台使用;科研人员使用系统的小工具构建自己的个性化主页与门户系统;系统用户(科研人员)可以创建科研社区、申请加入科研社区,社区可以邀请科研人员加入,并为之划分社区中的角色;科研团体通过门户系统使用系统提供的服务,并能在门户中进行展示与交流沟通;学科馆员将进行系统的辅助推广,协助科研人员与科研团体使用系统,并向开发人员提出具体领域的小工具需求。

图1 系统总体框架

2.3 同类系统比较

与本系统类似的系统包括Liferayt[5]等门户自动构建系统以及iGoogle[6]、Netvibes[7]等个性化首页构建系统,iLibrary可以视为此两类系统功能整合后在科研领域的应用工具,其核心优势在于将形成科研领域服务资源获取与消费的良性机制。iLibrary与类似系统的比较如表1所示。

iLibrary基于Liferay系统开发,保留了Liferay平台中大部分优秀的传统门户工具,以及用户与社区管理功能。iLibrary中的小工具描述则主要参照iGoogle,实现了类iGoogle的Widget管理功能。这三类系统之间在应用模式与技术实现方面的比较如下:

(1)Liferay等系统使用自带的Portlet[8]工具集进行门户构建,甚至也可以动态嵌入iGoosle等平台于网上发布的小工具(例如iGoogle平台的Gadget)[9]。但相对于iLibrary平台,这些传统的门户平台并未形成自己的Widget描述标准,不能实现Widget资源跨平台跨应用分享,没有Widget收集录入与管理机制,也没有对Widget进行评论评级等增值功能,更没有形成科研领域的小工具库以及小工具生产与消费的动态良性机制。

(2)iGoogle与Netvibes等Widget平台网站是采用OpenSocial标准的一个开放性的网站,其开发的Widget标准也为业界广泛采用。这些网站均对外提供了嵌入方式,供其他网站对其进行嵌入式集成(即融汇集成)。这类网站使用个性化上网起始页(Dashboard)进行资源呈现,不具备门户功能与社区管理功能。其Widget标准往往非常复杂,非编程人员无法进行Widget资源的制作。Widget资源库中资源绝大多数属于大众娱乐领域,学术领域资源非常匮乏。iLibrary则具备完善的社区与门户功能;并采用了更加简单的Widget管理与录入方式,降低了Widget录入门槛;并将形成科研领域小工具库,供科研人员与科研团体进行使用。

3 系统实现

iLibrary并未更改Liferay系统的实现层次架构,而是在其上实现了Portlet与Widget融合技术、Widget管理、权限控制等功能,这些技术为本系统在技术方面的独创。而页面生成、缓存机制等则是Liferay中已经完善的模块,iLibrary系统中参照其方案,将之应用在自己的模块中。Liferay作为一款著名的开源软件,其诸多模块均基于开源软件实现,对之进行深入分析对于各类Web系统实现具备相当的参照意义。

3.1 系统架构

图2 系统层次架构图

图2为iLibrary(Liferay)系统的层次架构图,层次架构的优势在于对系统功能进行了分离,使得系统更加清晰并更加易于维护:

(1)物理文件层:指系统使用的配置文件、缓存、索引文件、数据库,本层的功能是存储系统所需要的各类数据资源。

(2)对象关系映射:使用Hibernate[10]实现,这使得系统可以操作各种类型的关系数据库,上层也可以用对象编程思维来操纵数据库。

(3)数据操作层:接收业务逻辑层的数据,调用对象关系映射层API,对数据库进行操作。

(4)业务逻辑层:实现系统所需要的各类功能,包括小工具的管理、网页的生成、权限控制等。本层次的诸多功能依赖于系统内核,系统内核实现各个底层功能组件,例如XML文件处理、字符串处理、图片与文件处理等。

(5)MVC:包括交互动作层与JSP页面,基于开源软件Struts[11]实现。交互动作层实现MVC框架中的控制器功能,主要功能是收集网页动作传递的数据,将之传递给业务逻辑层(模式层),接收返回数据并实现跳转;JSP页面实现MVC框架中的视图层,将数据呈现给用户并与用户进行交互。

3.2 功能模块

(1)Portlet与Widget融合技术

参照文献[2],目前常用的Mashup表示层对象组件主要有两类:Portlet和Widget。Portlet是页面组件技术的一种高级应用,每个Portlet实例是一个以命名空间为页面元素前缀的页面片段,后台通过命名空间进行Portlet识别,并进行动作响应。Widget表面上类似于Portlet,实质上则是遵循一定标准、基于HTML与JS脚本的第三方接口描述,往往使用XML为存储介质,XML文件中存储着接口元描述、参数信息与页面响应事件等信息。Portlet与Widget技术均具备自己的优缺点,适合于不同的场景。Portlet一般应用于Poaal系统中,Portlet的实现与运行不依赖于第三方,所有数据存储于本地,可以由开发人员自己操纵,实现非常复杂的功能,例如富文本管理、图片文件管理等。Widget技术则广泛应用于个性化主页构建系统,一般形成并开放标准后由大众进行开发,带有很强的Web2.0特点。其开发、运行与数据存储往往依赖于第三方平台,所以往往不够稳定,不适合用于制作复杂的门户工具。

图3 Portlet与Widget融合方案示意图

iLibrary系统为了更广泛地为用户提供服务,结合两种技术的优势,支持门户系统与个性上网起始页两种服务呈现形式,融合了Portlet与Widget两种技术。如图3所示,其实质是使用Portlet技术实现了Widget管理与呈现。iLibrary的Widget操作面板遵循Portlet标准,使用视图模式进行Widget呈现与各类操作。Widget添加到页面上后,使用不同的Portlet进行Widget呈现:通过不同的解析程序解析Widget工具库中的XML存储文件,利用配置信息进行接口代码实例化后,使用视图模式将接口进行呈现。每个Widget运行实例都保存自己的个性配置信息,本系统利用Portlet的设置模式,读取以键值对形式为存储方式的实例配置信息,生成图形界面以进行Widget的配置。用户在图形界面指定小工具的参数取值后,通过指定值生成新的小工具运行实例,并将配置信息也存储入小工具实例信息中。

(2)服务管理库

小工具的元描述参照了Gadget与Netvibes的实现,以及UWA[12]标准。小工具注册后将在后台生成一个类似于Gadget的XML文档,并存储于系统的小工具管理库中,如下为一个检索类小工具的XML描述文件:

如上所示,iLibrary中Widget的定义分为三部分:

①小工具首选项:XML文件中的部分指定了小工具的特征,如标题、作者、首选大小等。

②小工具内容:一般为一段网页代码或者一个网页地址,是小工具实际工作的地方。在其中可以指定编程逻辑和决定小工具外观的常用HTML元素,其中的参数信息用指代符号代替。

③参数配置信息:部分存储了允许用户进行小工具设置的控件与默认值信息。例如实例中“检索词”为字符串类型,在设置时将生成输入框控件,而“排序”则将使用Enum Value中的信息生成下拉选择框。

iGoogle与Netvibes的Widget标准非常类似,相对于这两个平台,iLibrary平台中的Widget标准则更加简单,例如iGoogle中每一个Widget均为每种语言单独建立了一个XML文件,存储语言标注的映射信息,并且带有Widget中加载、鼠标点击等事件响应机制。本文认为Widget标准在具体应用场景下可以进行一定程度的简化,例如多语言支持机制。由于iLibrary系统的应用对象一般为中文用户与少量英文用户,系统利用ModulePrefs中的元素存储英文标注信息,避免了为每个语言建立单独的语言包。其根本目的在于尽可能地降低小工具制作门槛,提高小工具制作与维护的效率,并使得编程能力欠缺的学科馆员与普通用户也能快速制作小工具,iLibrary平台允许使用图形界面进行小工具的注册,在后台自动生成小工具的结构化存储数据,不需要用户上传XML文件。

基于小工具描述标准,小工具管理库实现了基于Lucene的Widget检索、排序、标注、评论等增值功能,所使用技术均为传统技术,本文不再详述。

(3)同类系统资源引入

从其他Widget平台,诸如iGoogle、Netvibes等系统引入的Widget资源是iLibrary系统小工具的重要来源,当前系统中使用iGoogle平台、Netvibes平台所开放的诸多服务。目前,Widget引入的方式主要有两种:

①引入接口:iGoogle、Netvibes等平台均支持将Widget以服务形式进行共享,例如示例①为一个Gadget平台开放的Widget接口,将之嵌入到页面后即可使用。iLibrary可以将这样的接口视为一个新的Widget,为之定义名称、英文名、参数配置信息等,在平台中直接进行使用。

②通过标准映射导入:iGoogle等平台与iLibrary的Widget标准具备相当的相似性。获得iGoogle的小工具描述文件后,通过解析,可以进一步得到Widget的元描述与配置信息,例如示例②。通过解析得到Widget每个描述元素信息后,通过描述关系映射处理,可以将之导入到iLibrary系统中。

接口引入方式导入的Widget依赖于引入平台的运行状况,并且不能得到小工具的配置信息以实现对其的实例化配置,使用带有一定限制。第二种方法实现更加复杂,虽然能够完全获取所有的小工具信息,然而其实现方式有一定的版权争议,所以本系统未将此功能进行开放,系统当下使用的导入小工具均为通过第一种方法导入的。

(4)用户管理与权限控制

用户管理与权限控制为Liferay系统中比较成熟的模块。在Liferay系统中,用户可以在不同用户组(科研团体)中扮演不同的角色,例如在某个科研小组中仅为普通成员而在另外一个小组中则为负责人。系统通过“角色”实体存储用户在用户组中扮演的角色关系。而将“权限”定义为对权限客体进行的操作,诸如对页面集合的浏览、对页面的编辑与风格的更换、对小工具的配置、对数据项的浏览与修改等。Liferay系统侧重于通过用户在某个社区中的角色信息判断用户能够对某个社区资源进行的操作,所以Liferay系统中用户权限通过用户在社区中所扮演的角色进行标示,用“角色权限”实体进行存储;也可以将权限直接授予用户,用“用户权限”实体进行存储。而权限判断时,用户的真实权限则为“角色权限”与“用户权限”的交集。

对于iLibrary系统而言,不仅需要控制社区资源在社区内的权限,更侧重于控制用户注册的Widget能够在多大的范围内共享,当前系统中Widget的权限控制方式有三种类型:

①完全开放:所有系统注册用户均可以使用;

②仅注册者使用:仅Widget注册用户可以使用;

③指定用户使用:指定用户所处的社区或者直接指定用户,所处于指定社区或者为指定个人的用户可以使用。

图4 系统权限实体图

当用户具备了对于页面的管理权限,例如为个人页面的所有者或者为某个社区的管理员,并且具备了对于某小工具的“使用”权限时,可以将小工具添加到自己所管理的页面上。小工具资源提交时,提交者指定权限控制类型与分享范围。通过“权限客体类型”存储权限控制类型,通过“组权限”实体存储Widget操作权限与社区(组)之间的关系,也可以用“用户权限”实体直接将Widget操作权限与用户进行关联。图4为iLibrary系统的用户管理与权限控制实体图。

(5)动态页面生成

动态页面生成为Liferay系统中的成熟功能,iLibrary系统直接利用了其实现方案。Liferay系统通过页面模板与页面分块信息进行页面生成,并支持多语言多风格机制,对于复杂Web系统的实现具备较高的参考价值。iLibrary系统使用门户与上网起始页的方式进行服务呈现,页面需要通过小工具进行动态的拼组合成。每个小工具可以生成很多小工具的运行示例。每个运行示例仅属于一个页面,页面通过布局信息得到小工具运行实例,系统后台以的形式存储组织。每个小工具实例名(例如“Widget_FastSearch_INSTANCE_O1Eg”)为一个小工具运行实例的唯一标识,后台通过小工具实例名,辨别相应消息来自于哪个小工具实例,再进行事件响应。如下为一个页面的布局信息示例:

layout-template-id=3_columns//页面为三列结构

colu mn-3=Widget_FastSearch_INSTANCE_O1Eg,Widget_GoogleSchloar_INSTANCE_C52i,

column-2=Widget_CrocsDomain_9Idx,Widget_CrocsDomain_8Xlp,Widget_Google_INSTANCE_UA8x,Widget_Baidu_INSTANCE_Hg9S,//第二列包括跨库检索、跨界检索、谷歌检索、百度检索

column-1=Widget_RSS_INSTANCE_cm8B,Widget_RSS_INSTANCE_Mt5F,

Liferay整合了Structs框架的多语言支持功能,为每种语言建立一个配置文件,使用配置文件存储指代符号与具体语言中替代文本的映射关系。用户可以指定自己所希望显示的语言,系统读取用户指定语言的对应语言文件,将页面中指代符号赋值之后呈现给用户。系统通过配置文件存储风格信息,诸如每种风格所用到的CSS文件、页面布局与图片,在系统初始化时,将之存储入内存数据结构中,用户可以随时指定使用哪种显示风格。这些均非本文的核心工作,此处不再详述。

图5是本系统为科研用户构建的上网起始页示例,其中左侧整合了国科图的服务,中间一栏为主要来源于谷歌的第三方服务,右侧为用户关注领域的科技资讯信息。

图6为移动计算社区门户中某一页面截图,此页面进行领域内常用服务的整合呈现。页面包含了DBLP、ACM检索等计算机领域的学术类小工具以及谷歌提供的工具、国科图所提供的服务。

图5 上网起始页示例

图6 社区门户示例:移动计算社区

(6)缓存机制

Liferay系统是一个代码量逾百万的大型系统,而其运行却非常稳定,响应速度也非常优秀,其中一个重要原因是其完善的缓存管理机制。Liferay系统中缓存分为三层:

线程缓存:通过存储本线程内所用到的数据;

内存缓存:通过一个多线程安全的全局ConcurrentHashMap[14]进行数据存储,以模块名为键名,以模块所使用的数据的Map容器为键值进行组织;

物理缓存:使用开源软件Ehcache[15]实现,将数据条目转化为Element,然后交予Ehcache进行托管。各层缓存机制都可以设置为开启或者关闭。

图7为缓存的判断逻辑,iLibrary系统将缓存机制嵌入到了Widget检索与权限判断等模块。实际应用中的统计数据证明了本缓存机制非常有效地提高了系统中检索模块、权限判断模块、RSS加载模块等的处理与相应效率。

图7 本系统缓存判断逻辑

4 结语

iLibrary系统作为国科图的表示层集成融汇平台,与传统门户工具和个性化主页工具相比,带有鲜明的Web2.0与网络化软件的特征。它通过传统的门户工具,使科研用户与科研人员的信息能够得以良好的展示,并能够在平台上进行便捷的交流。通过多来源的小工具资源,以简单快捷的形式进行服务的使用与分享,形成了小工具生产与消费的良性机制。本系统在应用推广中,得到了诸多学科馆员与终端用户的认可。

由于系统刚刚推出,诸多方面还需要继续改进。例如如何更好地支持多学科资源组织管理、实现资源的动态推荐、实现资源的情景感知服务等。

收稿日期:2010-09-25 收修改稿日期:2010-10-27

注释:

①http://www.google.com/ig/directory?synd=open&hi=zh-CN&gl=zh-CN&url=http://www.google.com/ig/rnodules/tabnews_raw.xml

②http://www.google.com/ig/modules/tabnews_raw.xml

标签:;  ;  ;  ;  ;  ;  

集成融合服务与iLibrary系统实现:表示层_liferay论文
下载Doc文档

猜你喜欢