I received this question from a customer today:
Is there a mechanism for content to force the Scorm API Adapter to send data back to the LMS without calling LMSFinish()? We did find a reference to LMSCommit() on the web but wanted to confirm with you that this would work.
Well, it sure sounds like that's the right answer, doesn't it? Contextually, it's important to understand that this question comes from one of our SCORM Engine customers (LMS side of things).
Technically, according to the standard, the LMS's behavior isn't substantially impacted by the call of LMSCommit. (LMSCommit, in particular, as part of SCORM 1.2, has little effect. In the SCORM Engine, when Commit (the SCORM 2004 comparable) is called, we invoke our look ahead sequencer, which might change the available links in the course menu. But that's SCORM 2004 only.)
Some LMS's are more substantially impacted though. Some wait for a call to LMSCommit to actually push data to the server. Others won't ever persist data unless that call is made.
In the SCORM Engine, the decision about when to send data from the browser to the server is governed entirely by the commit frequency set in the SCORM package properties. This invokes a method that assesses if there's any dirty data, and if it finds any, pushes it to the server.