HOME ➔ SUPPORT ➔ Community ➔ General CourseLab issues ... Setting SCORM cmi.exit
Setting SCORM cmi.exit
  View type:
I am very impressed with CourseLab but I am having a problem with SCORM 2004 courses in Saba and moodle.

CourseLab does not seem to be setting cmi.exit.

In moodle the CourseLab close button does not seem to have any effect - the module screen remains displayed. Clicking the moodle Exit closes the course but neither set cmi.exit and re-entering the module resumes at the start.

The javascript function SCORM_Save contains:

SCORM_SetValue("cmi.exit", g_bLmsCmiExitSuspend ? "suspend" : "");

The variable g_bLmsCmiExitSuspend appears to be always set to false.

The behaviour in Saba appears to be similar with CourseLab not setting cmi.exit, but when the course is exited Saba is prompting for "Exit and Resume Later" or "Exit and Finish". Choosing "Exit and Resume Later" does set cmi.exit and the course resumes correctly.

Can you shed any light on this behaviour.
As far as I know, moodle 1.9 is not fully scorm2004 compliant
I publish courselab in scorm 1.2 instead, which works well with moodle. You're right, the close button does not have any effect so I don't actually use it and I've put in the instructions to click instead the "exit activity" link. Regardless, all still works well even if the user simply closes the browser.
Just so it's clear to everyone this is the variable that sets the persistance between sessions, it gives the LMS the context of the user quitting the module. That is it tells (OR IT CAN TELL) the LMS if you have completed, the module.
It also affects what the LMS sets the cmi.entry variable to for the sco to read on re-entry to the module.
AND it also affects the way that 2004 sequencing works on re-entry.

If not completed the variable is set to "suspend" then next session you return to where you left off, if it's a timed session and you've run out of time then it's set to "Timeout".,if completed it's set to "logout" which indicates you've finished the module and so through the available values for ending a module.
AFAIK Moodle will or can run the module within it's own environment, it uses the manifest to generate the optional page menu which also flags page or component level completion setting the appropriate CMI values according to the variables you've set up for the module.
If the module is linked through an external call to a web address then the module supplies the variables using the api wrapper.

Courselab seems to be telling the host system to suspend which in 2004 means the next session should pick up where is was left. It shouldn't be passing the value as "FALSE" I think this will be an invalid message in this context, null is possible though. In this case the LMS should use the Mastery score and the lesson status to determine completion, then again it might not as this is a slightly optional behaviour!

This is a bit of an oddity when you aren't using the MASTERY score & lesson status variables under SCORM 2004. In this case the LMS is free to interpret the value for CmiExit, even if you also have the lesson status set as say incomplete, as anything it likes. It's a valid behaviour in SCORM 2004 so depends on how that LMS is hard wired to interpret values.
The scorm 2004 definitions state that
"If the cmi.exit is set to “normal”, “logout”,”time-out” or “” (empty characterstring) then the SCOs learner attempt ends. The SCOs Run-Time Environment data model element values of the current learner session will NOT be available if the SCO is relaunched. "

Which variables are you using to score and track user completion with?

Question for the development team... Does the [X] close the module and trigger the API wrapper to push the variables to the LMS SCORM VLE.
Do we explicitly need to set the CmiExit value with some script somewhere, for example onUnload="doSetValue('cmi.exit','suspend'); doCommit();doTermi
Thanks for your response Nick.
Sorry but I wasn't clear enough there.

The problem is with exiting part-way through a course and then trying to resume. CourseLab always seems to set cmi.exit to empty ("") so when the learner re-enters the course, they are put back to beginning. CourseLab is not passing "false" for cmi.exit, but is internally testing a flag (which is always false) to see if it should return "suspend" or "". This internal variable always seems to be false so cmi.exit is always empty.

Score and completion seem to work OK. I am really trying to get this to work with Saba but have been doing some testing with moodle. CourseLab looks to be sending all values correctly except for cmi.exit.

I did change the javascript code in lms.js to force setting cmi.exit to "suspend". Suspend/resume then worked correctly in moodle.

[X] does push the variables to the lms and does lmsfinish etc, but the display continues to show the current slide. I am not too concerned about this - provided the lms "exit" function triggers the correct behaviour, I can just remove the [X] from within CourseLab.

Message options
No additional options