SCORM标准的LMS
龙成仁
2023-12-01
来自网络SCORM标准 LMS介绍
基本上会有几个子系统:
1. 账号管理
2. 开课、选课管理
3. 讨论板系统
4. 作业、问卷、测验系统
其中最重要的是测验系统。如果你功力不够,短时间无法作一个好用的测验系统的话,可以先 focus 在作业与问卷系统上,而测验可以参考其它现有程序。. 如果你还想多同步的功能,可以再加个在线讨论室。没时间发展可以使用 Netmeeting 的方案或去找一个聊天室的 source 来改。
最后一个『必须』要做的,就是有一个『教材步进』机制。看你是要很简单地用一个 frame,里头放个 treeview 来展现教材目录,或是厉害一点,让你的 LMS 可以自动 launch 教材,都行。
把这一切兜起来后,你就完成一个简单的 LMS。当然,功能你自己还可以自由添加、删减、修改。别忘了美工也很重要喔!
因为 ADL 有提供一份 Java 写的 adapter 的 sample source,所以如果你会 Java,那就太幸运了,直接拿来用,你就少写一万三千多行程序,而且还有国际组织帮你维护程序代码哩!
不过这也轻松不到哪去,因为你要自行设计 Database 的 schema 来存 SCORM 的数据,如果你的 LMS 自己没设计 log,而完全要仰赖 SCORM 所产生的记录,那么这个 database 的设计可要花点时间跟脑筋啰!更何况,你必须先看懂这套程序代码,才能写它与你的 DB 之间的 bridge code。
系统在符合 SCORM 之前,已有自己的 log 记录方式、数据,所以除了 SCORM 它自己记一套,LMS 自己也会记一套,而且记得比 SCORM 还详细。因此这个部份,作法就只需设计如何记录 SCO 产生的 cmi 数据即可,不必担心与原有 LMS 的资料是否冲突。
这样一来就简单多了。因为一个 SCO 只有一个 cmi data,只要逐个记入 DB table 里就行了。所以,在 SCORM 兼容上,只需要多一个 Table 即可。
在 table 的设计上,因为 cmi 是一个 XML 格式的数据,如果拆成数个部份存,在『拆开存入』与『取出重组』这个部份会影响效能,但所用的数据库并不是『原生 XML 数据库』(native XML database),采用『仿真 XML 数据库』方式,把 cmi 整个 XML 直接存入 field 中,既有原生 XML 数据库的不必拆组优点,又保有关系数据库的关联性。
归纳起来,你在这个部份就是要去下载 ADL 的 Sample Run-Time Environment http://www.adlnet.org/ADLDOCS/Other/SCORM(TM)Version1_2SampleRTEVersion1_2_1.zip ,并看懂它来设计你的数据库 schema。
如果你已经下载了 ADL 所释出的 Sample Run-Time nvironment,而且决定使用 Java 或 .Net 来实做你平台的 SCORM 部份,你可能要花不少时间来读懂它里面的三十多支 Java 程序,或者至少该知道这些程序该怎么用。几乎所有的 .java 程序,都为了存取 XML 而写。如果你已经熟读SCORM RTE 的 Metadata,从档名你就知道,几乎是一个 Metadata 就用一支 java 来 take care。从事 java 程序开发的朋友都知道,java 需要自带 XML 的函式库,它无法直接使用 OS 所提供的 XML API (如果有的话,例如 windows)。而这个函式库又超大,因此 java 在 XML 这方面有点先天失利,不过这并非指 java 不适合开发 SCORM,而是我 心目中有比用 java 更适合的对象-就是我在『技术』篇所提到的 SCORM 开发必备技能之二 - Jscript。请注意Jscript,而非 Javascript。这是 Microsoft 版本的 Javascript,它是一个遵循 ECMA-Script 标准的 script language ,除了在 Microsoft IE 底下有完整的 XMLDOM 可用,即使客户端使用 Mozilla/Netscape 等浏览器,Jscript 也可以用标准的 XMLDOM 来实作 SCORM Adapter。
在讲到实作 Adapter 之前,我们先来看看 ADL 的 Sample 里的两支重要的 Jscript : APIWrapper.js 与 SCOFunctions.js。
"APIWrapper.js" 是提供教材制作者,一个呼叫 Adapter API 的接口。教材制作者把这支程序与 Asset 合起来就构成一个简单的 SCO,只要在教材被 launch 时,使用它的 findAPI() 去寻找 Adapter API,找到后就会有一个 API 的物件可用,而这个物件会 mapping 到 LMS 所实作的 Adapter 上,因此它就会有 RTE 所规范的八个方法 (method),开始供你的教材使用了。
"SCOFunctions.js" 则是提供一些函式,供 Adapter 或者 Content 来使用。这些函式大部份是有关 SCO 在启动与结束时,一些状态属性的 Metadata 侦测与设定。比如 "cmi.core.exit" 侦测这个 SCO 是正常结束或异常结束;"cmi.core.lesson_mode" 是一般阅读或是参观者浏览;还有 "cmi.core.session_time" 是记录这个 SCO 从开始到结束的时间。哦!对了,SCORM 有个数据格式是 CMITimespan,这个是『时间长度』。它精确到小数点后两位,但 Jscript 并没有这样的处理函式 (不知 Java 有没有),所以必须自己写个函式来处理这样的时间加减。这支程序有三个函式:startTimer()、computeTime()、convertTotalSeconds() 可以帮你计算 session_time。它已经被写在 loadPage() 函式中了,所以你只要在 SCO 启动时,在 findAPI() 找到 API 后,用 loadPage() 来呼叫 Adapter 的 LMSInitialize(),再使用 unloadPage() 呼叫 LMSCommit() 与 LMSFinish(),你就完成一个 SCO 的最基本要求啰。
simple sequencing 不仅仅可以应用在描述教材的走向,更可以扩展到整个 LMS 上,换句话说,教材的走向描述,不过是 LMS 走向描述的其中一个分歧。
那么,要怎么利用这个观念来达成整个 LMS 的 sequencing描述呢?首先你必须先定义几个大模块,刚好这些模块都已经有标准定义,我们就可以直接拿来用:
1. 学习者(账号、注册)系统
2. 报名、选课、稽核系统
3. 课件(SCO)管理系统
4. 开班、师生指定系统
5. 测验、问卷、操作系统 (QTI)
6. 讨论板系统
7. 实时讨论室、在线传讯系统
8. 权限控管系统
9. 内、外信息透通之 Web Service 系统
全部定义好后,你就可以把这些子系统,当作是 Simple Sequencing 里头所指的 resources,用 XML 把它们的流程与内容定义出来。这样一来,不但学习者的学习活动,从注册、报名、选课、上课、稽核,有着明确而标准的流程,而且在客制化上,根本只要改变这个 LMS的 sequencing 描述 XML 档内容,其它的一概不会动到,真正做到『一档客制化』。
这个 LMS Sequencing 的 Resources不只是上述的 9 个子系统,而是任何企业内既有的,符合 Web service 数据交换标准的系统。因此,新版本的系统,程序不一定比较大,因为这是个软件组件的概念。这个概念从很早就有了,只是缺乏一个『骨骼、神经』系统来把这些『器官』的连动一气呵成。
simple sequencing 刚好就是这个系统的『骨骼、神经』系统,它用 XML 来描述神经元如何脉冲,讯息传递,这些步骤可都是标准化、可程序化的。
因为 SCORM 它是个『标准』。标准是个『规格』,而且这个规格是一种『隐性』的特征。我这么说好了,假设 CNS 食品标准规定食品的大肠杆菌含量必须在 0.1 ppm 以下,你一定得用仪器才测得出某个食品『符不符标准』,光用肉眼看是看不来出的。
同理,SCORM 是规范 content 与 LMS 之间的沟通,要以什么 metadata、API 来进行,教材应具备哪些 metadata,这些都不是在前台显现,而是在网络上、在 server 端、在程序里运作,你要我展示给你看,除非你能化身成一个电子,在网络、在程序中游览,你才能『看到』SCORM 运作的过程。
那要怎样才知道 content、LMS 已经符合 SCORM 标准了呢?跟前面的例子一样,你要藉由一个『仪器』来测量。而这个所谓的仪器,就是 ADL 所 release 的 SCORM test suite (最新版本 1.2.2)这个软件。它可以对 content 与 LMS 进行 metadata 的检测,以评估这个 content 或 LMS 是否符合它所规范的标准。
对于 content ,它所进行的就是把 content package 丢给它,它会从包装、imsmanifest.xml、API caller 等部份来进行检查;而 LMS 稍为复杂一点,这个部份分成两小部份,一个是教材部份,一个是 monitor 部份。启动 monitor 后,它会提示你把 test content 汇入 LMS,并进行课程。这时,test content 就会跟你的 LMS 进行 SCORM API 的『对话』,并且把结果回报给 monitor。
一些厂商声称他们的 LMS 是符合 SCORM 标准的,就是要提出这个 test suite 之 monitor 所产生的 Log 记录来左证。而如果你想要『看看』SCORM 相符前后有何不同的话,顶多也只是请对方操作一次 test suite 的测试,真的丢一份一般 SCORM 标准教材,你是看不出任何前后差异的啦!