...
Of course, although the API is defined in JavaScript, in almost all cases, the implementation of that API is just going to end up calling down into an API that the LMS exposes. The term 'API' typically conjures up the notion of a set of methods/routines that carry out specific tasks. However, the SCORM API is not really like that. Instead, it consists of just a handful of entry points, and of those there are only really two that are interesting:
LMSGetValue(CMIName) LMSSetValue(CMIName, dataValue)
This pair of entry points works in terms of 'CMINames'. CMI is basically a structured naming convention that allows one to refers to complex hierarchical data sets. To a C# programmer these dotted names look like they refer to a set of nested objects, and for the most part that is a valid interpretation. SCORM effectively defines what each of these objects are and how they are nested inside one another. Supporting the SCORM API is thus, essentially figuring out how to map the SCORM data model onto the data model of the LMS.
In order for SCORM scores to be recordable in LMS in a Course Grade Book or used to trigger a registration completion rule, the Scorm test must output, in addition to a sco id:
SetOutOf
SetUsersTotal
Notes
- Objectives => Exams
- Interactions => Questions
- Context => Registration
...