lesson_status 的 SCORM 1.2 LMSFinish 逻辑
SCORM 1.2 LMSFinish logic for lesson_status
我正在从事一个使现有 LMS SCORM 1.2 兼容的项目。我一直在使用高级分布式学习计划中名为 Sharable Content Onject Model Version 1.2 The SCORM 运行-Time Environment.
的文档
第 3-25 页讨论了当 SCO 调用 LMSFinish() 函数时必须在 LMS 中实现以设置 cmi.core.lesson_status 值的逻辑。内容如下:
Upon receiving the LMSFinish() call or the user navigates away, the LMS should set the cmi.core.lesson_status for the SCO to "completed".
实施这个逻辑对我来说似乎毫无意义,因为用户随后只需查看 SCO 的第一个 page/screen 并单击即可,我的 LMS 代码将在该按钮上将课程状态设置为"completed"。但事实上,用户并没有真正完成 SCO。如果用户实际上没有完成所有 material.
,我不希望我的 LMS 将状态设置为 "completed"
这个问题似乎也让其他人感到困惑。看:
VSSCORM Step 22 - Progress and Completion - cmi.core.lesson_status
有人可以澄清一下这个问题,以便我可以编写我的 LMS 逻辑以正确反映真实情况,同时仍然符合 SCORM 1.2 标准吗?
提前致谢。
以我的阅读方式,那里缺少了一个相当明显的部分 -
Upon receiving the LMSFinish() call or the user navigates away, the LMS should set the cmi.core.lesson_status for the SCO to "completed" if it has not been changed by the SCO.
换句话说,如果在调用LMSFinish()时它仍然是“not attempted
”,那么它应该被更改(因为SCO不允许将其设置为应该可以安全测试) .
我不确定是否有 1.2 的一致性文档,如果有的话,它可能会在 adlnet.gov SCORM 1.2 页面上的某个地方(有一个看起来很有希望的 zip 下载)- 我已经习惯了2004 版本,其中有一个直接的 pdf link - 那里还有 1.2 测试套件,但因为我从来没有用过它,所以我不确定它会有多少用处。
为了补充 Ryochet 的回答,LMSFinish()
是课程告诉 LMS 学习者已完成 session 的一种方式,不一定是整个课程。
课程开发的最佳做法是在课程初始化后立即设置 cmi.core.lesson_status
的值。这会立即告诉 LMS 它应该 不 在课程调用 LMSFinish()
时干扰课程状态的值,并且如果用户在不离开第一页的情况下快速关闭课程,将被给予incomplete
.
状态
但是,如果课程作者选择 而不是 来设置 lesson_status,SCORM 文档声明 LMS 有责任将课程状态设置为 completed
.这是他们在3-25中描述的,如下图。
3.3.6.1
It is the responsibility of the SCO to, at a minimum, issue LMSInitialize(“”) and LMSFinish(“”) API calls.
3.4.2
All data elements are optional for use by SCOs. SCOs are required only to use the API functions LMSInitialize("") and LMSFinish(""); they are not required to use LMSSetValue() or LMSGetValue(). SCOs may be very, very small and not be designed to be tracked in detail.
第 3-25 页
Additional Behavior Requirements: If a SCO sets the cmi.core.lesson_status then there is no problem. However, the SCORM does not force the SCO to set the cmi.core.lesson_status. There is some additional requirements that must be adhered to successfully handle these cases:
- Upon initial launch the LMS should set the cmi.core.lesson_status to “not attempted”.
- Upon receiving the LMSFinish() call or the user navigates away, the LMS should set the cmi.core.lesson_status for the SCO to “completed”.
- After setting the cmi.core.lesson_status to “completed”, the LMS should now check to see if a Mastery Score has been specified in the cmi.student_data.mastery_score, if supported, or the manifest that the SCO is a member of. If a Mastery Score is provided and the SCO did set the cmi.core.score.raw, the LMS shall compare the cmi.core.score.raw to the Mastery Score and set the cmi.core.lesson_status to either “passed” or “failed”. If no Mastery Score is provided, the LMS will cmi.core.lesson_status as “completed”
换句话说,如果课程设置了 cmi.core.lesson_status
的值,只需使用他们提供的值(假设它是一个有效的标记)。如果课程 没有 提供一个值,SCORM 文档会说假设它是一个“非常非常小”的 SCO,并且“不被设计为被详细跟踪”。因此,将课程状态设置为 completed
,因为 SCO 太简单了,无法自行设置值。
如果课程作者不知情并设计了一个未能设置课程状态值的大型课程——如您的场景中所述,“用户然后可以只查看 SCO 的第一个 page/screen 和点击离开”——课程作者将很快认识到他们的错误(就像我们所有人一样!)并将适当地编辑课程代码。
我正在从事一个使现有 LMS SCORM 1.2 兼容的项目。我一直在使用高级分布式学习计划中名为 Sharable Content Onject Model Version 1.2 The SCORM 运行-Time Environment.
的文档第 3-25 页讨论了当 SCO 调用 LMSFinish() 函数时必须在 LMS 中实现以设置 cmi.core.lesson_status 值的逻辑。内容如下:
Upon receiving the LMSFinish() call or the user navigates away, the LMS should set the cmi.core.lesson_status for the SCO to "completed".
实施这个逻辑对我来说似乎毫无意义,因为用户随后只需查看 SCO 的第一个 page/screen 并单击即可,我的 LMS 代码将在该按钮上将课程状态设置为"completed"。但事实上,用户并没有真正完成 SCO。如果用户实际上没有完成所有 material.
,我不希望我的 LMS 将状态设置为 "completed"这个问题似乎也让其他人感到困惑。看: VSSCORM Step 22 - Progress and Completion - cmi.core.lesson_status
有人可以澄清一下这个问题,以便我可以编写我的 LMS 逻辑以正确反映真实情况,同时仍然符合 SCORM 1.2 标准吗?
提前致谢。
以我的阅读方式,那里缺少了一个相当明显的部分 -
Upon receiving the LMSFinish() call or the user navigates away, the LMS should set the cmi.core.lesson_status for the SCO to "completed" if it has not been changed by the SCO.
换句话说,如果在调用LMSFinish()时它仍然是“not attempted
”,那么它应该被更改(因为SCO不允许将其设置为应该可以安全测试) .
我不确定是否有 1.2 的一致性文档,如果有的话,它可能会在 adlnet.gov SCORM 1.2 页面上的某个地方(有一个看起来很有希望的 zip 下载)- 我已经习惯了2004 版本,其中有一个直接的 pdf link - 那里还有 1.2 测试套件,但因为我从来没有用过它,所以我不确定它会有多少用处。
为了补充 Ryochet 的回答,LMSFinish()
是课程告诉 LMS 学习者已完成 session 的一种方式,不一定是整个课程。
课程开发的最佳做法是在课程初始化后立即设置 cmi.core.lesson_status
的值。这会立即告诉 LMS 它应该 不 在课程调用 LMSFinish()
时干扰课程状态的值,并且如果用户在不离开第一页的情况下快速关闭课程,将被给予incomplete
.
但是,如果课程作者选择 而不是 来设置 lesson_status,SCORM 文档声明 LMS 有责任将课程状态设置为 completed
.这是他们在3-25中描述的,如下图。
3.3.6.1
It is the responsibility of the SCO to, at a minimum, issue LMSInitialize(“”) and LMSFinish(“”) API calls.
3.4.2
All data elements are optional for use by SCOs. SCOs are required only to use the API functions LMSInitialize("") and LMSFinish(""); they are not required to use LMSSetValue() or LMSGetValue(). SCOs may be very, very small and not be designed to be tracked in detail.
第 3-25 页
Additional Behavior Requirements: If a SCO sets the cmi.core.lesson_status then there is no problem. However, the SCORM does not force the SCO to set the cmi.core.lesson_status. There is some additional requirements that must be adhered to successfully handle these cases:
- Upon initial launch the LMS should set the cmi.core.lesson_status to “not attempted”.
- Upon receiving the LMSFinish() call or the user navigates away, the LMS should set the cmi.core.lesson_status for the SCO to “completed”.
- After setting the cmi.core.lesson_status to “completed”, the LMS should now check to see if a Mastery Score has been specified in the cmi.student_data.mastery_score, if supported, or the manifest that the SCO is a member of. If a Mastery Score is provided and the SCO did set the cmi.core.score.raw, the LMS shall compare the cmi.core.score.raw to the Mastery Score and set the cmi.core.lesson_status to either “passed” or “failed”. If no Mastery Score is provided, the LMS will cmi.core.lesson_status as “completed”
换句话说,如果课程设置了 cmi.core.lesson_status
的值,只需使用他们提供的值(假设它是一个有效的标记)。如果课程 没有 提供一个值,SCORM 文档会说假设它是一个“非常非常小”的 SCO,并且“不被设计为被详细跟踪”。因此,将课程状态设置为 completed
,因为 SCO 太简单了,无法自行设置值。
如果课程作者不知情并设计了一个未能设置课程状态值的大型课程——如您的场景中所述,“用户然后可以只查看 SCO 的第一个 page/screen 和点击离开”——课程作者将很快认识到他们的错误(就像我们所有人一样!)并将适当地编辑课程代码。