摘 要: 以学校的数字化校园建设为背景,基于面向对象技术和学习内容管理技术,提出了一个面向网络教学的学习资源模型,并基于该模型采用JSF框架设计和实现了一个通用的学习内容管理系统。
关键词: 学习内容管理; 学习资源; JSF框架
内容是一切交互活动的基础:“Content is king[1]”。内容是一个比数据、文档和信息更广的概念。数据通常是指结构化的、由传统关系数据库处理的对象,文档通常指非结构化信息,常常由类似全文信息管理以及类似Lotus Domino等应用软件来管理,而信息通常包括结构化的数据和非结构化的文档。内容除了一般的文字、文档、多媒体、流媒体外,还包括Web网页、广告、程序(如JavaScript)和软件等一切数字资源,内容是各种结构化数据、非结构化文档、信息的聚合。内容管理所涵盖的信息广泛,从网络教学的角度来进行分类,可以分为运行内容,如报表、排课单、选课单等;教学内容,如电子教材、学习档案、作业、练习与答疑;Web内容,如HTML与XML等格式的信息;以及多媒体内容,如声音、影片、图形等。
管理就是施加在“内容”对象上的一系列处理过程,包括收集、确认、批准、整理、定位、转换、分发、更新、存档等,目的是为了使“内容”能够在正确的时间、以正确的形式传递到正确的地点和人。内容管理本质上是采用内容的索引、编码、存单、恢复和个性化的发布服务等先进的技术手段,将网络的优势与相关应用进行巧妙的结合[2]。简而言之,内容管理即管理网上需要发布的各种信息。内容管理涉及的内容不仅仅是对文件、数据的管理,还包括资料获取、存储方法、访问权限、检索方法等方方面面[3-4]。目前,内容管理更多的是应用于企业内容管理和网站内容管理,而内容管理在网络教学中的应用主要是学习内容管理系统。
学习内容管理系统结合了学习管理系统的学习追踪、管理和内容管理系统的内容创建、发布、管理等思想,在学习对象和相关网络学习技术标准的基础上,提供了一个没有编程经验的内容制作者也能制作、存储、组合和发布基于学习对象的个性化学习内容的网络化教学应用系统[5-6]。不同的学习内容管理系统开发商提供的系统不尽相同,但是,每个学习内容管理系统都应具有以下4个基本构件:学习对象仓库(Learning object repository)、学习内容创作编辑(Automated authoring application)、学习内容的动态发布接口(Dynamic delivery interface)和系统管理应用(Administrative application)。
发展网络教育,拥有大量高质量的、可共享的网络学习资源至关重要,没有资源,网络教学就成了无源之水。学习对象的提出为提高网络学习资源的可重用性、可共享性以及互操作提供了一种思路。基于校内网络教学的特点及需求,借鉴学习对象的思想,结合 XML技术的应用,参照国际学习资源相关标准[7],提出了一个面向网络教学的学习资源模型。模型由内容组件模型、元数据模型和内容包装模型三部分构成。内容组件用于按层次重构学习资源,解决学习资源重复使用和共享问题;元数据模型用于描述内容组件的各类公共属性,解决学习资源的检索、交换等问题;内容包装模型用于对学习资源组织和打包,提供在不同的学习环境中交换学习资源的机制。
本文结合J2EE技术设计的特点,提出了一个面向网络教学的学习资源模型,基于该模型采用JSF框架设计并实现了一个通用的学习内容管理系统。
1 学习内容管理系统设计
(1)系统组成:学习内容管理系统分成6个子系统、分别是学习对象管理系统、内容发布系统、学习资源库管理系统、课程管理系统、用户管理系统和其他支持系统。另外,从系统逻辑上看,可以分为3个层次,分别是用户界面层、系统业务层和物理存储层。
(2)系统体系结构:根据应用的实际要求,学习内容管理系统J2EE架构规范,构建典型的B/S应用。学习内容管理系统,在逻辑上基于采用JSF(Java Server Faces)的开发平台,业务上共分为3层结构,客户端层、Web服务端和应用服务端。其中客户端主要形成学习内容的界面体现形式,Web服务端用于动态生成客户端需要的界面,应用服务端主要用来进行学习内容管理系统的业务处理,负责与后台的数据库打交道。系统体系结构如图1所示。
(3)数据模型设计:将数据分为两个部分,一是学习内容管理系统需要使用到的基础数据,二是各个子系统使用的数据。学习内容管理系统的基础数据主要由学习资源模型的3层数据组成。首先是与学习素材有关的数据表,这些数据表用来保存与学习素材物理存储有关的信息;其次是与学习内容对象有关的数据表,最后是与应用对象有关的数据表。
2 关键技术
2.1基于JSF的Web层实现
在学习内容管理系统中,系统登录、学习内容信息的查询、添加、修改、生成、内容发布都要通过JSP页面与用户交互。由于JSF提供了标签库,大部分的页面利用JSF标签库的标签就可实现。在JSP文件的开始部分,首先要引入标签。
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
这样,JSP文件就可以使用JSF标签了。在contentEditor.jsp中,主要使用了<h:form>、<t:inputHtml>、<h:commandButton>标签。部分代码如下:
<h:form>
<t:inputHtml value=”#{editor.text}” style=”height: 60ex;” />
<h:commandButton value=”保存” action=”#{editor.save}”type=”submit”/>
</h:form>
JSF使用受管理bean来实现界面设计与业务逻辑的分离。在上面的代码中,标签就使用了一个名为editor的受管理bean将界面设计与业务逻辑分割开。<t:inputHTML/>标签在界面上显示为一个HTML输入区,同时把输入数据与editor的text属性相关联。<h:commandButton/>标签在界面上为一个名为“保存”的命令按钮,同时利用标签的action属性把标签与editor的save方法关联起来。
按照JSF框架的定义,受管理bean是在faces-config.xml配置文件中定义的,这个XML配置文件放置在/WEB-INF目录下面。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
… …
<managed-bean>
<managed-bean-name>editor</managed-bean-
name>
<managed-bean-class>mtn.gfkd.lmcs.web.
EditorFace
</managed-bean-class>
<managed-bean-scope>session</managed-
bean-scope>
</managed-bean>
… …
</faces-config>
上面是faces-config.xml的部分代码,表示:构造mtn.gfkd.lcms.web.EditorFace类的一个对象,命名为editor,并且在session期间一直保持激活状态,也就是说它用来处理来自相同客户端的请求。完成受管理bean的定义后,JSF标签就可以访问editor的属性和方法。
2.2 EJB层实现
系统的EJB层主要由5个无状态会话Bean和ServiceLocator单例类[8]组成,5个EJB分别是Learning
ObjectEJB、 LearningResourceEJB、ContentPublishEJB、Course
EJB和UserEJB。系统的业务逻辑是由EJB处理Web层EJBService传递过来的用户请求,调用DaoManager来实现的。
以LearningObjectEJB为例,这个EJB主要处理的是学习资源模型中的模型对象。由于学习资源模型分为3个层次,其中涉及到的模型对象多,模型对象间的关系复杂,因此在此应用建造者模式来创建这些模型对象。LearningObjectEJB的结构如图2所示。
2.3 基于Hibernate的数据层实现
数据层的实现主要是把实体类映射到数据库表,并对实体类对象进行添加、修改、删除、查询等操作,用DAO模式封装这些操作,采用Hibernate实现O/R映射及对象管理。持久层实现步骤如下,均按照Hibernate的规范[9]进行:编写持久实体类,O/R映射配置,编写业务代码操作持久对象。
2.4 Java NIO应用
为了解决一个线程绑定模式造成过分消耗资源的问题,可以采取使用非阻塞I/O操作来管理源自一个线程的大量通信,也可以采取服务器使用一个可配置的线程池,从而充分利用多处理器计算机的优势。这两种方法的核心在于可选择I/O(selectable I/O)的概念[10]。如果无法进行高效的轮询来完成工作,那么仅有非阻塞I/O操作(nonblocking I/O)是不够的。NIO包是在 JDK 1.4 中引入的。NIO 弥补了原来的I/O不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。通过定义包含数据的类,以及通过以块的形式处理这些数据,NIO 不用使用本机代码就可以利用低级优化,这是原来的 I/O 包所无法做到的。NIO通过使用可选择通道提供了高效的轮询机制。可选择通道允许向一种特殊类型的监听者注册,这种监听者称为选择器(selector),它可以检查通道是否准备好以完成诸如读写、接受或创建网络连接等操作。
通过使用NIO包重新编写上传程序,新的学习内容管理系统在处理客户端上传大容量文件的时候,解决了原来的过分消耗资源的问题,在网络条件良好的情况下,系统能够顺利地接收客户端上传100 MB以上的文件,并且能够保证系统整体性能处于良好状态。
本系统采用JSF框架的体系结构,它集学习内容开发、内容管理、内容发布于一体,使得教师可以快速地制作、发布学习内容;遵循IMS标准,系统生成的内容交换包可以在符合IMS标准的不同教学平台间交换。
参考文献
[1] MAYBERRY E. Basics of CMS implementation,http://www.learningcircuits.org.2002/may2002/mayberry.html,2002.
[2] MINH L D,LYDIA L. An open architecture for ontologyenabled content management systems: a case study in managing learning objects. Proceedings Lecture Notes in Computer Science,2006.
[3] BROOKS C, PANESAR R,GREER J. Awareness and collaboration in the iHelp courses content management system. Innovative Approaches for Learning and Knowledge Sharing, Proceedings Lecture Notes in Computer Science,2006.
[4] 韩啸,曹辉.内容管理的关键技术[J]. 中国传媒科技,2004(5).
[5] 孔维宏. 基于学习设计规范的学习内容管理系统设计[D]. 华南师范大学硕士论文,2004.
[6] 付琴.标准化的学习内容管理系统研究[D].华中科技大学硕士论文,2002.
[7] 付琴,程文青,杨宗凯.SCORM——可共享对象参考模型的研究[C]. 中国远程教育,2003(1).
[8] ALUR D,CRUPI J,MALKS D. J2EE核心模式(第2版)[M]. 北京:机械工业出版社,2005.
[9] 孙卫琴. 精通Hibernate:Java对象持久化技术详解[M]. 北京:电子工业出版社,2005.
[10] 彭晨阳. Java 实用系统开发指南.北京:机械工业出版社,2005.