SCORM data types¶
The two collections SCORM reports in bulk, as plain serializable types.
Objective¶
A learning objective: an id, and any of score, success and completion. Written through IScormObjectives, which handles the cmi.objectives.n.* index bookkeeping.
success and completion are nullable — SuccessStatus? and CompletionStatus? — and that is the point of the type. They used to be plain enums, which meant every objective asserted a value for both axes whether the course had an opinion or not, and "not set" was indistinguishable from the enum's zero. Omitting a field now says nothing rather than saying no.
ScormInteraction¶
One recorded answer: id, type, the learner's response, the result, optionally the correct response, a timestamp, a latency and a weighting. Written through IScormInteractions.
Two things to know:
Vocabulary differs by standard. A wrong answer is wrong on 1.2 and incorrect on 2004. Set either; ScormStatusMap.InteractionResult translates on the way out.
The correct response is written once per index. An LMS may refuse a second write to an index that already has one, and in practice they do — SCORM Cloud returns 351. The runtimes track whether an index is new and only write correct_responses the first time, so re-answering a question updates the response and the result without tripping over it.