我有一个关于Scorm 2004第4版的问题。我真的不明白如何暂停所有然后恢复所有工作。通过阅读有关Scorm的文档书,我得出结论,当我将导航请求设置为"全部挂起"时,我应该记住(在数据库中)所有SCO的所有ScoData,还应该记住请求"全部挂起来"的活动。据我所知,当我再次运行该课程时,我应该从数据库中恢复所有SCO的ScoData,并运行发出"全部挂起"请求的SCO。当我在Scorm测试套件中测试它时,我发现了一个问题,这让我确信我的理解并不完整。我一直在文档中寻找答案,但找不到。这就是我请求帮助的原因。
例如,我将展示Scorm Test CM-09ba和CM09 ca
CM-09ba 清单
<organizations default="CM-09ba">
<organization identifier="CM-09ba">
<title>LMS Test Content Package CM-09ba </title>
<item identifier="activity_1" parameters="?tc=CM-09ba&act=1" identifierref="SEQ01">
<title>Activity 1</title>
</item>
<item identifier="activity_2" parameters="?tc=CM-09ba&act=2" identifierref="SEQ01">
<title>Activity 2</title>
</item>
<item identifier="activity_3" parameters="?tc=CM-09ba&act=3" identifierref="SEQ01">
<title>Activity 3</title>
</item>
<item identifier="activity_4" parameters="?tc=CM-09ba&act=4" identifierref="SEQ01">
<title>Activity 4</title>
</item>
<imsss:sequencing>
<imsss:controlMode flow="true"/>
</imsss:sequencing>
</organization>
</organizations>
清单CM-09ca
<organizations default="CM-09ca">
<organization identifier="CM-09ca">
<title>LMS Test Content Package CM-09ca </title>
<item identifier="activity_1" parameters="?tc=CM-09ca&act=1" identifierref="SEQ01">
<title>Activity 1</title>
</item>
<item identifier="activity_2" parameters="?tc=CM-09ca&act=2" identifierref="SEQ01">
<title>Activity 2</title>
</item>
<item identifier="activity_3" parameters="?tc=CM-09ca&act=3" identifierref="SEQ01">
<title>Activity 3</title>
<imsss:sequencing>
<imsss:sequencingRules>
<imsss:postConditionRule>
<imsss:ruleConditions>
<imsss:ruleCondition condition="always"/>
</imsss:ruleConditions>
<imsss:ruleAction action="continue"/>
</imsss:postConditionRule>
</imsss:sequencingRules>
</imsss:sequencing>
</item>
<item identifier="activity_4" parameters="?tc=CM-09ca&act=4" identifierref="SEQ01">
<title>Activity 4</title>
</item>
<imsss:sequencing>
<imsss:controlMode flow="true"/>
</imsss:sequencing>
</organization>
</organizations>
CM-09ba 测试结果
Start ADL LMS Test Content Package CM-09ba
Testing Activity 1
Activity 1 was launched as expected
Evaluating Initialize("") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Evaluating SetValue("cmi.exit", "normal") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Testing Activity 2
Activity 2 was launched as expected
Evaluating Initialize("") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Evaluating SetValue("adl.nav.request", "previous") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Testing Activity 3
Activity 3 was launched as expected
Evaluating Initialize("") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Evaluating SetValue("adl.nav.request", "suspendAll") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Testing Activity 1
ERROR: Expected Activity 1 - LMS Launched Activity 3
测试结果CM-09ca启动ADL LMS测试内容包CM-09ca
Testing Activity 1
Activity 1 was launched as expected
Evaluating Initialize("") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Evaluating SetValue("cmi.exit", "normal") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Testing Activity 3
Activity 3 was launched as expected
Evaluating Initialize("") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Evaluating SetValue("adl.nav.request", "previous") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Testing Activity 4
Activity 4 was launched as expected
Evaluating Initialize("") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Evaluating SetValue("adl.nav.request", "previous") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Testing Activity 4
Activity 4 was launched as expected
Evaluating Initialize("") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
Evaluating SetValue("cmi.exit", "normal") - Expected: "true" - LMS Returned: "true"
Evaluating GetLastError("") - Expected: "0" - LMS Returned: "0"
ADL LMS Test Content Package CM-09ca passed all tests
在测试CM-09ca中,我们开始测试,然后要求我们以树中的"活动3"为目标,然后以"活动1"为目标。在"活动4"中,我们被要求触发"全部挂起"按钮。
我不知道为什么在测试CM-09ba中我应该恢复活动1。我应该找到第一个没有以cmi.exit设置为"正常"结束的活动,然后终止它吗?在CM-09ba中,第一个将是活动2,由于要终止,我将检查之前的adl.nav.request,以便恢复活动1。在CM-09ca中,第一个没有以cmi.exit设置为"正常"结束的"活动"将是"活动3",并且由于终止它,将触发后续操作继续?这是正确的吗?
提前感谢您的回答。
这与第二次输入内容的过程有关。CM-09ba发出启动导航请求,启动对内容的新尝试(所有数据已擦除,cmi.entry是从头开始的)。CM-09ca发出恢复所有导航请求,该请求应在上次尝试后停止的位置继续。
这在附录A下的一致性(测试)要求文档中列出。以下是第三版一致性要求的链接:http://www.adlnet.gov/wp-content/uploads/2011/07/scorm.2004.3ed.confreq.v1.0.pdf
只是为了记录,步骤是:
CM-09ba
- 处理启动导航请求>>识别活动1
- 处理活动2的选择>>识别酸度2
- 将adl.nav.request设置为上一个,处理继续导航请求>>识别活动3
- 将adl.nav.request设置为suspendAll,处理ExitAll请求>>结束排序会话
- 处理开始导航请求>>识别活动1
CM-09ca
- 处理开始导航请求>>识别活动1
- 处理活动3的选择>>识别活动3
- 将adl.nav.request设置为上一个,将Choice处理为Activity 1>>标识Activity 4
- 将adl.nav.request设置为上一个,处理全部挂起>>结束排序会话
- 处理恢复所有请求>>识别酸4