Search code examples
scormtin-can-apixapi

xAPI / Tin Can to LRS to LMS


I am trying to better understand how xAPI / Tin Can works (I'm going to call it xAPI henceforth)

Previously I was developing for a SCORM 1.2 LMS where there were 'records' such as: Raw Attempts, Status and Raw Score for each content package. The LMS wants to upgrade to xAPI but I am unsure about the theory behind how xAPI works.

On http://tincanapi.com/learning-record-store/ it states that:

The data stored in an LRS can be accessed by LMSs, reporting tools, or other LRSs, and can be stored as individual learning records and/or entire transcripts

Subsequently on http://www.learningsolutionsmag.com/articles/1271/the-xapi-and-the-lms-what-does-the-future-hold it also states that:

An LMS that has a built-in LRS supports the Experience API and also does all the other things LMS products do to manage learning delivery.

The question is,

What exactly does this relationship between an LMS and LRS entail? I need the ability to set the said LMS 'records' from an application that resides outside the LMS, how do you do this using xAPI?

Or maybe I've completely misunderstood the xAPI LRS and it is designed to completely replace LMS records?

Thanks for the help. Links to informative resources on this will also be greatly appreciated.


Solution

  • A LRS is a Learner Record Store which is a series of statements about what the learner did or is doing. Someone can correct me, but I believe Activity Streams were created by Social Media entities around 2006, and different entities adopted/extended it for a flavor of e-learning standards.

    If we deconstruct the two real quick (high level) -

    An LMS was a portal with assignments, reports, maintenence/admin tools, forums etc ... sometimes a LCMS (learning content management system) and other variations of an all-in-one web based solution. AICC was developed during CBT (DOS - Disk Operating System), then browsers (pre-XML). SCORM came shortly after (post XML, pre JSON) around 2001 now living in the world of Browsers (HTML/CSS/JS, Macromedia/Adobe Flash, and others). So with SCORM you are essentially bundling up little portable websites, which later we were able to extend to use content media servers, or CDNs to keep the 'logic' and 'assets' externalized. SCORM was based upon sharing training via a CAM/PIF package, which included a manifest/table of contents, and your HTML files, which covered the packaging portion of the specification. The second part of this was the Runtime. The LMS will expose this runtime to manage the student attempt. This, in a way, is like the 'statements' only that it is the entire student attempt data or CMI object. This includes: scoring, Interactions, Objectives, and other data points. SCORM 2004 Extended this further to make much of the specification manditory, forcing the LMS to support richer Sequence and Navigation capabilities. These were often deemed too complicated, and hard to manage mainly due to a lack of tools and support. But people do use them.

    A LRS via an 'endpoint' is much like you posting statements to a server. There are XML and JSON implementations of this. So in away, when you deploy your 'app' you're passing in a URL for it to communicate with. You can actually convert some of the SCORM centric stuff into an xAPI statement, but keep in mind xAPI doesn't control packaging, or sequence and navigation. All of this is now based on your Application (web, iOS, Android, etc ...) managing this. It mainly allows a non-HTML application to now take advantage of training, since SCORM was primarily a JavaScript communication standard.

    So you have to take a pro/con look at what you're trying to do, how SCORM or xAPI, Activity Streams or some proprietary approach fits your needs.

    A xAPI statement may look something like :

    {
    actor: {
        name: "Learner Name",
        objectType: "Agent",
        account: {
            homePage: window.location.href,
            name: "Learner ID"
        }
    },
    verb: {
        id: "http://adlnet.gov/expapi/verbs/completed",
        display: {
            "en-US": "completed"
        }
    },
    object: {
        id: "commonly a URI",
        objectType: "Activity",
        "definition": {
            type: "http://adlnet.gov/expapi/activities/lesson",
            "name": {
                "en-US": "Some Name"
            },
            "description": {
                "en-US": "Some Description"
            }
        }
    },
    result: {
        completion: true,
        success: true,
        duration: 'PTHMS'
        score: {
            scaled: 0.9        
        }
    }
    

    }

    SCORM, is mainly locating the LMS Runtime (API_1484_11 or API) and then making method calls to Initialize, Set/Get Value, Commit and Terminate. CMI Object (for SCORM 2004) looks a bit more like this once its filled in. https://gist.github.com/cybercussion/4675334