Experience API (xAPI)
A specification which defines a communication protocol and data storage format, in particular the one used by cmi5. Familiarity with the concept of an xAPI Statement is assumed, and at least rudimentary understanding of xAPI in general.
In this document, “xAPI” will refer to the technical details from a set of guidelines (not a specification or standard) that were released with a very early version (0.9) of the xAPI specification. These guidelines provide for the common traditional e-learning concepts of packaging (`tincan.xml`), import, and launch of content.
The outermost structure of the content in cmi5. It wraps the pieces of content that are either grouped (into “Blocks”) or are launchable (“Assignable Units”). Implemented as an XML file called `cmi5.xml`.
Assignable Unit (AU)
The launchable piece of content that includes the concepts of completion, pass/fail, score, and duration. Each course requires at least one AU. AU metadata is captured in the Course structure file, but content assets may be included in a package or hosted remotely.
Zip file that includes a Course Structure file and optionally assets used by AUs.
Virtual concept associating a specific learner with a Course.
A “launch container” for the data. A session indicates the start and stop points for an AU. There can be multiple sessions per AU for a Registration. There can only be a single active session per Registration per AU. Sessions can be launched in different modes (Normal (for credit), Browse, or Review). A session may or may not record data towards satisfaction of the AU and is not necessarily the same as an “attempt”.
Setting that captures how a learner moves through the AUs/Blocks of a Course. Determines what is required for an AU to be considered “Satisfied”. Blocks are “Satisfied” when all of their direct descendent AUs or Blocks are “Satisfied”. The Course is “Satisfied” when all of its direct descendent AUs or Blocks are “Satisfied”.
“cmi5 defined” Statements
xAPI Statements that are highly defined by the specification and are tied to the concept of session/registration management. They include a specific cmi5 category Activity for easy detection and access in the LRS statement stream.
“cmi5 allowed” Statements
xAPI Statements that include the session id and potentially additional information included in the launch data but are otherwise custom to an AU.
Summary of cmi5 in Action
- Create Course structure
- Add AUs and Blocks to Course
- Import Course into LMS
- Registration is created in LMS at Course level for a specific Learner
- AUs are launched in a Session for a Registration which may occur in a new window or existing one, a “Launched” Statement is recorded
- AU starts execution by retrieving LRS authentication credentials and various other launch data (including the launch mode), an “Initialized” Statement is recorded
- AU manages content interaction, depending on mode and Learner actions it may record “Passed” or “Failed”, and/or “Completed” Statements
- If the above Statements satisfy the “Move On” criteria then the LMS records a “Satisfied” Statement for any Block or Course that has been satisfied
- AU may record “cmi5 allowed” Statements, must occur between “Initialized” and “Terminated” Statements but otherwise can be intermixed with other “cmi5 defined” Statements
- AU ends execution, a “Terminated” Statement is recorded indicating the end of the Session
- AU loads return URL as provided in launch data by LMS
- LMS may determine that a Session has been concluded without a “Terminated” statement having been recorded, at which point it records an “Abandoned” Statement
- Multiple sessions in various launch modes may occur for the same Registration
How does cmi5 compare to SCORM and xAPI?
What SCORM provides that cmi5 doesn’t have:
- A player or client side API
- Definition of how to store interaction data
What cmi5 provides that xAPI didn’t:
- Statement definitions for specific events (this is a really important one)
- Specified data points for existing LMS concepts (pass/fail, completion, duration, score)
- Multiple modules of content in a single package
- Multiple distinctive launches of the same content
- Multiple defined launch modes