2
votes

I have a question about Scorm 2004 4th Edition. I don't really understand how suspend all and then resume all works. From reading the documentation books about Scorm I concluded that when I set navigation request for "Suspend All" I should remember (in database) all ScoData from all SCO's, also I should remember an activity on which "Suspend all" was requested. As I understand when I run the course again I should restore all SCO's ScoData from database and run the SCO from which "Suspend All" request was issued. As I tested it against Scorm Test Suite I found a problem which makes me sure that my understanding isn't complete. I have been searching for answer in the documentation but can't find one. That's why I'm asking for help.

For Example I will show Scorm Test CM-09ba and CM09-ca

Manifest for 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>

Manifest 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>

Results of test 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 

Results of test CM-09ca Start ADL LMS Test Content Package 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 

In test CM-09ca we start the test, then we are asked to target "Activity 3" from the tree, and then to target "Activity 1". On "Activity 4" we are asked to trigger "Suspend All" button.

I don't know why in test CM-09ba I should resume Activity 1. Should I find the first activity that didn't end with cmi.exit set as "normal" and then terminate it? In CM-09ba the first one would be Activity 2 and due to terminate I would check adl.nav.request that would be previous so Activity 1 would be resumed. And in CM-09ca the first Activity that didn't end with cmi.exit set to "normal" would be Activity 3 and due to terminate it the postaction continue would be triggered? Is this correct?

Thanks in advance for any answers.

1

1 Answers

3
votes

It has to do with the process of entering the content for the second time. CM-09ba issues a Start navigation request, which starts a new attempt on the content (all data wiped, cmi.entry is ab-initio). CM-09ca issues a resume all navigation request which should continue where it left off from the last attempt.

This is listed in the Conformance (Testing) Requirements doc under Appendix A. Here's a link to the 3rd Edition Conformance Requirements: http://www.adlnet.gov/wp-content/uploads/2011/07/scorm.2004.3ed.confreq.v1.0.pdf

Just for a record, the steps are:

CM-09ba

  1. Process a Start nav request >> Identify Activity 1
  2. Process a Choice to Activity 2 >> Identify Acitvity 2
  3. Set adl.nav.request to previous, Process a Continue nav request >> Identify Activity 3
  4. Set adl.nav.request to suspendAll, Process a ExitAll request >> End Sequencing Session
  5. Process a Start nav request >> Identify Activity 1

CM-09ca

  1. process a Start navigation request >> Identify Activity 1
  2. Process a Choice to Activity 3 >> Identify Activity 3
  3. Set adl.nav.request to previous, process Choice to Activity 1 >> Identify Activity 4
  4. Set adl.nav.request to previous, process Suspend All >> End Sequencing Session
  5. Process a Resume All reqeust >> Identify Acitvity 4