SCORM and BasicPlayer

Topics: Developer Forum
Mar 6, 2010 at 4:42 AM

I am just using the BasicPlayer in conjunction with my own LMS (no Sharepoint).  When training is complete I want to return to a web page in my LMS.  To do this I have modified the closeFrameset() function in FramesetMgr.js to not do a top.close() but rather

function closeFrameset() {
    top.location = '/training/Complete/' + API_GetFramesetManager().m_attemptId;

When I create a small, test SCORM package which does a SetValue("adl.nav.request", "exitAll") followed by Commit() then the right thing happens.  That is, when the training completes, the BasicPlayer goes away, the database is updated and my LMS is able to read entries from the InterationItem table and also see which Objectives have been achieved.  It seems to work but is modifying closeFrameset the correct way to pass control back to my LMS (I don't want the window to close)? 

I want to move to more complex SCORM packages where I take advantage of simple sequencing.  I am a bit lost as to how to proceed.  Say I have a SCORM package with one organization made up of three items.  Each item is a SCO (created in Captivate).  What runtime data item(s) does the SCO need to set to tell the BasicPlayer that it is finished and to get the postConditionRule to be evaluated?  Is it just SetValue("cmi.completion_status", "completed") ?  Would the ruleCondition be "completed"?    Will that result in the InteractionItem table being updated?  What about LearnerGlobalObjectiveItem?  If the ruleAction is "exitAll" should that invoke closeFrameset() eventually so that my LMS regains contrrol?

I have spent a few days experimenting with different combinations but not much success.  I always feel that I have nearly worked it out but I never quite get it.

Has anyone else experimented with using simple sequencing to control the delivery of a SCORM package under BasicPlayer?  Any thoughts or advice will be gratefully accepted?

Mar 9, 2010 at 12:03 AM

The key for me seems to have been to get Captivate to do a SetValue("adl.nav.request","exit") when the SCO finishes.  From my reading of the extremely dense SCORM 2004 Sequencing and Navigation book this seems to make sense.  BasicPlayer is doing the right think but, by default, Captivate does not.  I am left wondering why a Captivate SCO does not automatically set "adl.nav.request" to "exit" when finished.