Want my LMS to be SCORM compatible - scorm

I have an LMS written in ASP.net (VB) which is AICC compatible. I would like the system to be compatible with SCORM. I am using Articulate to create the Course contents but struggling to find a way to communicate between the contents and the LMS. I know that imsmanifest.xml holding the course details and the javascript files in lms folder are the communication port. Now if I want to track the user activity in course, what should I do?

You need to implement the SCORM run-time environment to capture user activity. This involves launching the content in a frameset or a new window and then providing a JavaScript API that allows the content to Get and Set elements defined by the SCORM data model. If you are implementing SCORM 2004, you will also need to create a sequencing engine that inputs the data exchanged at run-time into a rules interpretation engine to determine how to navigate the learner through the course. For more detail, check out the technical part of SCORM Explained and drill down into the various sections.

Related

what are the technical differences between implementing SCORM vs xAPI?

I want to integrate eLearning to an existing system that I already have, I have been reading a lot about two standards SCORM and xAPI but all what I read was theoritical differences about pros and cons of each standard, anyhow I want to have a technical differences from a developper perspective about implementing those standards in the system, what are the differences by implementing those standards from a developping view?i Just want headlines of the process of developping those standards. any references or documentation about that would also be very helpful.
and would it be doable or logical to integrate one standard in the system and later on integrate the other one? for example SCORM then later if needed I integrate xAPI?
Let me start with the integration part. Yes you can do SCORM and later integrate xAPI, though that might require retooling the SCORM course, or LMS to do the xAPI part. This is done in practice. A lot of what I do is integrate existing SCORM ecosystems with xAPI and LRSs.
As for differences in SCORM and xAPI, here's some high-level info.
SCORM is a set of specifications that defines the way to package content, the way to have your content report data, and the way an LMS launches and manages SCORM content and data. xAPI is a specification that defines a REST style API and JSON data format to track interactions/activity that happened in content.
As Andrew said, SCORM content finds an embedded API object in the browser DOM and uses that to communicate very structured and specific data to an LMS. xAPI uses a REST HTTP API to communicate various data in a well defined format.
Without some creative programming, SCORM typically is content that is delivered via a browser from a Learning Management System to the client. Typically that is in the form of HTML, images, videos. xAPI can be those types of things as well but since the API is HTTP/REST-like, the support of unmanaged content - simulators, phone apps, games - is a little easier.
SCORM's data model is very clearly defined in the specification and not normally extended. xAPI's data format is defined, but the actual data is much looser and open to the needs of the developer.
SCORM has been around since about the year 2000 in various versions. It is well supported in LMSs and content development tools. And many in the eLearning space know it. xAPI is newer. Support is growing as well as the number of folks who understand it, but it is still less supported than SCORM.
One final thing of note, SCORM specs never defined a way to get data out of the LMS once the SCO attempt has ended. This made reporting and metrics difficult to do without getting the LMS vendor to build those features in. xAPI defines a GET endpoint to retrieve data (This might not be performant when you might have 100ks to millions of data points, but you can get the data back out - caveats about permissions aside) Some LRS vendors do add reporting and analytics platforms, as well as some adding ways to get your data into BI or data analysis tools.
There's more you'll find as you get into the space but that's some of the things off the top of my head.
I would recommend you read the xAPI spec first mainly because it is more easily consumed. Then look at SCORM - it has different versions (1.2, 2004 2-4th editions).
As for implementing content,
SCORM: Figure out the version to build to, create the SCOs (content that reports data to the LRS), have that find the API embedded in the HTML dom, use the defined methods (Initialize, Terminate, SetValue, GetValue) to communicate with the LMS, then package it all up in a zip with an XML manifest and support xml schema, deploy to the LMS.
xAPI: Create your content, preferably support an xAPI launch mechanism like TinCan Launch, make REST calls to the LRS's xAPI endpoint using something like Fetch or Requests, etc, host/package/deploy as you determine.
Looking at the specs is the driest but the authoritative way to learn about the different specs. There are also some very good articles and videos out there by various vendors and implementors.
The main technical difference is that SCORM uses a javascript API to communicate between a course in a window or frame wrapped by the LMS. xAPI uses a restful API to communicate with an LRS over HTTP.

AJAX in SCORM content

I'm new to SCORM, I'm planning to implement an export-to-SCORM feature.
Currently, playing the content (which is not a SCORM player) is like a small HTML5 web app, and as part of its implementation, it uses features like AJAX for example to lazy load some files (JS files, CSS files).
I was thinking to just have a way to use the same player code when creating the SCORM course.
Are SCORM courses required to work offline or from disk?
If that's the case, using the techniques, like the lazy load I described above, won't work.
I imagine there could be some SCORM player mobile apps which store and load SCORM course on the device and a web-server is not available so that AJAX could work. (Or are these mobile apps actually implementing a local web-server within themselves in order to play the SCORM content?)
AFAIK, SCORM 1.2 or 2004 doesn't specifically put any restriction whether AJAX could be used in the presentation layer of the SCORM content, but in practice, when content is played in a player it obviously matters.
SCORM courses are not required to work offline or from disk (depending on what that means), which isn't to say they can't. SCORM courses are expected to load the initial resource from the location that they've been imported to, so while AJAX to a different location could work there are issues with security (credentials can't be secured or trusted), 3rd party loading, etc. Unless you were going to AJAX back to the loading host to retrieve content shipped with the package which should work and there are mechanisms that can be used to increase security for content retrieval.
The one offline implementation of a SCORM player that I'm familiar with (Rustici Software's) requires the packages to be all inclusive because there is no web server available. Again, that isn't to say that it couldn't be implemented with one, just that I'm not aware that such a thing has been implemented.

How can I reference a training course from another LMS?

I've been asked to make a course that is available in one cloud-based learning management system (brightspace) available in other learning management systems. The intent is that someone would open the course in the third party learning management system (LMS), like Moodle, and then from what I've read, an iframe would load that would contain the course as hosted by the original LMS (Brightspace).
I've been researching this all day and I haven't made any headway. It seems like there is oauth between the LMS' but I can't work it out.
How can I create a SCORM package that will contain an iframe to a central LMS? And, is there any standardised LMS/SCORM protocol that handles authentication or something like that?
Thanks!
Embedding a SCORM package inside another SCORM package is not the way to go. The solution for this problem as intended by the makers of SCORM would be to export the SCORM package and import it in the third party LMS, because thats what SCORM is all about. However, this is obviously not what you want to achieve.
In general, a SCORM package is simply a packaged website (with a manifest), which requires a JS API to be provided by the embedding LMS. So basically, you can do "anything" inside a SCORM package, e.g. creating an iframe, calling functions in the parent browsing context, open a popup etc., as long as it is not prohibited by web security mechanisms such as the same origin policy.
In theory, if your LMS would serve the content of the package "as is" and without authentication, i.e. you have a deep-link to the start page (think index.html) inside the scorm package (and the LMS would not send protective headers such as X-Frame-Options), you would be generally able to embed this page in any iframe in the web, thus within another SCORM package. The remaining problem would be the same origin policy, which would prevent the package sitting in the child frame from calling the API in the parent frame. There might be some tricks to work around this, e.g. by using a reverse proxy under the same origin that forwards to the other domain, but this will most likely be not practical or prohibited by other mechanisms. If you can work around this, you would still have to manually pass-through/forward the API calls from the embedded package up to your LMS's API adapter. Overall, this approach is not really practical/feasible.
In general, the SCORM does not deal with authentication. Please have a look at the IMS Learning Tools Interoperability (LTI) specification for that purpose. It allows to launch a Tool/Content hosted by another party and provides backchannels for e.g. grades.
I think the guys from Rustici Software provide a hosted SCORM RTE that can be launched via LTI, you may want to have a look at that, too...
Cross domain fun with SCORM
Another quick work around to "my content is on another domain" is to reference the JS/CSS on the media / content server, but include an index (player or launch) html file on the intended LMS which can bring those in without the cross-domain issues.
So your re-packaged SCO would just have the necessary launch file but inside that instead of the "css/styles.css" you're pointing to "//domain.com/path/to/css/styles.css". Repeat the same for JavaScript files.
It may be possible the content is a little more complicated than just statically defined assets in a HTML document. If that is the case it may take some further adjustments.
Wiki here has some extra tips https://github.com/cybercussion/SCOBot/wiki
I'll also update I added a cross domain feature to the SCOBot RTE which utilizes IFRAME postMessage api's to enable cross domain communication from domain A to domain B. You would have to be able to place the controller on domain B with the content.
GL

Web Player Scorm previewer?

I'm very new to SCORM and i'm not entirely sure if i'm even asking this question correctly so please pardon my newness. I have been tasked with implementing a SCORM "previewer" functionality into a website we're building.
I won't need any of the extended features that i understand are provided by the SCORM wrapper such as LMS integration and testing, but simply the ability to preview the images and flash files as they were created by the author of the SCORM package.
We have additional requirements that prevent us from using an external cloud-based solution.
Is this possible? Am i completely misunderstanding the way this works?
The SCORM specification defines a Content Aggregation Model (CAM) and RunTime Environment (RTE). The CAM isn't relevant to your question but the RTE might. The RTE defines how SCORM content communicates with an LMS.
It sounds like in your 'previewer' application, you don't want to store any data in the LMS. For some SCORM packages, this will mean there is no work to do at all as you don't need to implement anything to store no data!
Other SCORM packages will expect a response from the LMS and will error if they don't receive one. I suspect this is what is happening in your case and why you have been tasked with creating a previewer application. You will therefore need to work out which SCORM data the package is sending, catch those requests and return the expected response. See scorm.com for an overview of the Run Time Environment.
If you need a more generic solution that will work with any SCORM package, I fear you will need a complete SCORM implementation. This will be a LOT of work to do yourself. I would normally recommend SCORM Cloud but you say you need an internally hosted solution. If this preview application is likely to be well used and/or customer facing, you should take a look at SCORM Engine. If not, perhaps consider hosting an Open Source LMS such as Moodle?

Is there a CMS similar to Drupal with a rule engine editor and workflow task manager included?

I'm looking to develop a website that collects information that a user provides about their company, analyzes it based on industry trends I've saved into the system, and does something based on the information received (i.e. make recommendations, creates reports, sends out emails, and/or asks the user additional questions) using my industry knowledge. In addition to needing a rule engine to to provide information back to a user, I also will need to initiate workflow tasks that are assigned to my employees, vendors, or back to the user based on the rule engine logic.
I understand the business logic behind my idea, and how to use content management systems such as drupal. However, I'm not sure how to integrate my business logic, rules based on external market trends, and workflow technology into a content management system I can update as things change. I am looking for a solution that has a user interface to allow me to update the questions required (such as editing content types in Drupal), update my consultative knowledge database, and update the rules on how to apply them without having to hire a programmer when the business landscape changes.
In my research, I understand drupal rules module is not a true rete rules engine - so I don't believe I can use.
The concept of combining Drupal's content types (for collecting user information and editing fields), Jboss Drools' rule engine (for creating rules), and salesforce.com's workflow editor (for creating and assigning workflow tasks) is what I'm looking for. Is there anything out there that brings all of this together, in one web based user/admin solution that can be set up and used similar to Drupal's UI experience? In addition, am I even on the right track as far as the best way accomplish?
The Rules module is the de-facto standard Drupal rule engine. Could you elaborate about how it is not fit for your tasks.
A lot of contrib module supports it out of the box (ie. they provide new actions, event types, etc.). The Maestro module provides a generic workflow engine, with support for various tasks.

Resources