Learning Standards

At Rustici Software, our hope is that we have read and implemented the specifications of important learning standards so that you don't have to. We work hard to be the AICC, SCORM, and xAPI experts so that you can implement our software without the need to become a standards expert. Our product design philosophy boils down to: it just works.

We implement three important learning standards in Engine: AICC, SCORM, and xAPI. Our support for AICC and SCORM spans more than a decade, so we focus our discussion in this section on the implementation of xAPI, as it represents a sea change from the implementations of AICC and SCORM.

The Experience API (xAPI, or the Tin Can API)

The Experience API (or xAPI) is a learning standard that seeks to resolve some of the acknowledged shortcomings of AICC and SCORM by providing a means to track learning experiences across a much broader variety of platforms and sources.

xAPI enables tracking experiences by describing a way to record statements of the basic form <I> <did> <this>.

Key concepts of xAPI:

There are a variety of REST resources described by xAPI, and Engine implements each of them fully. Using Engine as your LRS, though, should enable a common approach across all learning standards to basic import and launch functionality (where applicable, depending on the nature of activity providers), as well as a flexible approach to reporting.

Generally, we would expect reporting based on data in the LRS to occur against a companion data store designed to support reporting requirements rather than for ad hoc queries to be run directly using xAPI.

Engine also implements a companion document to the core xAPI specification that describes a packaging and launch mechanism. This is the basis of our import and launch mechanics for xAPI. (N.B. This approach will eventually be superseded by cmi5.)

Since the xAPI standard emerged from Project Tin Can, there are still references to "Tin Can" or "the Tin Can API" in Engine's implementation.

Your instance of Engine, by default, implements the API at a /TCAPI endpoint.

Configuration

In order to use xAPI in Engine, you must first uncomment or add SystemHomepageUrl to your Engine settings file. Because xAPI requires that some IDs exist as URIs, we require that a URL be configured for the circumstances where Engine has responsibility for creating xAPI IDs. Our recommendation is that this setting be unique to and descriptive of your application. So, for instance, the SystemHomepageUrl for our hosted LRS in Cloud is simply "https://cloud.scorm.com/".

Statement Forwarding

Statement forwarding provides the means to automatically forward statements sent from one LRS to another. Applications include:

In order to use statement forwarding, set TinCanStatementForwardEnabled to "true" in your Engine settings file.

It is also necessary to create a record in Engine's database for each forwarding pair. For security purposes, we strongly recommend creating unique credentials for source and target LRSs. You will need to add a row to TinCanForwardingMap.

The following example would add an entry to forward statements from a local Engine instance to Cloud:

INSERT INTO TinCanForwardingMap (pair_id, source_url, source_username, source_password, target_url, target_username, target_password, update_by)
VALUES (1, 'http://localhost/ScormEngineInterface/TCAPI/statements', 'foo', 'b@r', 'https://cloud.scorm.com/TCAPI/my_app_id', 'bar', 'f00', 'manual')

N.B. The source_url must point to the statements resource, but the target_url must point to the base /TCAPI endpoint (with any extra endpoint information).