moodle架构分析数据连接层
Moodle课程管理系统体系结构评述

福建电脑2011年第7期Moodle课程管理系统体系结构评述倪玉兴(江南大学田家炳教育科学学院江苏无锡214122)【摘要】:自Moodle引进国内以来为我国课程信息化进程做出了贡献,对Moodle系统体系结构认识不到位会影响其应用成效。
从系统基本架构、体系结构、内部逻辑结构和数据存储体系几个方面评述Moodle系统,以加深对Moodle系统的理解和掌控。
【关键词】:Moodle;课程管理系统;体系结构;Web应用程序一、Moodle发展概况Moodle软件包自2002年发布1.0版以来,以其全面的功能和优异的性能赢得用户的青睐,逐渐成为最流行的课程管理系统平台。
我国从2005年开始进行Moodle的本土化工作并推广运用,在课程信息化进程中取得了较好成效。
截至2011年6月,中国大陆在Moodle官方网站注册的Moodle站点已超过300个[1]。
几年前黎加厚教授提出推广Moodle应用的目标:“今天每一位教师用PPT设计和展示自己的讲稿,明天每一位教师用Moodle设计和管理自己的课程。
”[2]这个目标虽然过于理想化,但给信息化课程设计和应用指明了发展方向。
当前虽然有很多Moodle网站正在建设和运营,但也有越来越多的Moodle网站不再可用或束之高阁。
造成这种局面既有教育体制、教育信息化环境等宏观方面因素,也有课程、教师、学生等微观方面因素。
从技术角度看,用户对Moodle系统体系结构的认识不到位和建设管理者对系统部署运行规划的不合理等也是造成Moodle应用不能到达理想状态的重要因素。
二、Moodle系统基本架构通常情况下采用B/S结构部署Moodle系统,使之作为独立的Web应用程序运行在Web服务器上,让用户通过浏览器访问Moodle服务,如有需要也可在单机环境下运行但只能提供有限的服务能力。
Moodle能提供高效的Web1.0内容服务,也能实现丰富的Web2. 0应用服务。
Moodle是Modular Object-Oriented Dy-namic Learning Environment的缩写,即面向对象的模块化动态学习环境,它贴切地描述了Moodle系统的基本架构。
Moodle系统详细设计说明书_V2.3.1_20121206

系统详细设计说明书版本历史目录1. 引言 (4)1.1. 背景 (4)1.2. 参考资料 (4)1.3. 术语和缩写语 (4)2. 系统的组织结构 (5)2.1. 程序(模块)划分 (5)2.2. 程序(模块)层次结构关系 (17)3. 全局数据结构说明 (18)3.1. 数据结构 (18)3.2. 执行概念 (18)4. 模块设计说明 (19)4.1. 网站管理模块 (19)4.2. 用户管理模块 (29)4.3. 课程管理模块 (30)4.4. 成绩模块 (33)4.5. 活动模块 (36)4.6. 资源模块 (47)1.引言北京开放大学学习平台是北京开放大学和布谷鸟网络教学技术有限公司(香港)合作开展“北京开放大学学习平台”的项目成果。
1.1. 背景北京开放大学学习平台是一个线上学习系统,是学校、教师和学生的沟通渠道,允许教师和学生透过网络工具来进行教学及学习,让教师和学生的教学和学习更有规范和更具效率,优化整个教学过程。
《系统详细设计说明书》由布谷鸟网络教学技术有限公司(香港)开发和编写,北京开放大学具有永久使用权和自行修改后的使用权。
1.2. 参考资料1、《需求说明书》2、《Moodle数据库设计文档》3、《Moodle系统概要设计说明书》4、《北京开放大学平台设计概念总览》1.3. 术语和缩写语1、MOODLE:(Modular Object-Oriented Dynamic Learning Environment):模块化面向对象的动态学习环境2、IMS(Instructional Management Systems):是美国高等教育协会的非盈利机构EDUCOM(现为EDUCAUSE)下的一个项目组,现已发展为全球学习联合公司。
3、SCORM(The Sharable Content Object Reference Model):即可共享内容对象参考模型。
4、AICC(The Aviation Industry CBT Committee):即航空工业计算机辅助培训委员会,它是一个国际性的培训技术专业性组织。
Moodle平台结构图

管理员
网站管理
Moodle平台功能
教师
课程管理
学生
用户管理
网设首管 站置页理 基课外服 本程观务 信分布器 息类局
用成管添
户绩理加
权设插新
限置件的
分
和板
配
开块
发
管
管
添
管
添
理
理
加
理
加
编
已
活
在
新
辑
有Leabharlann 动线的已
活
或
用
课
有
动
资
户
程
课
和
源
程
资
源
管管查参进
理理看与行
和个和教互
查人管学动
看信理活评
学息私动价
习
人
计
登录网站时间长短 访问课程的次数
参与教学模块的数量 总和运用模块功能
学生 完成作业
提交作业
远程教师
评价
学 生
评 价
评价作业
评学 价生
评价
小组成员
Moodle互动评价 修改完善
得到结果
构成要素 成绩汇总算法 仅汇总总非空成绩
成绩类别 成绩项 权重
浏览
成绩册
设定
等级 分数段
评分人报表 过往成绩 能力报表 总体报表
活动
回顾设置、反馈、试题行为设置、成绩、访问 限制测验时间安排、试题布局、外观
有效性、 访问限制
流程 控制
外观、 成绩
外观、词条、成绩、评分、通用模块、标签
有效性
提交后
问题和提交
成绩设置、作业设置、范例作业、有效性
聊天记录
开源程序MOODLE的程序目录结构说明

开源程序MOODLE的程序目录结构说明1、MOODLE程序的程序目录图2、程序目录说明下面依次对各文件夹或文件进行简要介绍:✓Admin/:该目录下存放的文件主要用户MOODLE站点管理的代码。
✓Auth/:该目录下存放用户MOODLE用户认证的组件模块;✓Backup/:该目录下包含创建一个备份或者恢复时所用到的管理模块;✓Blocks/:该目录下存放用户管理moodle页面上的所有板块的模块;✓Blog/:该目录下存放用户管理moodle中blog管理喝编辑内容模块;✓Calendar/:用于管理喝显示日历的代码;✓Course/:显示和管理课程的模块;✓Enroll/:该目录下存放着各种选课插件,默认是manual方式;✓Error/:包含显示MOODLE站点中错误的一个文件;✓Files/:用户管理喝显示用户上次文件的模块;✓Filter/:用于管理moodel站点的各类过滤方法的模块,如数学符号等。
✓Grade/:用户管理和显示学生成绩的模块。
✓Install/:包含moodle默认安装时使用各种语言包和安装说明界面。
✓Iplookup/:用户显示用户IP地址信息的模块;✓Lang/:包含moodle默认安装时使用的炎炎包,默认英文。
✓Lib/:该目录下存放了moodle所有的核心代码库。
✓Login/:管理用户登录和登出的模块。
✓Message/:管理喝显示用户短信息的模块。
✓Mod/:该目录下包含了moodle中可以使用的各种资源和活动模块。
✓---assignment/:管理喝显示活动中的作业模块。
✓---chat/:管理和显示活动中的投票模块。
✓---choice/:管理和显示活动中投票模块。
✓---data/:管理和显示活动中数据库模块。
✓---forum/:管理和显示活动中讨论区模块。
✓---glossary/:管理和显示活动中词汇表模块。
✓---hotpot/:管理和显示活动中hotpot模块。
moodle数据库结构

moodle数据库结构Moodle数据字典编写:小东前言The Moodle database has around 200 tables, and can be quite daunting at first sight. Moodle在线教学系统,有大约200多张表,第一次看到这样的场面,心里肯定会打鼓的。
DOCS on :/en/Development:Datab ase_schema_introductio n【注释】点击链接可以查看表结构【注释】如果没有特别说明,中文对应的解释是从官网对应位置翻译过来,仅供参考。
Moodle系统基本结构图表结构详细分析Configuration //参数配置相关tfmdl_configtfmdl_config_pluginsUsers and their profiles // 用户相关?tfmdl_usertfmdl_user_info_categorytfmdl_user_info_datatfmdl_user_info_fieldtfmdl_user_lastaccess由于性能上的考虑,将tfmdl_user_lastaccess这张表与user表分开设计,单独成为一张表。
tfmdl_user_preferencestfmdl_user_private_keyThe roles and capabilites system //角色和权限系统tfmdl_roletfmdl_role_allow_assigntfmdl_role_allow_overridetfmdl_role_assignmentstfmdl_role_capabilitiestfmdl_role_namestfmdl_role_sortorderroledefines a role, its name, etc. Other parts of the role definition are stored in therole_capabilities and role_context_levels tables.定义一种角色(含角色名称等等),角色定义的其它详细部分,存放在role_capabilites 和 role_context_levels两张表中。
Moodle的结构与功能研究

Moodle的结构与功能研究一、Moodle的含义:Moodle有两层含义:一层含义是Modular Object-Oriented Dynamic Learning Environment,即模块化面向对象的动态学习环境,一个用来构建网络学习环境的软件包;另一层含义是一个动词,表示想起什么就做什么,自由地发挥创造力和想象力。
二、Moodle的结构:正如Moodle的名字一样,它的系统结构是模块化的。
这种结构设计使得系统的灵活性格外突出,修改和扩充十分方便,最能体现Moodle这一特点的是课程开发过程中各种活动模块的使用。
Moodle为教师提供了基于社会建构主义教学设计理念的十几种课程活动,包括讨论区、学习日志、聊天室、学习资源、单元小结和在线调查等。
教师通过简单的设置就可以给课程加入这些活动模块,管理员可以通过管理界面选择安装各种活动模块,而开发者可以依据定义的接口开发新的活动模块。
正是这种模块化的结构设计使得Moodle给使用者、管理员和开发者提供了极大的方便和选择空间。
目前,越来越多的模块被添加进去。
三、Moodle的系统架构和主要功能:(一)、Moodle平台采用模块化的结构设计和面向对象的开发方法,从系统架构上说,符合当前流行的三层B/S结构,基本实现了数据访问、业务逻辑和用户界面的分离,具有较好的灵活性和可扩展性。
其系统结构如图1所示。
(1) Moodle的课程活动模块Moodle平台提供了各种各样的课程活动模块,教师可以根据教学需要选择合适的模块,为教学活动创建互动式环境。
以下是Moodle提供的标准课程活动模块。
1.作业(Assignment)模块通过作业模块,教师可以给学生布置一项任务,学生可以将自己的工作成果(任何格式的文件)上传到服务器上。
典型的作业包括论文、项目和报告等。
这一模块使用起来具有很大的灵活性。
2.选项(Choice)模块通过选项模块,教师可以提出一个问题并给出多种不同答案供学生选择。
MOODLE功能简介
MOODLE 功能简介2009年 10⽉ 4⽇ 21:39 MOODLE 功能简介⼀、 Moodle 是什么 Moodle 是澳⼤利亚教师Martin Dougiamas 基于建构主义教育理论⽽开发的课程管理系统, 是⼀个免费的开放源代码的软件, ⽬前在各国已⼴泛应⽤。
Moodle 这个词是 Modular Object-Oriented Dynamic Learning Environment ,即模块化⾯向对象的动态学习环境的缩写。
是⼀个⽤来建设基于 Internet 的课程和⽹站的软件包。
Moodle 平台依据社会建构主义的教学思想,即教育者(⽼师)和学习者(学⽣)都是平等的主体,在教学活动中,他们相互协作,并根据⾃⼰已有的经验共同建构知识。
Moodle 平台界⾯简单、精巧。
使⽤者可以根据需要随时调整界⾯,增减内容。
课程列表显⽰了服务器上每门课程的描述,包括是否允许访客使⽤,访问者可以对课程进⾏分类和搜索,按⾃⼰的需要学习课程。
Moodle 平台还具有兼容和易⽤性。
可以⼏乎在任何⽀持 PHP 的平台上安装,安装过程简单。
只需要⼀个数据库(并且可以共享)。
它具有全⾯的数据库抽象层,⼏乎⽀持所有的主流数据库(除了初始表定义)。
利⽤ Moodle ,现今主要的媒体⽂件都可以进⾏传送,这使可以利⽤的资源极⼤丰富。
在对媒体资源进⾏编辑时,利⽤的是⽤所见即所得的编辑器,这使得使⽤者⽆需经过专业培训,就能掌握 Moodle 的基本操作与编辑。
Moodle 注重全⾯的安全性,所有的表单都被检查,数据都被校验, cookie 是被加密的。
⽤户注册时,通过电⼦邮件进⾏⾸次登陆,且同⼀个邮件地址不能在同⼀门课程中进⾏重复注册,所有这些,都使得 Moodle 的安全性得到了加强。
⽬前,Moodle 项⽬仍然在不断的开发与完善中。
⼆. Moodle 的特征像许多著名的学习管理系统⼀样,Moodle 可以管理内容元件,但是更针对教育训练设计,另外,更加强了学习者的历程纪录,让⽼师们更能深⼊分析学⽣的学习历程。
moodle介绍和模块说明
Moodle简介Moodle已经个一个学术项目演变成为世界知名的虚拟学习环境。
Moodle是一个开源的课程管理系统,是Modular Object-Oriented Dynamic Learning Environment的简称(模块化面向对象动态学习环境的简称)。
Moodle的指导思想是社会建构主义学习理论,这种学习方式的特点是交互,建构主义者认为当人们在和学习的材料进行交互、为他人建构新的材料、和他人共同探讨材料的时候可以学习的更好。
知识的构建是在社会情境下通过和其他人之间的交互以及与学习材料的交互得到的。
通过分析学生的需求,理解moodle能做什么,怎样使用moodle的不同特性来实现你的课程目标。
通过添加静态资料、交互式活动和社会特性到课程中帮助学生达到学习的潜能。
Moodle能够应用到传统的课堂教学、完全的在线教学和远程教学当中,都能够提供强大的资源支持。
Moodle的架构Moodle是由开源的LAMP框架构成,包括Linux(操作系统)、Apache(web服务器)、MySql(数据库)、PHP(编程语言)。
该图表明了moodle架构中元素之间的调用。
Moodle的主要构建模块如上图所示,区分为代码(php、html、css、javascript)和数据(主要是通过moodle接口来添加值)Moodle数据库、模块(例如资源和活动)、板块、插件和其他实体代表了代码。
通常是存在moodle目录的文件系统中指向dirroot目录。
Moodle中的课程、用户、角色、分组、成绩和其他数据例如教师添加的学习资源、学生发表的帖子和系统管理员的设置都存储在moodle数据库中。
然而用户的图片、上传的作业存储在另一个moodle目录中,称作moodledata,存储的目录称作dataroot。
代码和数据的存储位置尽管moodle很好的组织了它的代码和数据,通常最好知道文件在学习系统中的位置。
系统文件(运行moodle必须的文件)存储在dirroot(moodle的安装目录文件)下的一系列文件中。
Moodle平台功能简介以及简要操作说明
Moodle平台功能简介以及简要操作说明Moodle平台功能简介以及简要操作说明Moodle教学平台是开放源代码网络教育平台,它基本上包括了系统管理与教学管理两大部分。
在中国,大家更习惯于叫它“魔灯”,来源于阿拉伯“魔灯”神话,感兴趣的学员可以“baidu”一下哦。
一、系统管理功能1、站点集成功能平台集成了网站功能,用户可不必再单独建立网站,可直接通过平台创建教育、培训类型网站,网站可实现新闻公告、论坛、下载等常见功能,用户可以创建各种类型的栏目。
已经有网站的用户也可以不使用平台提供的这些功能,而将平台做为纯粹的学习站点。
2、易于使用的设计平台最大程度降低了用户的使用难度,设计上采用了前台显示与后台管理合二为一的方法,教师能够随时编辑平台中的任何内容。
平台内嵌了功能齐全的在线编辑器,方便用户创建内容,变换字体、排版,插入图片、表格,上传文件等均可实现所见所得。
3、动态模块化功能设计平台各种功能均实现动态模块化管理,系统管理员可以灵活安装或卸载这些模块,对于平台中安装的各种功能,管理员也可以通过灵活控制实现是否赋予教师使用权限。
教师在使用这些教学功能模块的时候可以任意指定其显示的位置,可以灵活地移动、关闭或修改。
4、权限角色管理·平台支持系统管理员、课程管理员、教师、助教、学员等几种主要角色。
·系统管理员负责管理控制整个站点,负责对教师、课程管理员等角色进行授权·课程管理员负责平台课程体系的建设与规划·教师负责课程内容建设、开展在线教学,教师可以授权助教以及批准学生入学·助教负责协助教师进行在线教学5、用户注册管理平台支持多种用户注册、授权方式。
即可以指定平台默认在线注册功能、也可通过调用其它系统的用户数据实现注册与授权,平台留有网上支付等多种接口,用户可根据实际情况做二次开发。
6、多种主题风格平台支持风格与系统的分离,提供多种风格可供用户选择,并提供标准的风格开发规范,客户可依据自己喜好予以选择或开发。
moodle数据库结构
Moodle数据字典编写:小东前言The Moodle database has around 200 tables, and can be quite daunting at first sight. Moodle在线教学系统,有大约200多张表,第一次看到这样的场面,心里肯定会打鼓的。
DOCS on :/en/Development:Database_schema_introduction【注释】点击链接可以查看表结构【注释】如果没有特别说明,中文对应的解释是从官网对应位置翻译过来,仅供参考。
Moodle 系统基本结构图表结构详细分析Configuration //参数配置相关•tfmdl_config • tfmdl_config_pluginsUsers and their profiles // 用户相关•tfmdl_user •tfmdl_user_info_category •tfmdl_user_info_data •tfmdl_user_info_field • tfmdl_user_lastaccess基本模块扩展模块 管理系统系统外观用户管理活动、资源语言扩展用户验证个人资料 Moodle 内置 任何人开发的符合标准的主题 内置 作业 | 聊天 | 讨论 | 各种课件 | 各种模式 | 考试 | 扩展的各种标准 内置en_au, 扩展包En_us, zh_cn_tf8等等… 邮箱验证 | LDAP | 其他….. 内置个人博客系统…Mysql(默认) 数据库其他知名数据库…•由于性能上的考虑,将tfmdl_user_lastaccess这张表与user表分开设计,单独成为一张表。
••tfmdl_user_preferences•tfmdl_user_private_keyThe roles and capabilites system //角色和权限系统•tfmdl_role•tfmdl_role_allow_assign•tfmdl_role_allow_override•tfmdl_role_assignments•tfmdl_role_capabilities•tfmdl_role_names•tfmdl_role_sortorderroledefines a role, its name, etc. Other parts of the role definition are stored in therole_capabilities and role_context_levels tables.定义一种角色(含角色名称等等),角色定义的其它详细部分,存放在role_capabilites 和 role_context_levels两张表中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
序:上一段时间帮人分析过moodle架构,梳理堆砌了一些文字资料,这里放上来,供大家参考。
如有错误或遗漏的地方,请各位指正。
1、数据连接抽象类ADOConnection
Moodle支持Mysql、Oracle、Sql Server等多种数据库。
由于不同的数据库操作有所不同,为支持多种数据库,Moodle定义了数据库连接抽象类ADOConnection。
//抽象数据库连接类ADOConnection
classADOConnection {}
ADOConnection定义了连接、断开连接(Close)、事务处理(BeginTrans、CommitTrans、RollbackTrans等)、错误异常处理、CURD(GetOne、SelectLimit、AutoExecute等)、缓存机制(CacheFlush、CacheSelectLimit、CacheExecute)、锁机制等。
更加详细实现见lib/adodb/adodb.inc.php文件。
2数据库连接抽象类ADOConnection的具体实现
Moodle针对各种具体的数据库定义了ADOConnection抽象类的实现,这些实现都放置在文件夹lib/adodb/drivers下面。
如Sql Server数据库的实现在lib/adodb/drivers/adodb-mssql.inc.php文件里面,Mysql数据库的实现在lib/adodb/drivers/adodb-mysql.inc.php等等。
如:
classADODB_mysql extends ADOConnection {}
classADODB_mssql extends ADOConnection {}
3数据库连接对象的实例化
现在,我们已经拥有了数据连接接口与实现,可以说,数据访问层的主体已经完成。
留给我们的还有一下两个问题需要解决。
l数据连接对象创建的管理
l考虑利于数据库迁移的设计
在前面的设计中,数据连接对象已经被抽象为对应的接口ADOConnection,它们的实现根据数据库的不同而有所区别,也就是说,创建的对象有多种类型,每种类型又有不同的实现,这是典型的抽象工厂模式的应用场景。
这也是上述两个问题的解决之道。
为此,Moodle在config.php中定义了数据库连接字符串来实现“依赖注入”。
$CFG->dbtype = 'mysql';
$CFG->dbhost = 'localhost';
$CFG->dbname = 'course_center';
$CFG->dbuser = 'root';
$CFG->dbpass = 'heshaoyue';
$CFG->dbpersist = false;
$CFG->prefix = 'mdl_';
接下来,在lib/setup.php中进行数据连接对象的实例化。
即通过代码:$db = &ADONewConnection($CFG->dbtype);
实现了创建具体的数据库连接,ADONewConnection的部分实现如下。
$cls = 'ADODB_'.$db;
if (!class_exists($cls)) {
adodb_backtrace();
return $false;
}
$obj = new $cls();
这样,数据库连接对象就创建好了。
ORM的实现
Moodle在lib/dmllib.php中实现了ORM机制。
常用的函数及用法如下:
//查询$table中符合条件的记录是否存在
functionrecord_exists($table, $field1='', $value1='', $field2='', $value2='', $field3='', $value3='');
//获取$table中符合条件的记录
functionget_record($table, $field1, $value1, $field2='', $value2='', $field3='', $value3='', $fields='*') ;
//插入数据对象$dataobject到$table中
functioninsert_record($table, $dataobject, $returnid=true, $primarykey='id') ;
这些函数遍布moodle业务逻辑层的各个角落。
由于数据库连接对象的存在,屏蔽了底层数据库之间的差异,使得这部分的实现就变得异常简单。
在需要使用数据库连接对象之前,只首先引用lib/setup.php中创建的$db对象,global $db;
即可调用底层数据库操作了。
下面以insert_record来说明。
functioninsert_record($table, $dataobject, $returnid=true, $primarykey='id') { //引用$db对象
global $db, $CFG, $empty_rs_cache;
//中间省去SQL语句生成的部分和缓存部分
/// 执行插入操作
if (!$rs = $db->Execute($insertSQL)) {
debugging($db->ErrorMsg() .'<br /><br />'.s($insertSQL));
if (!empty($CFG->dblogerror)) {
$debug=array_shift(debug_backtrace());
error_log("SQL ".$db->ErrorMsg()." in {$debug['file']} on line {$debug['line']}. STATEMENT: $insertSQL");
}
return false;
}
//省去其他部分
}。