SCORM 2004, 3rd edition Global Objectives

253 views
Skip to first unread message

Michael Lund

unread,
Mar 18, 2016, 3:25:31 PM3/18/16
to eLearning Technology and Development
I have a course developed in Captivate which consists of a number of individual SCOs published to SCORM 2004, 3rd edition. I used Reload Editor to create a SCORM 2004 Multi-SCO package, which works great. I added intra-sco navigation using ADL.NAV.REQUEST Choice calls and also added a "Menu SCO" at the beginning of the course. This also works great and the course runs in our LMS and in SCORM Cloud and tracks perfectly fine.

The next step was to include SCO status information on the menu SCO so the student easily can see which SCOs are completed and which are not. Since our LMS does not support SCORM 2004, 4th edition I can't use data buckets, so I figured it should be possible to achieve this using Shared Global Objectives instead. However I'm not having much luck..

On each item in the manifest I set up a Primary Objective and mapped this to a local Objective like this:
<imsss:objectives>
            <imsss:primaryObjective satisfiedByMeasure="false" objectiveID="kap02global">
              <imsss:mapInfo targetObjectiveID="cptest02" readSatisfiedStatus="true" readNormalizedMeasure="true" writeSatisfiedStatus="true" writeNormalizedMeasure="false" />
            </imsss:primaryObjective>
</imsss:objectives>

As far as I can figure out this should be enough. I can see that the Primary objective is being fulfilled in the LMS and that the objectiveID "kap02global" actually contains the value "passed". However it doesn't seem to be mapping this to the global variable (cptest02) and if I try and access the objectives from my Menu SCO I get a SCORM error.

I'm using Captivates SCORM templates so this is the JavaScript call I am using:

SCORM2004_CallGetValue("cmi.objectives.cptest02.id");

This returns this error in SCORM Cloud:

 [15:15:45.228] GetValue('cmi.objectives.cptest02.id') returned '' in 0 seconds
[15:15:45.228] Checking for GetValue Error
[15:15:45.228] SCORM ERROR FOUND - Set Error State: 401 - The data model element 'cmi.objectives.cptest02.id' does not exist.

I then tried the array approach with this call: SCORM2004_CallGetValue("cmi.objectives.0.id");

But that gave me this error:

- [15:15:47.041] GetValue('cmi.objectives.1.id') returned '' in 0 seconds
[15:15:47.041] Checking for GetValue Error
[15:15:47.041] SCORM ERROR FOUND - Set Error State: 301 - The Objectives collection does not have an element at index 1, the current element count is 0.


It seems like the objectives are not really global since I get an element count of 0 from my menu SCO.

Am I going about this in the wrong way? Is it not possible to set up an objective on a SCO and have a menu SCO read the status?

If anyone can shed some light on this I would really appreciate it.

Sincerely,
Michael


Here is the full imsmanifest:

 
<?xml version="1.0" encoding="UTF-8"?>
<!--This is a Reload version 2.5.5 SCORM 2004 Content Package document-->
<!--Spawned from the Reload Content Package Generator - http://www.reload.ac.uk-->
<manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" xmlns:imsmd="http://ltsc.ieee.org/xsd/LOM" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3" xmlns:imsss="http://www.imsglobal.org/xsd/imsss" xmlns:adlseq="http://www.adlnet.org/xsd/adlseq_v1p3" xmlns:adlnav="http://www.adlnet.org/xsd/adlnav_v1p3" identifier="MANIFEST-E7F2D0F489D0567C895045ECC0A33A52" xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd http://ltsc.ieee.org/xsd/LOM lom.xsd http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_v1p3.xsd http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd http://www.adlnet.org/xsd/adlseq_v1p3 adlseq_v1p3.xsd http://www.adlnet.org/xsd/adlnav_v1p3 adlnav_v1p3.xsd">
  <metadata>
    <schema>ADL SCORM</schema>
    <schemaversion>2004 3rd Edition</schemaversion>
  </metadata>
  <organizations default="ORG-2D36D071176C388D2ADE5C6C34612864">
    <organization identifier="ORG-2D36D071176C388D2ADE5C6C34612864" structure="hierarchical">
      <title>Captivate SCORM test 01</title>
      <item identifier="cpMenuTest" identifierref="RES-37849BA609760C43CA9B8E89F67ED528" isvisible="true">
        <title>Menu</title>
      </item>
      <item identifier="cp01" identifierref="RES-D5BA7A19AA52B0170DD0E07B12A7CC52" isvisible="true">
        <title>Kap01</title>
        <imsss:sequencing>
          <imsss:rollupRules objectiveMeasureWeight="1.0000" />
          <imsss:objectives>
            <imsss:primaryObjective satisfiedByMeasure="false" objectiveID="kap01global">
              <imsss:mapInfo targetObjectiveID="cptest01" readSatisfiedStatus="true" readNormalizedMeasure="true" writeSatisfiedStatus="true" writeNormalizedMeasure="false" />
            </imsss:primaryObjective>
          </imsss:objectives>
          <imsss:deliveryControls completionSetByContent="true" objectiveSetByContent="true" />
        </imsss:sequencing>
      </item>
      <item identifier="cp02" identifierref="RES-AE78B862CF783D634E21BD0B6438BF4F" isvisible="true">
        <title>Kap02</title>
        <imsss:sequencing>
          <imsss:rollupRules objectiveMeasureWeight="1.0000" />
          <imsss:objectives>
            <imsss:primaryObjective satisfiedByMeasure="false" objectiveID="kap02global">
              <imsss:mapInfo targetObjectiveID="cptest02" readSatisfiedStatus="true" readNormalizedMeasure="true" writeSatisfiedStatus="true" writeNormalizedMeasure="false" />
            </imsss:primaryObjective>
          </imsss:objectives>
          <imsss:deliveryControls completionSetByContent="true" objectiveSetByContent="true" />
        </imsss:sequencing>
      </item>
      <item identifier="cp03" identifierref="RES-5D2E8E23DAD0361B223742534C264982" isvisible="true">
        <title>Kap03</title>
        <imsss:sequencing>
          <imsss:rollupRules objectiveMeasureWeight="1.0000" />
          <imsss:objectives>
            <imsss:primaryObjective satisfiedByMeasure="false" objectiveID="kap03global">
              <imsss:mapInfo targetObjectiveID="cptest03" readSatisfiedStatus="true" readNormalizedMeasure="true" writeSatisfiedStatus="true" writeNormalizedMeasure="false" />
            </imsss:primaryObjective>
          </imsss:objectives>
          <imsss:deliveryControls completionSetByContent="true" objectiveSetByContent="true" />
        </imsss:sequencing>
      </item>
      <item identifier="cp04" identifierref="RES-5BDA0788E97F5139487B9FD97AF54F4F" isvisible="true">
        <title>Kap04</title>
        <imsss:sequencing>
          <imsss:rollupRules objectiveMeasureWeight="1.0000" />
          <imsss:objectives>
            <imsss:primaryObjective satisfiedByMeasure="false" objectiveID="kap04global">
              <imsss:mapInfo targetObjectiveID="cptest04" readSatisfiedStatus="true" readNormalizedMeasure="true" writeSatisfiedStatus="true" writeNormalizedMeasure="false" />
            </imsss:primaryObjective>
          </imsss:objectives>
          <imsss:deliveryControls completionSetByContent="true" objectiveSetByContent="true" />
        </imsss:sequencing>
      </item>
      <imsss:sequencing>
        <imsss:controlMode choice="true" choiceExit="true" flow="true" forwardOnly="false" useCurrentAttemptObjectiveInfo="false" useCurrentAttemptProgressInfo="false" />
        <imsss:rollupRules objectiveMeasureWeight="1.0000" />
      </imsss:sequencing>
    </organization>
  </organizations>
  <resources>
    <resource identifier="RES-37849BA609760C43CA9B8E89F67ED528" adlcp:scormType="sco" type="webcontent" href="CaptivateSCORMMenu/multiscreen.html">
      <file href="CaptivateSCORMMenu/multiscreen.html" />
    </resource>
    <resource identifier="RES-D5BA7A19AA52B0170DD0E07B12A7CC52" adlcp:scormType="sco" type="webcontent" href="CaptivateSCORMTest01/multiscreen.html">
      <file href="CaptivateSCORMTest01/multiscreen.html" />
    </resource>
    <resource identifier="RES-AE78B862CF783D634E21BD0B6438BF4F" adlcp:scormType="sco" type="webcontent" href="CaptivateSCORMTest02/multiscreen.html">
      <file href="CaptivateSCORMTest02/multiscreen.html" />
    </resource>
    <resource identifier="RES-5D2E8E23DAD0361B223742534C264982" adlcp:scormType="sco" type="webcontent" href="CaptivateSCORMTest03/multiscreen.html">
      <file href="CaptivateSCORMTest03/multiscreen.html" />
    </resource>
    <resource identifier="RES-5BDA0788E97F5139487B9FD97AF54F4F" adlcp:scormType="sco" type="webcontent" href="CaptivateSCORMTest04/multiscreen.html">
      <file href="CaptivateSCORMTest04/multiscreen.html" />
    </resource>
  </resources>
</manifest>







John Campbell

unread,
Mar 18, 2016, 11:12:47 PM3/18/16
to elearning-technolo...@googlegroups.com
Your menu SCO has to map all those globals back to local objectives.  So, you are mapping the primaries of the content SCOs to the global space, but never reading them back into the Menu SCO.

You need a bunch of these types  after the primaryObjective in the Menu.

   <imsss:primaryObjective objectiveID="obj-primary" satisfiedByMeasure="false"/>
   <imsss:objective objectiveID="obj-local" satisfiedByMeasure="false">
                  <imsss:mapInfo targetObjectiveID="obj-global" readSatisfiedStatus="true"/>
   </imsss:objective>
  ...


take care,

jpc


--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.
Visit this group at https://groups.google.com/group/elearning-technology-and-development.
To view this discussion on the web visit https://groups.google.com/d/msgid/elearning-technology-and-development/03ac1e87-b824-47ca-86f5-1e8802824b14%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Michael Lund

unread,
Mar 21, 2016, 10:56:49 AM3/21/16
to eLearning Technology and Development, j...@alumni.rice.edu
Hi John,

Thanks a lot! That worked perfectly and once I mapped these on the Menu SCO everything fell into place and worked as it should.

I was under the impression that once you had created a global objective you could access these from any SCO without mapping them to a local objective.

Thank you once again!

Sincerely,
Michael

take care,

jpc


To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and-development+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages