0

我正在开展一个项目,以使现有的 LMS SCORM 1.2 兼容。我一直在使用来自 Advanced Distributed Learning Initiative 的文档,名为Sharable Content Onject Model Version 1.2 The SCORM Run-Time Environment

在第 3-25 页,讨论了当 SCO 调用 LMSFinish() 函数时必须在 LMS 中实现以设置 cmi.core.lesson_status 值的逻辑。内容如下:

在收到 LMSFinish() 调用或用户导航离开后,LMS 应将 SCO 的 cmi.core.lesson_status 设置为“已完成”。

实现这个逻辑对我来说似乎没有意义,因为用户可以查看 SCO 的第一页/屏幕并点击离开,我的 LMS 代码会将课程状态设置为“已完成”。但实际上,用户并没有真正完成 SCO。如果用户实际上没有逐步浏览所有材料,我不希望我的 LMS 将状态设置为“已完成”。

这个问题似乎也让其他人感到困惑。请参阅: VSSCORM 步骤 22 - 进度和完成 - cmi.core.lesson_status

有人可以就此事提供一些澄清,以便我可以编写我的 LMS 逻辑以正确反映真实情况,同时仍然符合 SCORM 1.2 吗?

提前致谢。

4

2 回答 2

2

以我的阅读方式,那里缺少一个相当明显的部分-

在接收到 LMSFinish() 调用或用户离开时,如果 SCO 没有更改它,LMS 应该将 SCO 的 cmi.core.lesson_status 设置为“已完成” 。

换句话说,如果not attempted在调用 LMSFinish() 时它仍然是“”,那么它应该被改变(因为不允许 SCO 将它设置为它应该是安全的测试)。

我不确定是否有 1.2 的一致性文档,如果有的话,它可能会在adlnet.gov SCORM 1.2页面上的某个地方(有一个看起来很有希望的 zip 下载) - 我已经习惯了 2004 版本,那里有一个直接 pdf 链接 - 那里还有 1.2 测试套件,但因为我从来没有使用过它,所以我不确定它会有多少用处。

于 2015-12-09T16:56:05.237 回答
2

添加到 Ryochet 的答案中,LMSFinish()这意味着课程告诉 LMS 学习者已经完成了一个会话,而不一定是整个课程。

课程开发的最佳实践是cmi.core.lesson_status在课程初始化后立即设置值。这会立即告诉 LMS 在课程调用时它不应干扰课程状态的值LMSFinish(),并且在不离开第一页的情况下快速关闭课程的用户将被赋予 状态incomplete

但是,如果课程作者选择设置 course_status,SCORM 文档声明将课程状态设置为 LMS 是 LMS 的责任completed。这就是他们在 3-25 中描述的内容,如下所示。

3.3.6.1

SCO 有责任至少发出 LMSInitialize(“”) 和 LMSFinish(“”) API 调用。

3.4.2

SCO 使用的所有数据元素都是可选的。SCO 只需要使用 API 函数 LMSInitialize("") 和 LMSFinish("");他们不需要使用 LMSSetValue() 或 LMSGetValue()。SCO 可能非常非常小,并且不适合详细跟踪。

第 3-25 页

附加行为要求:如果 SCO 设置 cmi.core.lesson_status 则没有问题。但是,SCORM 不会强制 SCO 设置 cmi.core.lesson_status。要成功处理这些情况,还必须遵守一些额外的要求:

  • 在初始启动时,LMS 应将 cmi.core.lesson_status 设置为“未尝试”。
  • 在接收到 LMSFinish() 调用或用户导航离开后,LMS 应将 SCO 的 cmi.core.lesson_status 设置为“已完成”。
  • 将 cmi.core.lesson_status 设置为“已完成”后,LMS 现在应该检查是否在 cmi.student_data.mastery_score 中指定了掌握分数(如果支持)或 SCO 所属的清单。如果提供了掌握分数并且 SCO 确实设置了 cmi.core.score.raw,则 LMS 应将 cmi.core.score.raw 与掌握分数进行比较,并将 cmi.core.lesson_status 设置为“通过”或“失败的”。如果没有提供掌握分数,LMS 会将 cmi.core.lesson_status 显示为“已完成”</li>

换句话说,如果课程设置了 的值cmi.core.lesson_status,只需使用他们提供的值(假设它是一个有效的令牌)。如果课程没有提供价值,SCORM 文档会假设它是一个“非常非常小”的 SCO,并且“不是为了详细跟踪而设计的”。因此,将课程状态设置为,completed因为 SCO 太简单而无法自行设置值。

如果课程作者不了解情况并设计了一个大型课程,但未能设置课程状态值 - 如您的场景中所述,“用户可以查看 SCO 的第一页/屏幕并点击离开” - 课程作者会很快发现他们的错误(就像我们所有人一样!),并将适当地编辑课程代码。

于 2015-12-09T19:54:39.843 回答