基于Drupal的E-learning平台构建与开发
何鸣皋++尤伟光
摘 要:Drupal是一个用PHP语言开发的、在互联网上被众多网站所采用的CMS(Content Management System),而且Drupal除包含CMS的基本功能外,还拥有众多可定制的功能模块和一套完整的API,非常适合用于E-learning平台的构建和二次开发。对于学校而言,基于Drupal构建E-learning平台有许多优势,学校可以根据自身需求选择一套适合E-learning应用的Drupal模块组合,还可以结合实际需求使用Drupal API高效率地定制开发E-learning功能模块。
关键词:E-learning;网络教学平台;开发;Drupal
中图分类号:TP311 文献标志码:A 文章编号:1673-8454(2014)07-0063-05
一、E-learning的平台建设和开发现状
目前学校部署E-learning平台一般有以下几种常见模式,这几种模式均有各自的优势,但也存在各自的问题。
1.购买商业版的网络教学平台
流行的商业E-learning平台有Blackboard[1]等。购买商业版的网络教学平台,可以让学校快速获取和使用网络教学平台,缩短学校构建E-learning平台和投入应用的周期,并享受软件供应商的相关服务。
但是随着教学应用的不断深入,如果需要对现有功能进行调整和改进,就存在无法对商业软件直接进行修改的问题,即使软件供应商能够提供修改服务,其响应时间往往较长,而且商业软件高昂的采购费用和升级维护费用也是学校沉重的财务负担。
2.采用开源的网络教学平台
目前流行的开源E-learning平台有Moodle和Sakai[2]等,采用成熟的开源网络教学平台,虽然部署的技术门槛比采购商业软件要高,但为学校节省了大量的经费开支,还能够与开源社区和其它采用该平台的学校共享资源和经验。
但是,学校无论引进哪一个网络教学平台,实质都是引入了该平台已经定型的教学设计和应用流程,很可能与学校自身的实际情况和应用需求存在偏差,导致在进行应用培训和投入实际教学的过程中难以被教师和学生接受,而且还可能会增加无谓的培训和系统管理工作量,最终反而降低了教学效率和管理效率,甚至造成学校的网络教学应用半途而废。
3.自主开发网络教学平台
自主开发E-learning平台,可以让学校完全根据自身情况设计和开发满足自身需求的网络教学系统,然而由于E-learning系统的复杂性,从零开始开发一套E-learning平台会耗费大量的人力和时间,在技术人员人力十分有限的学校难以实施。
4.外包开发网络教学平台
学校根据自身需求设计E-learning功能,交由专业的软件开发公司进行平台开发,从而实现按需定制开发,比直接购买成套的E-learning平台更加切合学校的实际需求,并且学校也无需投入开发人力。
但是外包定制开发需要学校与软件开发公司长期合作,也需要学校长期投入大量的资金。另外学校与外包公司开发人员的沟通成本也不可忽视,缺乏有效的沟通会导致外包公司开发的产品不能完全满足学校的需要,而且外包公司的响应速度也会决定E-learning在应用过程中出现的问题是否得到及时的处理。
5.基于开源平台二次开发
由于学校的开发人力有限,因此基于Moodle和Sakai等开源E-learning平台进行二次开发是较为可行的方案,可以让学校充分利用开源E-learning平台的现成功能,大幅度缩短E-learning平台部署和投入应用的周期,还可以让有开发能力的学校根据自身需求对开源E-learning平台进行修改和二次开发。然而由于开源E-learning平台的基础架构已经定型,二次开发大多只局限于功能微调或是开发附加的功能模块,很难改动平台的主体设计和现有流程结构。[3]此外,开源E-learning平台是在不断更新和升级的,在某一版本上深入进行修改和长时间使用,将使二次开发的版本成为该平台的一个分支(branch),从而难以再获取官方版本的更新和升级。
综上所述,学校要进行网络教学深入应用的最佳方案是根据学校自身情况分析教学和管理需求,设计符合实际情况和满足实际需求的网络教学流程和功能,定制开发E-learning平台。特别是“面对信息超载和知识碎片化两大挑战,新建构主义认为知识体系是由感性认识、理性认识和联想三者构成的一个类似榕树的结构。教育是一个知识‘嫁接过程,学会‘自嫁接是网络时代学习者的首要任务”。[4]然而对于学校而言,要实现“按需定制开发E-learning平台”这一目的,需要综合考虑资金、开发人力、开发周期、功能需求以及开发的可持续性等诸多因素,条件不同的学校需要根据自身情况对这些因素进行平衡和决策。因此,很有必要找到一种普遍适合于有一定开发能力的学校的折中开发方案,使学校既能根据自身需求定制开发E-learning平台,又能最大限度地减少资金和开发人员投入,从而实现高效率和可控的自主开发。
二、Drupal适宜E-learning开发的原因分析
Drupal[5]是一个用PHP语言开发的,在互联网上被众多网站所采用的CMS(Content Management System)[6]。开源的Drupal平台包含功能强大的CMS核心组件,并且已有一些现成的E-learning相关模块,更重要的是Drupal还提供了一整套用于开发Web应用的API(Application Programming Interface),因此基于Drupal进行网络教学平台构建和开发,适合有一定自主开发能力,并希望能够按本校实际需求定制开发的学校。作为没有条件或不想过多投入开发人力的学校,也可以利用Drupal的基础架构和现有的E-learning相关模块,快速构建一个E-learning平台。
总体而言,基于Drupal的网络教学平台具有以下优势和特点:
1.成熟稳定的CMS架构
Drupal的基础组件包含了构成CMS的所有核心功能,如用户管理、角色权限、内容节点(node)发布等等,这些核心组件同样是构成E-learning平台的基础。
2.丰富的功能模块
Drupal的扩展模块(module)种类繁多,包括博客、电子商务、即时通讯、视频媒体、E-learning等等,用户可以根据自己的应用需求选择其中的模块进行自由组合和定制,从而获得一套满足自身需求的CMS。[7]
3.开源平台
Drupal是用GNU GPL协议发布的自由软件,同其它开源的E-learning平台一样,用户可以获得其完整的源代码并进行二次开发。[8]
4.按需定制开发
学校在应用成套的E-learning平台过程中,往往会遇到以下两个问题:
(1)功能需求问题
系统中的功能不能满足需求,需要在平台框架内开发新的功能模块。这种情况只要了解开源平台的结构和模块实现,并拥有开发能力,就可以在原系统上进行二次开发。
(2)教学流程问题
现有E-learning平台的应用流程或整体架构与学校实际情况和需求差距较大,需要对系统主体结构进行大的调整和修改。 由于E-learning系统不同于网站、博客、资源平台等通用性较强的CMS系统,而是更接近于MIS(management information system),与实际应用需求高度相关,因此,使用Drupal API进行E-learning的应用开发,可以让学校对于开源平台的二次开发不再局限于修改和打补丁,而是能够根据自身需求设计并实现完整的功能流程。
5.快速开发
基于Drupal进行E-learning开发的高效性体现在三个方面:
(1)Drupal API
Drupal是一套面向对象(OO)的WebAPI,Drupal本身的核心组件和模块都是使用Drupal API开发而来。Drupal API的意义在于:
1)函数封装
Drupal API封装了PHP语言对数据库、文件、图片等数据的底层操作,提高了开发效率,并且避免了开发者自己实现底层操作可能造成的安全漏洞。
2)内部数据
Drupal API能够快速调用Drupal系统内部全局变量和用户数据,与手工进行SQL查询相比,大幅度提高了开发效率。
3)权限挂钩
通过Drupal API的权限挂钩(hook)将模块开发限制在Drupal的用户权限框架内,开发者不用自己实现权限控制,从而提高功能模块的安全性。
4)界面主题接口
提供了完整的界面主题(theme)接口,将模块业务与界面分离,使开发者可以快速开发出与系统界面风格完全一致的模块。
(2)模块调用
Drupal可以在模块中灵活调用其它模块已经实现的功能。模块的相互调用最大限度地避免了重复开发,提高了开发效率。
(3)模块开源
Drupal的模块也是开源的,可以参照与所需功能基础结构相近的模块进行二次开发,也可以直接对模块进行修改。
6.模板和展示
通过Drupal的站点(Sites)功能,教师可以灵活地进行模板和主题定制,将自己的网络课程整体对外展示,适用于精品课程网站、开放课程、教学成果评比等。
三、基于Drupal的E-learning平台的体系结构(见图1)
1.操作系统
Drupal需要PHP运行环境和MySQL数据库,可以使用Apache、nginx等httpd服务,因此可以在Windows操作系统中运行,但首选的运行环境应该是原生的LAMP(Linux+Apache+MySQL+PHP)环境。在后台数据处理中可以使用Linux中的Perl语言及其DBI(Database Interface)数据库接口模块编写脚本,直接操作数据库中的数据,从而大幅度提高E-learning平台的开发和维护管理效率。
2.基础的CMS平台
Drupal的核心组件包含了构建一套CMS的所必需的基础元素,直接基于这些核心组件开发E-learning应用模块,可以避免重复劳动,提高开发效率。
(1)用户(user)
提供了可定制的用户个人信息的字段,例如E-learning平台中必要的学生姓名、性别、学号、学院、专业、年级、培养层次等个人信息字段都可以直接定义,不需要开发者自己实现。
(2)角色(role)
实现角色群组划分以及不同角色对模块的访问权限,例如学生、教师、教研室主任、系统管理员等角色。
(3)内容节点(node)
在Drupal中,核心组件已经包括了内容发布功能,而且用户发布的所有内容都以节点(node)的形式保存,通过Drupal的大纲(book)模块,节点可以与其它节点以大纲的形式关联,成为其它节点的子节点或父节点。
3.面向E-learning应用的模块组合
Drupal现有的一些功能模块可以直接用于组建E-learning系统以及学习社区,模块的灵活应用和组合可以避免类似功能的重复开发。
(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)所见即所得编辑器(wysiwyg imagefield)
所见即所得编辑器让教师能够将图片或Microsoft Word文件等带有格式的内容粘贴到E-learning系统中,便于在线创建和编辑课程内容。
(12)在线课程(course)
在线课程模块是专门为教师发布课程内容而设计开发的模块集合,直接能够用于网络课程的发布。
(13)媒体资源(media)
媒体资源模块是一个基于树状目录的资源库,教师和学生可以共同分门别类地创建资源目录并上传多媒体资源,例如音频、视频、课件、参考资料等等。
四、使用Drupal API进行E-learning应用开发
采用Drupal API[10]进行模块开发比直接用PHP语言的底层函数进行开发效率要高得多,因为Drupal API已经封装了数据库读写、表单提交、查询搜索、数据表格、数据分页、权限控制、界面格式化等几乎所有组成Web应用的要素。
1.E-learning开发中常用的Drupal API(见表1)
(1)表单(form)API
表单API封装了text,checkbox,radiobox,textarea等表单元素,可以让开发者快速构建一个复杂的复合表单。
(2)数据库(db)API
数据库(db)API是Drupal API中最关键的接口之一,它封装了PHP的数据库操作函数,当前(Drupal 7)的DatabaseCondition API进一步封装了SQL语句,开发者只需指定所要操作的字段和相关数据就能对数据表进行读写操作,极大地提高了开发效率。
(3)权限挂钩(hook_permission)
权限挂钩可供开发者定义模块的多种权限,例如访问、修改、管理等,这些权限又可以赋予不同的用户角色,从而能够构建多层次的E-learning系统结构。例如在线考试的试题库,普通教师拥有试题录入的权限,教研室主任拥有试题审核的权限等。
(4)全局变量(global)API
提供了快速调用系统内部数据,例如用户个人信息字段的接口,开发效率远高于手工编写查询数据库表的代码。
(5)分页(pager)
分页在Web界面开发中是一个繁杂的问题,需要将一个数据表中的所有数据以行列表格显示,并自动分成若干页,而且要有页码和导航条。Drupal的Pager API可以快速实现这一功能,开发者所要做的只是设定每页显示的记录数而已。
(6)界面主题(theme)API
提供了系统内所有数据的格式化显示,使模块的界面完全无缝嵌入到E-learning网站的总体界面风格之中。
2.通用的Drupal模块开发流程
(1)确定模块名称
在modules目录下创建模块目录和文件,例如results_table。模块名称既是API hook的前缀,也是数据库中相关表的名称或前缀。
(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]盛安元,黄存东,张前进.基于开源软件Drupal工程实践[J].武汉工业学院学报, 2012(2):65-67.
[7]孙方.基于Drupal电子学档平台设计与实现[J].现代教育技术,2012(1):98-102.
[8]GNU General Public License [EB/OL]. http://www.gnu.org/licenses/gpl.html.
[9]郭玲.基于Drupal构建精品课程网站的实践与探讨[J].硅谷,2011(16):139.
[10]API reference[EB/OL].https://api.drupal.org/api/drupal.
[11]何克抗.TPACK——美国“信息技术与课程整合”途径与方法研究的新发展(下)[J].电化教育研究,2012(6):47-56.
(编辑:王天鹏)
(6)界面主题(theme)API
提供了系统内所有数据的格式化显示,使模块的界面完全无缝嵌入到E-learning网站的总体界面风格之中。
2.通用的Drupal模块开发流程
(1)确定模块名称
在modules目录下创建模块目录和文件,例如results_table。模块名称既是API hook的前缀,也是数据库中相关表的名称或前缀。
(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]盛安元,黄存东,张前进.基于开源软件Drupal工程实践[J].武汉工业学院学报, 2012(2):65-67.
[7]孙方.基于Drupal电子学档平台设计与实现[J].现代教育技术,2012(1):98-102.
[8]GNU General Public License [EB/OL]. http://www.gnu.org/licenses/gpl.html.
[9]郭玲.基于Drupal构建精品课程网站的实践与探讨[J].硅谷,2011(16):139.
[10]API reference[EB/OL].https://api.drupal.org/api/drupal.
[11]何克抗.TPACK——美国“信息技术与课程整合”途径与方法研究的新发展(下)[J].电化教育研究,2012(6):47-56.
(编辑:王天鹏)
(6)界面主题(theme)API
提供了系统内所有数据的格式化显示,使模块的界面完全无缝嵌入到E-learning网站的总体界面风格之中。
2.通用的Drupal模块开发流程
(1)确定模块名称
在modules目录下创建模块目录和文件,例如results_table。模块名称既是API hook的前缀,也是数据库中相关表的名称或前缀。
(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]盛安元,黄存东,张前进.基于开源软件Drupal工程实践[J].武汉工业学院学报, 2012(2):65-67.
[7]孙方.基于Drupal电子学档平台设计与实现[J].现代教育技术,2012(1):98-102.
[8]GNU General Public License [EB/OL]. http://www.gnu.org/licenses/gpl.html.
[9]郭玲.基于Drupal构建精品课程网站的实践与探讨[J].硅谷,2011(16):139.
[10]API reference[EB/OL].https://api.drupal.org/api/drupal.
[11]何克抗.TPACK——美国“信息技术与课程整合”途径与方法研究的新发展(下)[J].电化教育研究,2012(6):47-56.
(编辑:王天鹏)
摘 要:Drupal是一个用PHP语言开发的、在互联网上被众多网站所采用的CMS(Content Management System),而且Drupal除包含CMS的基本功能外,还拥有众多可定制的功能模块和一套完整的API,非常适合用于E-learning平台的构建和二次开发。对于学校而言,基于Drupal构建E-learning平台有许多优势,学校可以根据自身需求选择一套适合E-learning应用的Drupal模块组合,还可以结合实际需求使用Drupal API高效率地定制开发E-learning功能模块。
关键词:E-learning;网络教学平台;开发;Drupal
中图分类号:TP311 文献标志码:A 文章编号:1673-8454(2014)07-0063-05
一、E-learning的平台建设和开发现状
目前学校部署E-learning平台一般有以下几种常见模式,这几种模式均有各自的优势,但也存在各自的问题。
1.购买商业版的网络教学平台
流行的商业E-learning平台有Blackboard[1]等。购买商业版的网络教学平台,可以让学校快速获取和使用网络教学平台,缩短学校构建E-learning平台和投入应用的周期,并享受软件供应商的相关服务。
但是随着教学应用的不断深入,如果需要对现有功能进行调整和改进,就存在无法对商业软件直接进行修改的问题,即使软件供应商能够提供修改服务,其响应时间往往较长,而且商业软件高昂的采购费用和升级维护费用也是学校沉重的财务负担。
2.采用开源的网络教学平台
目前流行的开源E-learning平台有Moodle和Sakai[2]等,采用成熟的开源网络教学平台,虽然部署的技术门槛比采购商业软件要高,但为学校节省了大量的经费开支,还能够与开源社区和其它采用该平台的学校共享资源和经验。
但是,学校无论引进哪一个网络教学平台,实质都是引入了该平台已经定型的教学设计和应用流程,很可能与学校自身的实际情况和应用需求存在偏差,导致在进行应用培训和投入实际教学的过程中难以被教师和学生接受,而且还可能会增加无谓的培训和系统管理工作量,最终反而降低了教学效率和管理效率,甚至造成学校的网络教学应用半途而废。
3.自主开发网络教学平台
自主开发E-learning平台,可以让学校完全根据自身情况设计和开发满足自身需求的网络教学系统,然而由于E-learning系统的复杂性,从零开始开发一套E-learning平台会耗费大量的人力和时间,在技术人员人力十分有限的学校难以实施。
4.外包开发网络教学平台
学校根据自身需求设计E-learning功能,交由专业的软件开发公司进行平台开发,从而实现按需定制开发,比直接购买成套的E-learning平台更加切合学校的实际需求,并且学校也无需投入开发人力。
但是外包定制开发需要学校与软件开发公司长期合作,也需要学校长期投入大量的资金。另外学校与外包公司开发人员的沟通成本也不可忽视,缺乏有效的沟通会导致外包公司开发的产品不能完全满足学校的需要,而且外包公司的响应速度也会决定E-learning在应用过程中出现的问题是否得到及时的处理。
5.基于开源平台二次开发
由于学校的开发人力有限,因此基于Moodle和Sakai等开源E-learning平台进行二次开发是较为可行的方案,可以让学校充分利用开源E-learning平台的现成功能,大幅度缩短E-learning平台部署和投入应用的周期,还可以让有开发能力的学校根据自身需求对开源E-learning平台进行修改和二次开发。然而由于开源E-learning平台的基础架构已经定型,二次开发大多只局限于功能微调或是开发附加的功能模块,很难改动平台的主体设计和现有流程结构。[3]此外,开源E-learning平台是在不断更新和升级的,在某一版本上深入进行修改和长时间使用,将使二次开发的版本成为该平台的一个分支(branch),从而难以再获取官方版本的更新和升级。
综上所述,学校要进行网络教学深入应用的最佳方案是根据学校自身情况分析教学和管理需求,设计符合实际情况和满足实际需求的网络教学流程和功能,定制开发E-learning平台。特别是“面对信息超载和知识碎片化两大挑战,新建构主义认为知识体系是由感性认识、理性认识和联想三者构成的一个类似榕树的结构。教育是一个知识‘嫁接过程,学会‘自嫁接是网络时代学习者的首要任务”。[4]然而对于学校而言,要实现“按需定制开发E-learning平台”这一目的,需要综合考虑资金、开发人力、开发周期、功能需求以及开发的可持续性等诸多因素,条件不同的学校需要根据自身情况对这些因素进行平衡和决策。因此,很有必要找到一种普遍适合于有一定开发能力的学校的折中开发方案,使学校既能根据自身需求定制开发E-learning平台,又能最大限度地减少资金和开发人员投入,从而实现高效率和可控的自主开发。
二、Drupal适宜E-learning开发的原因分析
Drupal[5]是一个用PHP语言开发的,在互联网上被众多网站所采用的CMS(Content Management System)[6]。开源的Drupal平台包含功能强大的CMS核心组件,并且已有一些现成的E-learning相关模块,更重要的是Drupal还提供了一整套用于开发Web应用的API(Application Programming Interface),因此基于Drupal进行网络教学平台构建和开发,适合有一定自主开发能力,并希望能够按本校实际需求定制开发的学校。作为没有条件或不想过多投入开发人力的学校,也可以利用Drupal的基础架构和现有的E-learning相关模块,快速构建一个E-learning平台。
总体而言,基于Drupal的网络教学平台具有以下优势和特点:
1.成熟稳定的CMS架构
Drupal的基础组件包含了构成CMS的所有核心功能,如用户管理、角色权限、内容节点(node)发布等等,这些核心组件同样是构成E-learning平台的基础。
2.丰富的功能模块
Drupal的扩展模块(module)种类繁多,包括博客、电子商务、即时通讯、视频媒体、E-learning等等,用户可以根据自己的应用需求选择其中的模块进行自由组合和定制,从而获得一套满足自身需求的CMS。[7]
3.开源平台
Drupal是用GNU GPL协议发布的自由软件,同其它开源的E-learning平台一样,用户可以获得其完整的源代码并进行二次开发。[8]
4.按需定制开发
学校在应用成套的E-learning平台过程中,往往会遇到以下两个问题:
(1)功能需求问题
系统中的功能不能满足需求,需要在平台框架内开发新的功能模块。这种情况只要了解开源平台的结构和模块实现,并拥有开发能力,就可以在原系统上进行二次开发。
(2)教学流程问题
现有E-learning平台的应用流程或整体架构与学校实际情况和需求差距较大,需要对系统主体结构进行大的调整和修改。 由于E-learning系统不同于网站、博客、资源平台等通用性较强的CMS系统,而是更接近于MIS(management information system),与实际应用需求高度相关,因此,使用Drupal API进行E-learning的应用开发,可以让学校对于开源平台的二次开发不再局限于修改和打补丁,而是能够根据自身需求设计并实现完整的功能流程。
5.快速开发
基于Drupal进行E-learning开发的高效性体现在三个方面:
(1)Drupal API
Drupal是一套面向对象(OO)的WebAPI,Drupal本身的核心组件和模块都是使用Drupal API开发而来。Drupal API的意义在于:
1)函数封装
Drupal API封装了PHP语言对数据库、文件、图片等数据的底层操作,提高了开发效率,并且避免了开发者自己实现底层操作可能造成的安全漏洞。
2)内部数据
Drupal API能够快速调用Drupal系统内部全局变量和用户数据,与手工进行SQL查询相比,大幅度提高了开发效率。
3)权限挂钩
通过Drupal API的权限挂钩(hook)将模块开发限制在Drupal的用户权限框架内,开发者不用自己实现权限控制,从而提高功能模块的安全性。
4)界面主题接口
提供了完整的界面主题(theme)接口,将模块业务与界面分离,使开发者可以快速开发出与系统界面风格完全一致的模块。
(2)模块调用
Drupal可以在模块中灵活调用其它模块已经实现的功能。模块的相互调用最大限度地避免了重复开发,提高了开发效率。
(3)模块开源
Drupal的模块也是开源的,可以参照与所需功能基础结构相近的模块进行二次开发,也可以直接对模块进行修改。
6.模板和展示
通过Drupal的站点(Sites)功能,教师可以灵活地进行模板和主题定制,将自己的网络课程整体对外展示,适用于精品课程网站、开放课程、教学成果评比等。
三、基于Drupal的E-learning平台的体系结构(见图1)
1.操作系统
Drupal需要PHP运行环境和MySQL数据库,可以使用Apache、nginx等httpd服务,因此可以在Windows操作系统中运行,但首选的运行环境应该是原生的LAMP(Linux+Apache+MySQL+PHP)环境。在后台数据处理中可以使用Linux中的Perl语言及其DBI(Database Interface)数据库接口模块编写脚本,直接操作数据库中的数据,从而大幅度提高E-learning平台的开发和维护管理效率。
2.基础的CMS平台
Drupal的核心组件包含了构建一套CMS的所必需的基础元素,直接基于这些核心组件开发E-learning应用模块,可以避免重复劳动,提高开发效率。
(1)用户(user)
提供了可定制的用户个人信息的字段,例如E-learning平台中必要的学生姓名、性别、学号、学院、专业、年级、培养层次等个人信息字段都可以直接定义,不需要开发者自己实现。
(2)角色(role)
实现角色群组划分以及不同角色对模块的访问权限,例如学生、教师、教研室主任、系统管理员等角色。
(3)内容节点(node)
在Drupal中,核心组件已经包括了内容发布功能,而且用户发布的所有内容都以节点(node)的形式保存,通过Drupal的大纲(book)模块,节点可以与其它节点以大纲的形式关联,成为其它节点的子节点或父节点。
3.面向E-learning应用的模块组合
Drupal现有的一些功能模块可以直接用于组建E-learning系统以及学习社区,模块的灵活应用和组合可以避免类似功能的重复开发。
(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)所见即所得编辑器(wysiwyg imagefield)
所见即所得编辑器让教师能够将图片或Microsoft Word文件等带有格式的内容粘贴到E-learning系统中,便于在线创建和编辑课程内容。
(12)在线课程(course)
在线课程模块是专门为教师发布课程内容而设计开发的模块集合,直接能够用于网络课程的发布。
(13)媒体资源(media)
媒体资源模块是一个基于树状目录的资源库,教师和学生可以共同分门别类地创建资源目录并上传多媒体资源,例如音频、视频、课件、参考资料等等。
四、使用Drupal API进行E-learning应用开发
采用Drupal API[10]进行模块开发比直接用PHP语言的底层函数进行开发效率要高得多,因为Drupal API已经封装了数据库读写、表单提交、查询搜索、数据表格、数据分页、权限控制、界面格式化等几乎所有组成Web应用的要素。
1.E-learning开发中常用的Drupal API(见表1)
(1)表单(form)API
表单API封装了text,checkbox,radiobox,textarea等表单元素,可以让开发者快速构建一个复杂的复合表单。
(2)数据库(db)API
数据库(db)API是Drupal API中最关键的接口之一,它封装了PHP的数据库操作函数,当前(Drupal 7)的DatabaseCondition API进一步封装了SQL语句,开发者只需指定所要操作的字段和相关数据就能对数据表进行读写操作,极大地提高了开发效率。
(3)权限挂钩(hook_permission)
权限挂钩可供开发者定义模块的多种权限,例如访问、修改、管理等,这些权限又可以赋予不同的用户角色,从而能够构建多层次的E-learning系统结构。例如在线考试的试题库,普通教师拥有试题录入的权限,教研室主任拥有试题审核的权限等。
(4)全局变量(global)API
提供了快速调用系统内部数据,例如用户个人信息字段的接口,开发效率远高于手工编写查询数据库表的代码。
(5)分页(pager)
分页在Web界面开发中是一个繁杂的问题,需要将一个数据表中的所有数据以行列表格显示,并自动分成若干页,而且要有页码和导航条。Drupal的Pager API可以快速实现这一功能,开发者所要做的只是设定每页显示的记录数而已。
(6)界面主题(theme)API
提供了系统内所有数据的格式化显示,使模块的界面完全无缝嵌入到E-learning网站的总体界面风格之中。
2.通用的Drupal模块开发流程
(1)确定模块名称
在modules目录下创建模块目录和文件,例如results_table。模块名称既是API hook的前缀,也是数据库中相关表的名称或前缀。
(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]盛安元,黄存东,张前进.基于开源软件Drupal工程实践[J].武汉工业学院学报, 2012(2):65-67.
[7]孙方.基于Drupal电子学档平台设计与实现[J].现代教育技术,2012(1):98-102.
[8]GNU General Public License [EB/OL]. http://www.gnu.org/licenses/gpl.html.
[9]郭玲.基于Drupal构建精品课程网站的实践与探讨[J].硅谷,2011(16):139.
[10]API reference[EB/OL].https://api.drupal.org/api/drupal.
[11]何克抗.TPACK——美国“信息技术与课程整合”途径与方法研究的新发展(下)[J].电化教育研究,2012(6):47-56.
(编辑:王天鹏)
(6)界面主题(theme)API
提供了系统内所有数据的格式化显示,使模块的界面完全无缝嵌入到E-learning网站的总体界面风格之中。
2.通用的Drupal模块开发流程
(1)确定模块名称
在modules目录下创建模块目录和文件,例如results_table。模块名称既是API hook的前缀,也是数据库中相关表的名称或前缀。
(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]盛安元,黄存东,张前进.基于开源软件Drupal工程实践[J].武汉工业学院学报, 2012(2):65-67.
[7]孙方.基于Drupal电子学档平台设计与实现[J].现代教育技术,2012(1):98-102.
[8]GNU General Public License [EB/OL]. http://www.gnu.org/licenses/gpl.html.
[9]郭玲.基于Drupal构建精品课程网站的实践与探讨[J].硅谷,2011(16):139.
[10]API reference[EB/OL].https://api.drupal.org/api/drupal.
[11]何克抗.TPACK——美国“信息技术与课程整合”途径与方法研究的新发展(下)[J].电化教育研究,2012(6):47-56.
(编辑:王天鹏)
(6)界面主题(theme)API
提供了系统内所有数据的格式化显示,使模块的界面完全无缝嵌入到E-learning网站的总体界面风格之中。
2.通用的Drupal模块开发流程
(1)确定模块名称
在modules目录下创建模块目录和文件,例如results_table。模块名称既是API hook的前缀,也是数据库中相关表的名称或前缀。
(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]盛安元,黄存东,张前进.基于开源软件Drupal工程实践[J].武汉工业学院学报, 2012(2):65-67.
[7]孙方.基于Drupal电子学档平台设计与实现[J].现代教育技术,2012(1):98-102.
[8]GNU General Public License [EB/OL]. http://www.gnu.org/licenses/gpl.html.
[9]郭玲.基于Drupal构建精品课程网站的实践与探讨[J].硅谷,2011(16):139.
[10]API reference[EB/OL].https://api.drupal.org/api/drupal.
[11]何克抗.TPACK——美国“信息技术与课程整合”途径与方法研究的新发展(下)[J].电化教育研究,2012(6):47-56.
(编辑:王天鹏)