摘 要: 以學校的數字化校園建設為背景,基于面向對象技術和學習內容管理技術,提出了一個面向網絡教學的學習資源模型,并基于該模型采用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)。
發展網絡教育,擁有大量高質量的、可共享的網絡學習資源至關重要,沒有資源,網絡教學就成了無源之水。學習對象的提出為提高網絡學習資源的可重用性、可共享性以及互操作提供了一種思路?;谛染W絡教學的特點及需求,借鑒學習對象的思想,結合 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.
