何鳴皋,尤偉光
(云南大學 現代教育技術中心,云南 昆明650091)
目前學校部署E-learning平臺一般有以下幾種常見模式,這幾種模式均有各自的優勢,但也存在各自的問題。
流行的商業E-learning平臺有Blackboard[1]等。購買商業版的網絡教學平臺,可以讓學校快速獲取和使用網絡教學平臺,縮短學校構建E-learning平臺和投入應用的周期,并享受軟件供應商的相關服務。
但是隨著教學應用的不斷深入,如果需要對現有功能進行調整和改進,就存在無法對商業軟件直接進行修改的問題,即使軟件供應商能夠提供修改服務,其響應時間往往較長,而且商業軟件高昂的采購費用和升級維護費用也是學校沉重的財務負擔。
目前流行的開源E-learning平臺有Moodle和Sakai[2]等,采用成熟的開源網絡教學平臺,雖然部署的技術門檻比采購商業軟件要高,但為學校節省了大量的經費開支,還能夠與開源社區和其它采用該平臺的學校共享資源和經驗。
但是,學校無論引進哪一個網絡教學平臺,實質都是引入了該平臺已經定型的教學設計和應用流程,很可能與學校自身的實際情況和應用需求存在偏差,導致在進行應用培訓和投入實際教學的過程中難以被教師和學生接受,而且還可能會增加無謂的培訓和系統管理工作量,最終反而降低了教學效率和管理效率,甚至造成學校的網絡教學應用半途而廢。
自主開發E-learning平臺,可以讓學校完全根據自身情況設計和開發滿足自身需求的網絡教學系統,然而由于E-learning系統的復雜性,從零開始開發一套Elearning平臺會耗費大量的人力和時間,在技術人員人力十分有限的學校難以實施。
學校根據自身需求設計E-learning功能,交由專業的軟件開發公司進行平臺開發,從而實現按需定制開發,比直接購買成套的E-learning平臺更加切合學校的實際需求,并且學校也無需投入開發人力。
但是外包定制開發需要學校與軟件開發公司長期合作,也需要學校長期投入大量的資金。另外學校與外包公司開發人員的溝通成本也不可忽視,缺乏有效的溝通會導致外包公司開發的產品不能完全滿足學校的需要,而且外包公司的響應速度也會決定E-learning在應用過程中出現的問題是否得到及時的處理。
由于學校的開發人力有限,因此基于Moodle和Sakai等開源E-learning平臺進行二次開發是較為可行的方案,可以讓學校充分利用開源E-learning平臺的現成功能,大幅度縮短E-learning平臺部署和投入應用的周期,還可以讓有開發能力的學校根據自身需求對開源E-learning平臺進行修改和二次開發。然而由于開源E-learning平臺的基礎架構已經定型,二次開發大多只局限于功能微調或是開發附加的功能模塊,很難改動平臺的主體設計和現有流程結構。[3]此外,開源Elearning平臺是在不斷更新和升級的,在某一版本上深入進行修改和長時間使用,將使二次開發的版本成為該平臺的一個分支(branch),從而難以再獲取官方版本的更新和升級。
綜上所述,學校要進行網絡教學深入應用的最佳方案是根據學校自身情況分析教學和管理需求,設計符合實際情況和滿足實際需求的網絡教學流程和功能,定制開發E-learning平臺。特別是“面對信息超載和知識碎片化兩大挑戰,新建構主義認為知識體系是由感性認識、理性認識和聯想三者構成的一個類似榕樹的結構。教育是一個知識‘嫁接’過程,學會‘自嫁接’是網絡時代學習者的首要任務”。[4]然而對于學校而言,要實現“按需定制開發E-learning平臺”這一目的,需要綜合考慮資金、開發人力、開發周期、功能需求以及開發的可持續性等諸多因素,條件不同的學校需要根據自身情況對這些因素進行平衡和決策。因此,很有必要找到一種普遍適合于有一定開發能力的學校的折中開發方案,使學校既能根據自身需求定制開發E-learning平臺,又能最大限度地減少資金和開發人員投入,從而實現高效率和可控的自主開發。
Drupal[5]是一個用PHP語言開發的,在互聯網上被眾多網站所采用的CMS(ContentManagementSystem)[6]。開源的Drupal平臺包含功能強大的CMS核心組件,并且已有一些現成的E-learning相關模塊,更重要的是Dru pal還提供了一整套用于開發Web應用的API(ApplicationProgrammingInterface),因此基于Drupal進行網絡教學平臺構建和開發,適合有一定自主開發能力,并希望能夠按本校實際需求定制開發的學校。作為沒有條件或不想過多投入開發人力的學校,也可以利用Drupal的基礎架構和現有的E-learning相關模塊,快速構建一個Elearning平臺。
總體而言,基于Drupal的網絡教學平臺具有以下優勢和特點:
Drupal的基礎組件包含了構成CMS的所有核心功能,如用戶管理、角色權限、內容節點(node)發布等等,這些核心組件同樣是構成E-learning平臺的基礎。
Drupal的擴展模塊(module)種類繁多,包括博客、電子商務、即時通訊、視頻媒體、E-learning等等,用戶可以根據自己的應用需求選擇其中的模塊進行自由組合和定制,從而獲得一套滿足自身需求的CMS。[7]
Drupal是用GNUGPL 協議發布的自由軟件,同其它開源的E-learning平臺一樣,用戶可以獲得其完整的源代碼并進行二次開發。[8]
學校在應用成套的E-learning平臺過程中,往往會遇到以下兩個問題:
(1)功能需求問題
系統中的功能不能滿足需求,需要在平臺框架內開發新的功能模塊。這種情況只要了解開源平臺的結構和模塊實現,并擁有開發能力,就可以在原系統上進行二次開發。
(2)教學流程問題
現有E-learning平臺的應用流程或整體架構與學校實際情況和需求差距較大,需要對系統主體結構進行大的調整和修改。 由于E-learning系統不同于網站、博客、資源平臺等通用性較強的CMS系統,而是更接近于MIS(managementinformationsystem),與實際應用需求高度相關,因此,使用DrupalAPI進行E-learning的應用開發,可以讓學校對于開源平臺的二次開發不再局限于修改和打補丁,而是能夠根據自身需求設計并實現完整的功能流程。
基于Drupal進行E-learning開發的高效性體現在三個方面:
(1)DrupalAPI
Drupal是一套面向對象(OO)的WebAPI,Drupal本身的核心組件和模塊都是使用DrupalAPI開發而來。DrupalAPI的意義在于:
1)函數封裝
DrupalAPI封裝了PHP語言對數據庫、文件、圖片等數據的底層操作,提高了開發效率,并且避免了開發者自己實現底層操作可能造成的安全漏洞。
2)內部數據
DrupalAPI能夠快速調用Drupal系統內部全局變量和用戶數據,與手工進行SQL查詢相比,大幅度提高了開發效率。
3)權限掛鉤
通過DrupalAPI的權限掛鉤(hook)將模塊開發限制在Drupal的用戶權限框架內,開發者不用自己實現權限控制,從而提高功能模塊的安全性。
4)界面主題接口
提供了完整的界面主題(theme)接口,將模塊業務與界面分離,使開發者可以快速開發出與系統界面風格完全一致的模塊。
(2)模塊調用
Drupal可以在模塊中靈活調用其它模塊已經實現的功能。模塊的相互調用最大限度地避免了重復開發,提高了開發效率。
(3)模塊開源
Drupal的模塊也是開源的,可以參照與所需功能基礎結構相近的模塊進行二次開發,也可以直接對模塊進行修改。
通過Drupal的站點(Sites)功能,教師可以靈活地進行模板和主題定制,將自己的網絡課程整體對外展示,適用于精品課程網站、開放課程、教學成果評比等。

圖1 基于Drupal的E-learning系統結構
Drupal需要PHP運行環境和MySQL數據庫,可以使用Apache、nginx等httpd服務,因此可以在Windows操作系統中運行,但首選的運行環境應該是原生的LAMP(Linux+Apache+MySQL+PHP)環境。在后臺數據處理中可以使用Linux中的Perl語言及其DBI(Database Interface)數據庫接口模塊編寫腳本,直接操作數據庫中的數據,從而大幅度提高E-learning平臺的開發和維護管理效率。
Drupal的核心組件包含了構建一套CMS的所必需的基礎元素,直接基于這些核心組件開發E-learning應用模塊,可以避免重復勞動,提高開發效率。
(1)用戶(user)
提供了可定制的用戶個人信息的字段,例如Elearning平臺中必要的學生姓名、性別、學號、學院、專業、年級、培養層次等個人信息字段都可以直接定義,不需要開發者自己實現。
(2)角色(role)
實現角色群組劃分以及不同角色對模塊的訪問權限,例如學生、教師、教研室主任、系統管理員等角色。
(3)內容節點(node)
在Drupal中,核心組件已經包括了內容發布功能,而且用戶發布的所有內容都以節點(node)的形式保存,通過Drupal的大綱(book)模塊,節點可以與其它節點以大綱的形式關聯,成為其它節點的子節點或父節點。
Drupal現有的一些功能模塊可以直接用于組建Elearning系統以及學習社區,模塊的靈活應用和組合可以避免類似功能的重復開發。
(1)評論(comment)
評論模塊可以讓用戶對node中的內容發表評論,從而實現了最基本的交互討論。
(2)搜索(search)
搜索模塊讓用戶搜索現有的所有節點內容,實現對E-learning平臺的資源檢索。
(3)測驗(quiz)
測驗模塊是一個功能完整的在線測試和問答模塊,可以讓教師創建課程練習或考試,試題可以是單選、多選、判斷、問答等多種題型,并且提供學生答題情況和成績的統計報表。
(4)投票(poll)
投票模塊可以讓教師發起一個問卷,收集學生對某一問題的看法。
(5)論壇(forum)
論壇模塊可以讓教師建立課程或主題的論壇,構建網上學習社區。
(6)博客(blog)
博客模塊可以讓教師建立自己的個人博客,學生可以通過評論博客文章與教師及其他學生交互。[9]
(7)站內短信(privatemsg)
短信模塊可以實現師生以及生生間的點對點信息交互。
(8)實時聊天(drupalchat)
實時聊天模塊提供了Drupal系統內的即時信息(IM)交互功能,教師和學生在線時可以進行在線答疑和交流。
(9)文件上傳(upload)
上傳模塊提供了穩定、統一的文件上傳接口,可以嵌入到節點發布的表單內,實現教師的課件或資料上傳以及學生的作業提交。
(10)大綱(book)
大綱模塊可以將E-learning平臺內的所有節點用樹狀的大綱串聯起來,網絡課程內容可以按教科書的章節層層建立,與課程相關的教輔資料、練習、討論等內容也能夠關聯到課程節點中,使網絡課程層次清晰,便于導航和訪問。
(11)所見即所得編輯器(wysiwygimagefield)
所見即所得編輯器讓教師能夠將圖片或Microsoft Word文件等帶有格式的內容粘貼到E-learning系統中,便于在線創建和編輯課程內容。
(12)在線課程(course)
在線課程模塊是專門為教師發布課程內容而設計開發的模塊集合,直接能夠用于網絡課程的發布。
(13)媒體資源(media)
媒體資源模塊是一個基于樹狀目錄的資源庫,教師和學生可以共同分門別類地創建資源目錄并上傳多媒體資源,例如音頻、視頻、課件、參考資料等等。
采用DrupalAPI[10]進行模塊開發比直接用PHP語言的底層函數進行開發效率要高得多,因為DrupalAPI已經封裝了數據庫讀寫、表單提交、查詢搜索、數據表格、數據分頁、權限控制、界面格式化等幾乎所有組成Web應用的要素。
(1)表單(form)API
表單API封裝了text,checkbox,radiobox,textarea等表單元素,可以讓開發者快速構建一個復雜的復合表單。
(2)數據庫(db)API
數據庫(db)API是DrupalAPI中最關鍵的接口之一,它封裝了PHP的數據庫操作函數,當前(Drupal7)的DatabaseConditionAPI進一步封裝了SQL語句,開發者只需指定所要操作的字段和相關數據就能對數據表進行讀寫操作,極大地提高了開發效率。
(3)權限掛鉤(hook_permission)
權限掛鉤可供開發者定義模塊的多種權限,例如訪問、修改、管理等,這些權限又可以賦予不同的用戶角色,從而能夠構建多層次的E-learning系統結構。例如在線考試的試題庫,普通教師擁有試題錄入的權限,教研室主任擁有試題審核的權限等。
(4)全局變量(global)API
提供了快速調用系統內部數據,例如用戶個人信息字段的接口,開發效率遠高于手工編寫查詢數據庫表的代碼。
(5)分頁(pager)
分頁在Web界面開發中是一個繁雜的問題,需要將一個數據表中的所有數據以行列表格顯示,并自動分成若干頁,而且要有頁碼和導航條。Drupal的Pager API可以快速實現這一功能,開發者所要做的只是設定每頁顯示的記錄數而已。
(6)界面主題(theme)API
提供了系統內所有數據的格式化顯示,使模塊的界面完全無縫嵌入到E-learning網站的總體界面風格之中。

表1 E-learning開發常用的Drupal API列表
(1)確定模塊名稱
在modules目錄下創建模塊目錄和文件,例如results_table。模塊名稱既是APIhook的前綴,也是數據庫中相關表的名稱或前綴。
(2)實現hook_help()
主要是模塊的文字描述,使模塊出現在Drupal的模塊管理器中。
(3)實現hook_permission()
定義了模塊的顯示、編輯、管理等權限,之后可以在Drupal的權限管理界面中設置哪些用戶群組(角色)擁有哪些權限。
(4)實現hook_menu()
使模塊出現在Drupal的導航菜單中,也就是指定進入模塊的入口鏈接,以及入口的回調函數(即主界面)。
(5)編寫主界面函數
首先指定所要顯示的數據表的列名和對結果進行排序的列,并構建查詢對象,然后在執行查詢時指定表格每頁顯示的行數。最后將查詢結果保存到行數組中,并顯示結果和分頁。
(6)啟用模塊
在Drupal的模塊管理器中啟用模塊。
可以看出,Drupal API采用了簡潔的面向對象編程(OOP)的架構,僅需很少的代碼就實現了Web應用開發中必需的數據庫查詢、分頁、表格、導航等操作和界面元素,有效提高了開發效率。
使用基于Drupal的E-learning系統,可以讓學校在單純的E-learning應用和復雜的二次開發之間找到一種折中方案。這種模式特別有利于E-learning環境中構建教師應用技術解決教學問題的知識平臺的形成,因為“這種知識將要解決的問題(即信息技術整合于學科教學過程所遇到的問題),都屬于沒有確定的解決方案的‘劣性問題’(Wicked Problem)——它們的解決方案只能依賴于每位教師的認知靈活性且在三種知識的結合與交叉中去尋找”。[11]因此,基于Drupal的E-learning平臺的開發和應用前景十分廣闊。
[1]張漢玉,穆肅,任友群.學習管理系統的社會性交互功能比較——基于對Blackboard、Moodle、Sakai的調查與使用體驗[J].現代遠程教育研究,2013(2):38-44.
[2]翟菁.SAKAI與MOODLE的比較研究[J].軟件導刊,2008(9):33-34.
[3]葉海松.Moodle的二次開發與設計[J].電化教育研究,2007(4):50-55.
[4]宋述強,鐘曉流,李海霞,焦麗珍,李婷,白薇琳.教育信息化的實踐趨勢、理論動態與技術前沿——兼論《現代教育技術》雜志2013年選題策劃[J].現代教育技術,2013(1):5-8.
[5]About Drupal[EB/OL].https://drupal.org/about.
[6]盛安元,黃存東,張前進.基于開源軟件D rupal工程實踐[J].武漢工業學院學報,2012(2):65-67.
[7]孫方.基于D rupal電子學檔平臺設計與實現[J].現代教育技術,2012(1):98-102.
[8]GNU GeneralPublic License[EB/OL].http://www.gnu.org/licenses/gpl.htm l.
[9]郭玲.基于Drupal構建精品課程網站的實踐與探討[J].硅谷,2011(16):139.
[10]API reference[EB/OL].https://api.drupal.org/api/drupal.
[11]何克抗.TPACK——美國“信息技術與課程整合”途徑與方法研究的新發展(下)[J].電化教育研究,2012(6):47-56.