PeopleMatter Support: 1-877-354-2266
Monday-Friday 8:30 AM-8:30 PM EST
PM-support@snagajob.com

Knowledge Base

Hi! We've moved the Knowledge Base to make it better for you. Check it out here.

This site isn't being updated anymore but will be available until January 24.

I need help with…

SCORM Content Integration Guide

Andrew -

PeopleMatter LEARN supports SCORM 1.2 single SCO packages. See “Appendix B,” “Sample imsmanifest.xml file,” for more details.

 Importing Content

  • There can only be one SCO included in the imsmsnifest file
  • Courses must be zipped up before they can be loaded into PeopleMatter LEARN
  • Make sure that the zipped course that you are importing contains an imsmanifest.xml file at the root of the zip

 

Content Communication

SCORM content uses the following API methods:

  • LMSInitialize ("") – Opens communication session
  • LMSSetValue ("name", "value") – Send a value to the API
  • LMSGetValue("name") – Retrieves a value from the API
  • LMSCommit("") – Sends data from API to LMS
  • LMSFinish("") – Commits data and closes communication session
  • LMSGetLastError("") – Retrieves the error code for last API call
  • LMSGetErrorString(error_code) – Retrieves error text for the last API call

It is recommended that the content call LMSCommit(“”), when LMSSetValue(“”) is used, and before the session is closed. The content must call Finish(“”) before it closes in order for data to be saved to PeopleMatter LEARN.

 

Commonly Asked Questions about SCORM

 

I want to…

SCORM

Notes

Mark a course completed

cmi.core.lesson_status set to “passed”

“completed”

OR

cmi.core.score.raw set to 0 or greater

OR

cmi.core.score.raw set equal to or greater than the mastery score in the imsmanifest.xml file.

cmi.core.score.raw set to 0 or greater

(this only works if there is no mastery score set in the imsmanifest.xml file)

Submit a “raw score” to LEARN

 

cmi.core.score.raw

 

PeopleMatter LEARN will mark the course passed or failed based on the raw score being compared to the Mastery Score in the imsmanifest.xml file)

 

Submit MinScore/MaxScore to LEARN. These values have no effect on scoring or completing a course.

cmi.core.score.min

cmi.core.score.max

 

Return to where I left off in the course

cmi.core.lesson_location or

cmi.suspend_data

Bookmarking is not an automatic function of SCORM. Code must be written to set and process the bookmark in the courseware.

 

cmi.core.lesson_location or

cmi.suspend_data would need to be populated with data that your course will recognize and respond to when the student begins their next session.

Track the time that the student takes to complete the course

Set cmi.core.session_time

 

Read cmi.core.total_time

 

See appendix B

Limit the time someone has to take a course

 

//allow 20 minutes for this SCO

timeAllowed = 0000:20:00.00

If( api.GetValue(“cmi.core.total_time) >= timeAllowed){

//alert the student has run out of time and perform the proper function(s) in the SCO based on your needs

}

 

 

To move a course to the completed tab in LEARN, set the lesson status to passed or completed OR set the score to any number equal or greater than the mastery score.

Lesson Status

Once a course has been moved to the completed tab in LEARN, the SCO may change the status of the course to incomplete, but the incomplete status will not be recorded in PeopleMatter and the course will not be removed from the completed list of courses.


Set the cmi.core.lesson_status to completed or passed

A course will be moved to the “completed” tab in the Course Library, marked 100% and you will receive this completion dialog.

               

 

Course marked as 100%

               

Course moved to the completed tab

  

 

Setting Score in PeopleMatter

If there is no mastery score in the imsmanifest.xml file, then LEARN assumes the passing score to be 0. Once LEARN receives a value for cmi.core.score.raw equal to 0 or greater, the course will respond the same as if lesson status was set to passed or completed. See the above “Set the cmi.core.lesson_status to completed, passed” for details.

Set the cmi.core.lesson_status to failed or incomplete 

Setting the course to incomplete or failed will show no change in the course progress. 

                   

Setting the course raw score (cmi.core.score.raw) to a number less than the mastery score will show no change in the course progress (as seen above) , but will set the course lesson status to failed.

Potential Issues

If your SCO requires a quiz or assessment, PeopleMatter LEARN requires that the quiz or assessment be packaged within the SCO.

 

Cross Domain – all content that is loaded into PeopleMatter LEARN via a SCORM zip package must be contained within the SCORM zip package and not reference content on other websites or servers.

Development Tools

Use the Publish as SCORM 1.2 option

For Quizzes built with these tools DO NOT “send resume data”

 

SCORM Technical Documentation


THE SSCORM 1.2 Final Edition

Method

Parameters

Return Value

LMSInitialize

function (“”)

“true”,”false”

LMSFinish

function(“”)

“true”,”false”

LMSCommit

function(“”)

“true”,”false”

LMSGetValue

function(data_model_element)

Data value as string

LMSSetValue

function(data_model_element, value)

“true”,”false”

LMSGetLastError

function(“”)

Error code as string

LMSGetErrorString

function(error_code)

Error description as string

* data_model_element = any element from the chart below

* value = any valid value for the associated data_model_element

* error_code = the return value from LMSGetLastError


 

Data Model Element

Returns

Details

cmi.core._children

CMIString255

 

student_id,student_name,lesson_location,credit,lesson_status,entry,score,total_time,lesson_mode,exit,session_time,suspend_data,launch_data

 

Used to determine which data model elements are supported by the LMS. SCORM 1.2 did not require that the LMS support all data model elements

cmi.core.student_id

CMIIdentifier

Unique system identifier for each student.

cmi.core.student_name

CMIString255

Last name, first name, middle initial. Spaces in the name must be preserved.

cmi.core.lesson_location

CMIString255

Used to store the position where the student left off in the SCO. Used for bookmarking.

cmi.core.credit

CMIVocabulary(Credit)

“credit”,

“no-credit”

returns credit when the course in not in the completed tab, does it return credit when it is in the completed tab?

Used by the LMS to indicate whether this SCO is being taken for credit.

cmi.core.lesson_status

CMIVocabulary(Status) “passed”,

“failed”,

“completed”, “incomplete”,

”browsed”,

“not attempted”

 

The current status of the SCO.

cmi.core.entry

CMIVocabulary(Entry)

“ab-initio”,

“resume”,

“”

 

Indicates whether the student has entered the SCO before.

cmi.core.score._children

CMIString255

"raw,min,max"

Used to determine the supported elements.

Note: cmi.score.raw is the only mandatory child. 

cmi.core.score.raw

CMIDecimal or CMIBlank

Indication of the performance of the student during his last attempt on the SCO. This score may be determined and calculated in any manner that makes sense to the designer.

cmi.core.score.min

CMIDecimal or CMIBlank

The minimum score the student could have achieved.

cmi.core.score.max

CMIDecimal or CMIBlank

The maximum score or total number that the student could have achieved.

cmi.core.total_time

CMITimespan

always returns “null” even when session_time is set

Accumulated time of all the student’s sessions in the SCO.

cmi.core.lesson_mode

CMIVocabulary(Mode)

“browse”,

“normal”,

“review”

Identifies the SCO behavior desired after launch.

cmi.core.exit

CMIVocabulary(Exit)

“time-out”,

“suspend”,

“logout”,

“”

An indication of how or why the student left the SCO.

cmi.core.session_time

CMITimespan

This is the amount of time in hours, minutes, and seconds that the student has spent in the SCO at the time they leave. This represents the time from the beginning of the session to the end of a single use of the SCO.

cmi.suspend_data

CMIString4096

Unique information generated by the SCO during previous uses that is needed for the current use. This is normally data that is created by the SCO and stored by the LMS to pass back to the SCO the next time the SCO is run.

cmi.launch_data

CMIString4096

Unique information generates at the SCO’s creation that is needed for every use. Without this information, a SCO may not execute.

cmi.comments

CMIString4096

Freeform feedback from the SCO. Used to allow the SCO to send comments to the LMS about the SCO. Could be used to collect student entered comments.

cmi.objectives

N/A

Identifies how the student has performed on individual objectives covered in the SCO.

cmi.objectives._children

CMIString255

"id,score,status"

The children keyword is used to determine all of the elements in the cmi.objectives category that are supported by the LMS.

cmi.objectives._count

CMIInteger

The count keyword is used to determine the current number of records in the cmi.objectives list.

cmi.objectives.n.id

CMIIdentifier

An internally, developer defined, SCO specific identifier for an objective.

cmi.objectives.n.score

N/A

An objective can contain an associated score.

cmi.objectives.n.score_children

CMIString255

"raw,min,max"

The children keyword is used to determine all of the elements in the cmi.objectives.n.score category that are supported by the LMS.

cmi.objectives.n.score.raw

CMIDecimal or CMIBlank

Numerical representation of the student performance after each attempt on the objective. May be uncompressed raw score.

cmi.objectives.n.score.max

CMIDecimal or CMIBlank

The maximum score or total number that the student could have achieved on the objective.

cmi.objectives.n.score.min

CMIDecimal or CMIBlank

The minimum score that the student could have achieved on the objective.

cmi.objectives.n.status

CMIVocabulary(Status)

“passed”,

“completed”,

“failed”,

“incomplete”,

“browsed”,

“not attempted”

The status of the SCO’s objective obtained by the student after each attempt to master the SCO’s objective.

cmi.student_data

N/A

Information to support customization of a SCO based on the student’s performance.

cmi.student_data._children

CMIString255

"mastery_score,max_time_allowed,time_limit_action"

The children keyword is used to determine all of the elements in the student_data category that are supported by the LMS.

cmi.student_data.mastery_score

CMIDecimal

The passing score, as determined outside the SCO. When the SCO score is greater than or equal to the mastery score, the student is considered to have passed, or mastered the content.

cmi.student_data.max_time_allowed

CMITimespan

The amount of time the student is allowed to have in the current attempt on the SCO.

cmi.student_data.time_limit_action

CMIVocabulary(Time Limit Action)

“exit, message”,

“exit, no message”,

“continue, message”,

“continue, no message”

Tells the SCO what to do when the max_time_allowed is exceeded.

cmi.interactions

N/A

An interaction is a recognized and recordable input or group of inputs from the student to the computer.

cmi.interactions._children

CMIString255

"id,objectives,date,time,type,weighting,student_response,result,latency,correct_responses"

The children keyword is used to determine all of the elements in the cmi.interactions category that are supported by the LMS.

cmi.interactions._count

CMIInteger

The count keyword is used to determine the current number of records in the cmi.interactions list. Used to determine the number of interactions stored by the LMS.

cmi.interactions.n.id

CMIIdentifier

Unique identifier for an interaction.

cmi.interactions.n.objectives

N/A

Identifies how the student has performed on individual objectives covered in the interactions.

cmi.interactions.n.objectives._count

CMIInteger

The count keyword is used to determine the current number of records in the cmi.interactions objectives id list.

cmi.interactions.n.objectives.n.id

CMIIdentifier

Developer created identifier for an objective. Used to identify the objective that the interaction is for.

cmi.interactions.n.time

CMITime

Must be in this format 00:30:52.08 not the 4 0's format 0000:30:52.08

Identification of when the student interaction was completed.

cmi.interactions.n.type

CMIVocabulary

(Interaction)

“true-false”,

“choice”,

“fill-in”,

“matching”,

“performance”,

“sequencing”,

“likert”,

“numeric”

Indication of which category of interaction is recorded. The type of interaction determines how the interaction responses should be interpreted.

cmi.interactions.n.correct_responses

N/A

Indicates the correct responses for the interactions.

cmi.interactions.n.correct_responses._count

CMIInteger

The count keyword is used to determine the current number of records in the cmi.interactions correct responses list.

cmi.interactions.n.correct_responses.n.pattern

CMIFeedback

Description of possible student responses to the interaction. There may be more than one correct response, and some responses may be more correct than others.

cmi.interactions.n.weighting

CMIDecimal

Interactions vary in importance. The weighting factor which is used to identify the relative importance of one interaction compared to another.

cmi.interactions.n.student_response

CMIFeedback

Description of possible responses to the interaction. There may be more than one correct response, and some responses may be more correct than others.

cmi.interactions.n.result

CMIVocabulary

(Result)

“correct”,

“wrong”,

“unanticipated”,

“neutral”,

“X.X” – (CMIDecimal)

How the system judges the described response.

cmi.interactions.n.latency

CMITimespan

The time the presentation of the stimulus to the completion of the measurable response.

 

 

 

 

 

 

Sample Code

Sample imsmanifest.xml file with a mastery score (passing score) of 80%

 

<?xml version="1.0" encoding="utf-8"?>

<manifest identifier="man_001" version="1.0" xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2" xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsproject.org/xsd/imscp_rootv1p1p2 imscp_rootv1p1p2.xsd http://www.imsglobal.org/xsd/imsmd_rootv1p2p1 imsmd_rootv1p2p1.xsd http://www.adlnet.org/xsd/adlcp_rootv1p2 adlcp_rootv1p2.xsd">

            <metadata>

                        <schema>ADL SCORM</schema>

                        <schemaversion>1.2</schemaversion>

            <organizations default="org_1">

                        <organization identifier="org_1">

                                    <title>Course Title</title>

                                    <item identifier="activity_001" isvisible="true" identifierref="RES">

                                                <title>Activity Title</title>

                                                      //this course has a mastery score of 80%

                                                <adlcp:masteryscore >80</adlcp:masteryscore>

                                    </item>

                        </organization>

            </organizations>

            <resources>

                <resource identifier="RES" type="webcontent" href="index_lms.html" adlcp:scormtype="sco">

                        <file href="index_lms.html"/>

                </resource>

            </resources>

</manifest>

 

api.LMSSetValue(“cmi.core.score.raw”,”99”);

//based on the mastery score of 80% above this code would set the course to completed in the PeopleMatter LMS

 

Session Time and Total Time

Setting Session Time

timer = new Date();//create a timer as soon as the SCO loads

//call setTime() at least once before the SCO is finished

 

function setTime()

{

     var timeNow = new Date();

     var n = timeNow.getTime() - this.timer.getTime();

     v = MillisecondsToCMIDuration(n,scormVersion)//convert to SCORM time

    api.LMSSetValue(“cmi.core.session_time”,v);

}

 

function MillisecondsToCMIDuration(n,sv)

 {

//Convert duration from milliseconds to 0000:00:00.00 format

            var hms = "";

            var dtm = new Date();         

             dtm.setTime(n);

            var h = "000" + Math.floor(n / 3600000);

            var m = "0" + dtm.getMinutes();

            var s = "0" + dtm.getSeconds();

            var cs = "0" + Math.round(dtm.getMilliseconds() / 10);

            hms = h.substr(h.length-4)+":"+m.substr(m.length-2)+":";

            hms += s.substr(s.length-2)+"."+cs.substr(cs.length-2);

            return hms;

}

 

Reading Total Time

 

var strTotalTime = api.LMSGetValue(“cmi.core.total_time”);

// strTotalTime will contain the accumulation of all the last session times set for all sessions the student has attempted

 

Comments

-->