Adaptive Learning Service API 2021-1


The Adaptive Learning Service API is a reconfigured GIFT instance that exposes tutoring capabilities to an external system. The external system has the ability to manage sessions, receive learning affect chain events such as learner states and approve scenario adaptation requests.

How to use this API

In order to use the API your application will need to communicate with the same external message bus that the GIFT Gateway module is connecting too and send Protobuf defined messages on that message bus. Essentially there are five main parts of using the API:

  1. your application
  2. Protobuf defined messages
  3. message bus (currently ActiveMQ)
  4. GIFT
  5. training application (e.g. VR Forces/Engage, VBS, Unity)

Read through each section to understand how to setup your configuration and run your first real time assessment using the Adaptive Learning Service API.

GIFT modifications

In a standard GIFT configuration prior to this API existing, the learner controlled course/session execution by interacting with the GIFT Tutor User Interface (TUI) which was served by the Tutor Module. For this configuration an external system is in control of the session. This means that the Tutor module is not even started. To facilitate this a new Gateway module interop plugin was created called the Adaptive Learning Service Interface ( This interop plugin connects to an external messages bus to open bi-directional communication. The external system can then manage sessions and receive events such as learner state updates from GIFT.

The course creator is still needed to author real time assessments in GIFT but other features are currently not desired (e.g. publish courses, numerous other course objects like surveys, lesson material). Therefore a stream-lined Dashboard user experience was developed to allow easier management of real time assessments.

Since there is no Tutor module to host the TUI, the GIFT team session lobby will not be shown. It is up to the external system to provide the team member assignments for the learners involved in the session.

How to enable Real Time Assessment mode

This new configuration was built into the existing GIFT architecture and user interfaces so that future changes could be easily integrated.

To switch between the standard configuration and the real time assessment configuration:
1. Open GIFT\config\ for editing
2. find and change the LessonLevel property to 'Course' for the standard configuration and 'RTA' for this Adaptive Learning Service API configuration.
3. Save
4. Restart GIFT.

Protobuf messages

The proto files located in GIFT at GIFT\config\gateway\externalApplications\AdaptiveLearningServiceBus\ define the structure of the messages that the GIFT Gateway module can send and receive via the connection to the external message bus. These proto files are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages. Protocol buffers currently support generated code in Java, Python, Objective-C, and C++. With our new proto3 language version, you can also work with Dart, Go, Ruby, and C#, with more languages to come.

If your programming in Java, copy the XXX.jar from GIFT\bin\ of a built GIFT instance to your application. For other, Protobuf supported programming languages, use the Protobuf compiler on the GIFT provided proto files at GIFT\config\gateway\externalApplications\AdaptiveLearningServiceBus\ to generated the appropriate code for your application.

STE RTA Test Harness Application

This open-source, Real-time assessment test harness application is meant to be a simple application that can be used to test the API and provide an example of how to use the API. The user interface code has been purposefully separated from the message bus communication logic for an easier understanding of the recommended logic that your external system should implement. Feel free to copy this code for use in your Java application or recreate it in your systems native programming language.

How to use the application

The application is structured so that it is easy to start and use. After starting the message bus and GIFT in RTA lesson level mode, simply double-left click on SteRtaTestHarnessApplication/launch.bat to begin.

If the 'Status' indicator in the top right is green than the connection to the message bus has been established.

There are two tabs that are shown when you first launch the application, Sessions and RTAs. The Sessions tab shows all of the currently running sessions. To attach to a session, click on that session and then click the 'Attach' button which will show a new tab with the events occurring in that session. The RTAs tab lists the available authored courses that exist in the connected GIFT instance. To start a new session, click on a Real Time Assessment and then click 'Start New Session' button which will show a new tab with the events occurring in that session.

Message sequences

Request Available courses

The external system (to GIFT) can request a list of available courses that reside in GIFT and can be loaded into a new session.

External System sends a DomainOptionsRequestProto to GIFT which replies with a DomainOptionsReplyProto.

Request Active Domain sessions

The external system (to GIFT) can request a list of the currently running sessions in GIFT. This is useful for attaching a monitor for a session and closing existing sessions for cleanup.

External System sends a ActiveDomainSessionsRequestProto to GIFT which replies with a ActiveDomainSessionsReplyProto.

Start a new session

The external system (to GIFT) can request that a session be started with an available course in GIFT.

External System sends a DomainSelectionRequestProto to GIFT.
GIFT replies with a TODO

Close Session

The external system (to GIFT) can request that a currently running session in GIFT be closed.

External System sends a CloseDomainSEssionRequestProto to GIFT which replies with a ACKProto or NACKProto.

Real Time Assessment events

During a real time assessment GIFT can send any of the following messages to the external system.

LessonStartedProto - notification that a real time assessment has started.

LearnerStateProto - contains the learner state information such as performance assessment across the entire team organization.

AuthorizeStrategiesRequestProto - GIFT is recommending one or more scenario adaptations be applied and needs authorization before doing so. See section on how to reply to this message.

FilteredSensorDataProto - future implementation

PedagogicalRequestProto - contains one or more instructional strategy requests. This is also sent to the GIFT Domain module to determine which scenario adaptations (Tactics) should be applied based on current domain knowledge of the situation. If there are any scenario adaptations to apply a resulting AuthorizeStrategiesRequestProto will be sent by the Domain module to the External System via the Gateway module for approval.

LessonCompletedProto - notification that a real time assessment has finished.

Authorize Strategies Request

During a real time assessment GIFT will send AuthorizeStrategiesRequestProto to External System when GIFT determines that scenario adaptations should be applied. The External System can authorize GIFT to apply the strategies by sending an ApplyStrategiesProto to GIFT.

AdaptiveLearningServiceDiagram.PNG View - Diagram showing the various components necessary to use the API (87.8 KB) Hoffman, Michael, 05/20/2020 09:13 AM