Almost every application using Engine follows a common workflow for delivering content, no matter which learning standards are used. The primary milestones for a successful Engine implementation generally are:
- Setting up Engine's database and web application
- Importing courses into Engine
- Launching courses for the learner
- Tracking the learner's results
Before we dive into the technical details of each of these, we recommend reading through this brief description of the most crucial concepts of an Engine integration and the roles that they will play in your application.
Keeping Application State
Even though Engine does keep track of your courses and registrations, we strongly recommend that you do not rely on Engine as the primary record of your content and learner progress. Your application should keep records of your registrations and courses in its own database tables as well. This enables you to track and report on data in your own system instead of pulling data from Engine every time it’s needed. This will make your system faster and more robust against system failures.
Tenancy refers to the ability of a single web application to serve multiple groups of users (tenants) as if they were interacting with their own separate instance of the application, all while keeping the data that belongs to these tenants separate.
For example, an LMS might have several organizations as customers, each of whom have their own set of learners, courses, and registrations. With each of these organizations defined as a tenant in Engine you are able to keep clear boundaries between their data, and configure Engine's behavior differently for each of them as needed.
Many of our customers have no need for this type of segregation, though, in which case we simply collect all of the data within a single tenant. Engine is designed to work with your application's tenancy model whatever it may be.
Engine identifies tenants by a case-insensitive name of up to 64 characters. The value that you use as a tenant's name should be something that will never change, as we do not provide a way to rename tenants through the API. For this reason, we often see customers use a value like a randomly generated string or guid instead of the company's actual name.
Engine will create a tenant named
default during the installation process. You are welcome to use this as you get started with the API. Otherwise, you will need to use the
appManagement resource in the API to create a new tenant.
Note: Engine does not currently have a reliable method for moving data out of or between tenants. At any point, you can create new tenants, but you will not be able to split up existing tenants or bring disparate tenants together into one. Keep this in mind when first deciding on your tenancy strategy.
Courses are the individual packages of learning content that can be delivered to a learner. Currently, Engine allows for the import of SCORM, AICC, xAPI, and cmi5 packages. Courses are stored on a per-tenant basis, and cannot be shared or copied between tenants.
A registration is an association of a unique learner and a course. Any time that a learner in your system needs to take a course, a registration would need to be created. All reporting of a learner's launch and interaction with a course is done in the context of the registration.
As part of creating a registration you will be required to include a unique learner id, first name, and last name. This information is often used by courses to generate things like completion certificates or personalized in-course messages.
While Engine does keep track of this learner information you pass as part of registration creation, it does not consider learners a primary resource. As such, there is not an API that allows for the management of learners. The one exception to this is the ability to remove all data for a learner for GDPR purposes.
IDs Are Yours
In Engine, importing a course requires providing a course ID. Creating a registration requires providing a registration ID and a learner ID.
It’s your system’s job to create and manage these IDs. In Engine, they’re stored as strings up to 255 characters long. Feel free to use integers or GUIDs or any other format you’d like. Many customers use their own database primary keys as the IDs in Engine.
The course IDs and registration IDs are used in other API calls to affect those resources, so keeping track of them is important.
To help manage your Engine integration, there is an administration tool that will allow you to explore some of the data stored in your Engine instance. With this tool, you can see course and registration details, manage API and xAPI credentials, create tenants, preview courses, review registration launch history, and more.
The admin tool is located in Engine under
defaultui/admin/. If you are hosting Engine at
http://localhost/RusticiEngine, then you would access the admin tool at
The admin tool will prompt for a tenant name, an ID, and a Secret. If a tenant name is not specified, then the admin tool will use the
default tenant. To sign in, just provide the same credentials that you would use to access the API. (See the server setup section for details on configuring these credentials).