# TLA CMM Level 1 - Instrumenting Learning Activities with xAPI and Connecting to an LRS

There are numerous use cases for how the TLA Sandbox might be used to support testing and evaluation of the tools, products, or services required to achieve Level 1 of the TLA Capability Maturity Model (CMM). These use cases include the use of existing learning activities in the TLA Sandbox to generate xAPI statements to better understand xAPI and the value it brings to reporting and analytics. Other use cases include the ability to test various learning activities to better understand the data they are able to generate using xAPI. This includes the test and evaluation of different xAPI data strategies that are encapsulated within different xAPI Profiles.

# TLA Sandbox Learning Activities

The TLA Sandbox includes a few different learning activities and a small sample of demo content. Each learning activity generates xAPI statements using one or more xAPI Profiles. xAPI Profiles are used to help guide the implementation of xAPI into specific types of learning activities or for specific domains. concepts (vocabulary terms), statement templates, and patterns that describe the relationship between xAPI statements and govern how xAPI statements are implemented into an activity. Data dashboards are not currently available but are being developed to help evaluate xAPI data strategies.

Additional information on both the xAPI standard (opens new window), the xAPI Profile Specification (opens new window), and other information can be found through the xAPI's Technical Advisory Group (opens new window).

Many learning activities in the TLA Sandbox include their own content management system as an integrated part of their solution. A content server is also available for housing web content such as videos, PDFs, and other commonly available formats. This content is typically used to support many of the web-based learning tools and technologies. Available learning activities include:

  • The Moodle Open Source Learning Platform (opens new window) is used to deliver over 33 million courses to over 250 million learners across more than 250 countries. The TLA Sandbox uses the latest version accredited to run on government networks by USALearning. While more recent versions of Moodle exist, the TLA Sandbox works to maintain parity with the accredited versions to best replicate the capabilities that are available to run on government networks. Moodle does not natively support xAPI. The xAPI logstore (opens new window) plugin is used to emit xAPI statements for different interactions. This version of Moodle also uses a USALearning approved version of the logstore. This logstore has been modified to support the generation of the Master Object Model (MOM) conformant messages in addition to a multitude of other xAPI statements. The public version of Moodle is available here (opens new window).

  • Pervasive Learning System (PERLS) (opens new window) is an adaptive, multiplatform, microlearning application that uses different instructional strategies to improve and enhance self-regulated learning. PERLS has both a mobile application front-end and a back-end content management system based on Drupal (opens new window). The front-end works as a recommendation tool to provide the learner with different forms of content (e.g., articles, video, flash cards, knowledge checks, and more). Recommendations change over time based on the learner's preferences, competency, and level of effort. The back-end content management systems allow authors (e.g., instructors) to create, attach, curate, and tag instructional materials.

  • Personalized eBook for Learning (PeBL) (opens new window) is a personalized eBook platform designed to leverage many of the common capabilities available on mobile devices (e.g., accelerometer, camera, GPS). PeBL is an open-source project (opens new window) that merges eLearning with mobile learning technologies to adapt the delivery of content in response to a learner's needs. PeBL tracks learner behavior using xAPI performance data to identify different learner pathways throughout each eBook. Administrative tools include an enterprise bookshelf, access management, and role-based management of learner activities (e.g., instructors may create assignments).

  • The cmi5 Player (opens new window) is a web service application that provides functionality for importing cmi5 course packages, launching assignable units (AU), proxying xAPI requests to an external LRS, doing registration and session management tasks, and various other functionalities necessary to implement the features of the cmi5 specification into an LMS. The cmi5 Player provides a rudimentary set of course management tools that allow the import and management of cmi5 course packages. The Player MVP itself does not “launch AUs” directly. Instead, retrieves a URL which can be used to launch into the AU. Because the cmi5 Player is intended to be integrated with an LMS, it depends on the LMS to provide this URL to the learner (depending on the type and modality of the learner experience).

The learning activities listed above manage their own content. In addition to these systems, an xAPI-enabled video player and a PDF viewer are available in the TLA Sandbox. Both of these systems can be used to deliver content that is hosted on other sites as long as that hosting site has Cross Origin Resource Sharing (CORS) (opens new window) enabled. CORS is an HTTP-header-based mechanism that allows a server to indicate any origins (e.g., domain, schema, or port) other than its own from which a browser should permit loading of resources.

  • The xAPI Video Player (opens new window) was developed to test, evaluate, and demonstrate the power of video analytics that can be collected via the xAPI Profile. The xAPI Video Profile documents the vocabulary concepts, extensions, statement templates, and patterns required to implement xAPI consistently across any type of video player with an API (e.g., YouTube, Vimeo, Kaltura, Brightcove). The xAPI Video Player within the TLA Sandbox generates a unique URL for every piece of content but is also capable of generating xAPI statements from YouTube videos.

  • The xAPI PDF Viewer (opens new window) was developed to test, evaluate, and demonstrate the power of analytics that can be derived from a learner's interaction with any range of documents (e.g., manuals, technical papers, schematics). The PDF Viewer in the TLA Sandbox is a rudimentary example of how a PDF viewer should work.

The ADL Initiative's content server has been used to store audio, video, PDF, and Unity3D-driven HTML 5 applications for delivery by connected TLA learning activities. ADL Initiative stakeholders using the TLA Sandbox are welcome to use any of the existing content available on the content server. ADL Initiative stakeholders can also set up a separate instance to manage specific types of content. A separate server is recommended to enable configuration management of each TLA Sandbox user's content. Please see the appropriate vendor documentation or contact the ADL team for more information on the services, containers, and port details for Moodle and the ADL Initiative's content server.

To access any of the learning activites listed above, please contact the TLA Technical Support to get an account set up. Additional details for using the different learning activities are located at their public websites. PERLS documentation is available from the ADL team and will be emailed upon request.

# Instrumenting your own Learning Activities with xAPI

TLA Sandbox users are encouraged to connect new types of learning activities, tools and technologies into the sandbox. To connect learning activities to the TLA, by necessity, you will need to instrument your systems with xAPI. There are hundreds of available resources to help you instrument your own learning activities (or content) with xAPI. The ADL Initiative staff is available to answer any implementation questions you might have. To get started, we recommend you visit some of the following xAPI resources:

Beyond the implementation of xAPI into different activities or content, the ADL Initiative provides different tools to support the design, development, test, and evaluation of xAPI. Among these resources are both a hosted solution and an open-source project available on the ADL GitHub (opens new window) site.

  • The xAPI Wrapper (opens new window) is a convenient JSON-compatible xAPI statement wrapper developed to help simplify the communication to a Learning Record Store (LRS). This JavaScript file can be included with web-based xAPI clients to simplify the process of connecting and communicating to an LRS. At a minimum, the xAPI Wrapper needs to know the URL endpoint of the LRS, and in most instances, will also require authorization information. The xAPI Wrapper is equipped with a default logging function that writes a message to console.log. This may be turned off by setting log.debug = false.

  • xAPI Statement Viewer (opens new window) pulls xAPI statements from an LRS using the xAPI Wrapper. The viewer retrieves and displays xAPI statements from an LRS, and is a good way to visualize the xAPI statements being sent from your learning activity to its intended LRS. The xAPI statement viewer project is available on the ADL GitHub (opens new window).

  • ADL Sample LRS (opens new window) is a Reference Implementation of an xAPI-conformant LRS. The sample LRS is different from the TLA Sandbox LRS but includes a modest reporting dashboard, statement validators, and links to other xAPI tools. Use the ADL Initiative Sample LRS (opens new window) if you're looking to setup an LRS for testing purposes (outside of the TLA sandbox)

  • xAPI Dashboards (opens new window) are also available. The live implementation is connected to the ADL Initiative Sample LRS. This can be set up and modified through the xAPI Dashboard GitHub (opens new window) page. There are also links to other live instances. This project simplifies the process for extracting meaningful data from xAPI statements. The Collection Class allows developers to run SQL-like queries, filters, and aggregations over xAPI data. The xAPI Dashboard Class generates numerous types of charts and visualizations based on the aggregated xAPI data.

  • DATASIM (opens new window) is an open-source xAPI statement generator designed to simulate a range of learning activities and generate the resulting xAPI statements at the scope and scale required by the DoD. This tool is used to evaluate xAPI Profiles that guide the implementation of xAPI across different types of learning activities. The DATASIM Server GitHub (opens new window) page includes the required software to use DATASIM as a command line application or as a library embedded into a Java Virtual Machine application. A web-based User Interface (opens new window) is also available on GitHub. This capability integrates with the DATASIM server to make it easier for users to interact with the DATASIM UI.

  • DAVE (opens new window) is an open-source means of creating domain-based xAPI learning data dashboards. It provides a framework for analysis and visualization, which aligns with xAPI, xAPI Profiles and the TLA. The DAVE GitHub (opens new window) page includes the required resources to stand up and integrate DAVE to suit your own needs. DAVE is not currently connected to the TLA Sandbox, but the ADL Initiative is working to enable dashboards that run against the different TLA LRS solutions.

  • The xAPI Profile Server (opens new window) provides a library of xAPI Profiles that is intended to be shared across DoD and the broader educational community. It includes authoring tools to allow profiles to be created or modified as needed and an API for performing basic operations such as importing, updating, and validating profiles. Each profile is governed by a community of practice that helps maintain and update their respective profiles. Profiles are listed as 'draft', 'published', or verified'. Draft profiles can only be viewed by the working group that governs the development of that profile. Published or Verified profiles can be viewed by anyone with an account.

  • An xAPI wrapper for the Unity game engine (opens new window) provides a library to help generate xAPI statements from within a Unity project. This library works with the /statements API and uses the json.net (opens new window) library to handle the JSON serialization. Three different versions of the json.net library are included with the xAPI wrapper to best suit your Unity deployment. To communicate with an LRS, the wrapper needs to know which LRS you intend to use. The xAPIWrapper class is the interface for sending and receiving xAPI statements

The ADL Initiative resources listed above are freely available and are intended to support developers as they work to implement xAPI across different projects. Most commercial LRS solutions offer a more polished user experience, enhanced dashboards, and analytics out-of-the-box, and an assortment of other features that are not included in these utilities.

# POST and GET statements from an LRS

The TLA Sandbox LRS accepts POST and GET statements to its endpoint for retrieving and sharing data. By convention, this endpoint ends with /xAPI/statements. For example, the ADL Initiative’s public LRS is hosted at <https://lrs.adlnet.gov/> but the actual endpoint that engineers would use to POST and GET data is <https://lrs.adlnet.gov/xAPI/statements>. The xAPI Wrapper (opens new window) tool automatically appends statements to the end of any given URL when being used for POST and GET commands.

To send and receive statements from the TLA sandbox LRS, send xAPI-compliant HTTP (opens new window) requests to the Reference Implementation’s LRS’s endpoint.




"X-Experience-API-Version": "1.0.3",
"Authorization": <Authorization>

For a simple tool to send and receive statements, see the xAPI Wrapper (opens new window) on GitHub. There is also a basic tutorial (opens new window) available on the ADL Initiative’s GitHub page (opens new window) that teaches how to pull and visualize xAPI statements.

# LRS Services and Ports

Please contact the TLA Technical Support team for information on LRS services and ports used.