添加到 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 的第一页/屏幕并点击离开” - 课程作者会很快发现他们的错误(就像我们所有人一样!),并将适当地编辑课程代码。