Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript SCORM API commit - async or sync?

We are currently facing a design problem implementing a SCORM LMS System. For example, the API defined a function LMSCommit which must return either 'true' or 'false'. Within that method, our LMS has to make an asynchronous call to a server side service, using a callback function containing the success or failure message in its argument. We claim, that this is simply not possible! Yet we think its worthwhile to ask some pros whether there is something we are missing here.

The SCO (no influence on our part) calls the method like this:

var result = LMSCommit('');

Our LMS (influence on our part) we implement something like this:

function LMSCommit(useless) {
  callOurServiceFunction(function(Status) {
    // what am I supposed to do here in order to put status into
    // the return value of the outer function???
  }

  // fake true as the callourServiceFunction returned immediatly,
  // no idea how I can use Status to create a return value
  return 'true';
}

Are we missing some fancy trick here or is the SCORM Standard simply "disputable"?

like image 817
Silverdust Avatar asked Jun 04 '14 14:06

Silverdust


1 Answers

It's normally implemented using asynchronous code with a fairly worthless "true" value returned. This is well-known by SCORM course developers, who have learned not to rely on the Commit return value for anything important. In this case, all the return value means is that an ajax request was fired.

If you implement Commit using the synchronous approach, the course will appear to lag and stall while waiting for the return value, which will guarantee a ton of complaints and claims that your SCORM engine is broken.

Very frustrating for people in your shoes, but unfortunately, there's nothing you can really do about it.

A little background for those less familiar with SCORM:

SCORM, which is a compilation of specs, not a true standard, received its last major update in 2004. (The updates since then have been minor, no major architectural changes.) This means it's ten years old. SCORM 1.2 is even older. The ADL has announced they are not going to be updating SCORM anymore -- the lid is closed, as they say.

To put things in perspective, the last major SCORM update was released when IE6 was the dominant browser, Google Chrome and the iPhone didn't exist, Yahoo and RealPlayer were relevant, Facebook was a dorm room project, and everyone thought Adobe Flex and RIAs were the way of the future. It's a different world now... if they were to start over, I'm sure they would have gone a different route. This is where xAPI (aka Tin Can) picks up; it uses a different communication model (RESTful API), and can be used to replace SCORM in LMSs that support xAPI. (Note xAPI is still not widely supported yet.)

xAPI links if anyone reading this is interested:

  • http://www.adlnet.gov/tla/experience-api/
  • http://tincanapi.com/
  • http://en.wikipedia.org/wiki/Tin_Can_API
like image 160
pipwerks Avatar answered Oct 03 '22 01:10

pipwerks