SCORM入门学习记录

SCORM文档:https://scorm.com/scorm-explained/technical-scorm/

1. SCORM1.2规范

SCORM是”Sharable Content Object Reference Model(可共享课程对象参考模型)”的缩写,是由ADL组织所拟定的标准。已作为全世界通用的标准规格。

SCORM规定一个标准的课件包应满足以下条件:

  • 打包成ZIP文件。
  • 在XML文件中描述。
  • 通过JavaScript进行通信。
  • 使用XML中的规则排序。

SCORM由三个子规范组成

  • CAM(Content Aggregation Model): 指定应如何打包和描述内容。它主要基于XML。
  • Run-Time:指定内容应该如何启动以及它如何与LMS通信。它主要基于ECMAScript(JavaScript)。
  • Sequencing:指定学习者如何在课程的各个部分(SCOs)之间导航。它由一组用XML编写的规则和属性定义。

img.png

2. LMS的API与DATA MODEL

API地址:https://scorm.com/scorm-explained/technical-scorm/run-time/run-time-reference/#section-2

常用API整理:

LMSInitialize 开始与LMS的通信会话。 
LMSFinish 结束与LMS的通信会话。 
LMSGetValue 存值 
LMSSetValue 取值 
LMSCommit 向LMS指示所有数据都应保存 
LMSGetLastError 返回上次API调用导致的错误代码。 
LMSGetErrorString 返回描述指定错误代码的短字符串。 
LMSGetDiagnostic 返回有关上次发生的错误的详细信息。

DATA MODEL:一组定义的数据点,内容和LMS可以通过SCORM API交换.示例数据模型元素包括“cmi.score.scaled”(以记录用户的测试分数)和“cmi.completion_status”以记录学习者何时/是否已经完成一些训练。
常用MODEL整理:

  • cmi.core._children - returns “student_id, student_name, lesson_location, credit, lesson_status, entry, score, total_time, exit, session_time”
  • cmi.core.student_id
  • cmi.core.student_name
  • cmi.core.lesson_location - 255 char string typically used for bookmarking
  • cmi.core.credit - returns “no-credit” or “credit”
  • cmi.core.lesson_status - indicates SCO completion - returns one of the following: “passed”, “completed”, “failed”, “incomplete”, “browsed”, or “not attempted”
  • cmi.core.entry - returns “ab-initio”, “resume”, or “”
  • cmi.core.score._children - returns “raw, min, max”
  • cmi.core.score.raw - the raw score value
  • cmi.core.score.max - the maximum possible score - if not set, assumed 100
  • cmi.core.score.min - the minimum possible score - if not set, assumed 0
  • cmi.core.total_time - returns the sum of all a learner’s session times
  • cmi.core.lesson_mode - returns “browse”, “normal”, or “review”
  • cmi.suspend_data - 4096 char string usually used for progress data
  • cmi.launch_data - 4096 char string used to pass data to the SCO on launch from the LMS
  • cmi.objectives._children - returns “id, score, status”
  • cmi.objectives._count - returns the number of objectives currently stored for this SCO.
  • cmi.objectives.n.id - returns the objective identifier where “n” is the objective number
  • cmi.objectives.n.score._children - returns “raw, min, max “
  • cmi.objectives.n.score.raw - the raw objective score value
  • cmi.objectives.n.score.min - The minimum possible score - if not set, assumed 0
  • cmi.objectives.n.score.max - the maximum possible objective score - if not set, assumed 100
  • cmi.objectives.n.status - indicates if the learner has completed the objective - returns one of the following: “passed”, “completed”, “failed”, “incomplete”, “browsed”, or “not attempted”
  • cmi.core.exit
  • cmi.core.session_time

3. imsmanifest.xml

在SCORM 1.2规范中每个课程必须包含一个imsmanifest.xml文件,该文件向LMS描述其结构和其他特征。
清单文件由4个主要部分组成:

  1. Meta-data:内容包数据描述的入口。
  2. Organizations:包含了学习资源的组织或内容结构。
  3. Resources:在内容包中定义的学习资源(集合)。
  4. SubManifest:嵌套的子清单。

在”imsmanifest.xml”文件中,使用XML标记语言来定义课件包的结构和内容。以下是一些常用的XML标记和元素:

  • <manifest>:根元素,定义课件包的基本信息。
  • <metadata>:元数据元素,用于描述课件包的相关信息,如标题、作者、描述等。
  • <organizations>:组织元素,用于定义课程的组织结构和章节。
  • <resources>:资源元素,用于定义课程所需的资源文件,如HTML、CSS、JavaScript等。
  • <item>:项目元素,用于定义课程的章节和子章节。
  • <file>:文件元素,用于引用课程所需的资源文件。
    下面是一个基础的模板示例:
<manifest identifier="com.scorm.manifesttemplates.scorm12" version="1"
       xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
       xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.imsproject.org/xsd/imscp_rootv1p1p2 imscp_rootv1p1p2.xsd
                           http://www.imsglobal.org/xsd/imsmd_rootv1p2p1 imsmd_rootv1p2p1.xsd
                           http://www.adlnet.org/xsd/adlcp_rootv1p2 adlcp_rootv1p2.xsd">
        <metadata>
                <schema>ADL SCORM</schema>
                <schemaversion>1.2</schemaversion>
        </metadata>
        <organizations default="B0">
                <organization identifier="B0">
                        <title>演示文件</title> 
                        <item identifier="i1" identifierref="r1">
                                <title>Title</title> 
                        </item>
                </organization>
        </organizations>
        <resources>
                <resource identifier="r1" type="webcontent" adlcp:scormtype="sco" href="index.html">
                        <file href="index.html" />
                </resource>
        </resources>
</manifest>

组织结构示例:

img.png

有必要特别指出的是以下几点:

  1. 各节点的“identifier”属性应该唯一;
  2. “organizations”节点下可以有多个“organization”节点,通过“organizations”的“default”属性指向某一个
  3. “organization”来决定使用那一种组织结构;
  4. “organization”下的“item”节点是可以嵌套的,用来实现课程章节的层次关系;
  5. “item”节点的“identifierref”属性的值为某一个“resource”节点的“identifier”属性的值,使某一章节与课程资源建立对应关系;
  6. “title”节点里的文本是课程以及章节在平台上的显示文本;
  7. “resource”节点的“href”属性是课程资源的存储位置。

4. 制作一个SCORM课件

基础示例:
img.png

5. SCORM打包流程图

img.png