Prodding SCO Usage

The Prodding SCO is a very useful tool that allows manual calling of scorm commands, when deployed within an LMS.

This can be useful for a number of reasons, including: testing LMS capabilities, testing specific sequences of actions or scorm calls, etc.

You can download the scorm prodder from here: http://www.ostyn.com/standards/scorm/samples/proddingSCOwrap.htm

Make sure to download the appropriate package for the LMS you're deploying into.

Once the package is up and running in the LMS, launch it as you would any other course.

The prodding SCO has a number of features - this article will cover standard use cases.

RTE Info

Just by opening the prodder in an LMS you can get a lot of very useful info about the LMS. That info is found on the first tab in the prodder window.

Scripted Tests

Scripted tests let you run a series of scorm commands to quickly get a handle on what the LMS does when specific commands are issued.

Standard Scripted Tests

These are tests that cover the most common course use-cases. It can be used to quickly identify core areas of concern for the LMS in question. Copy and paste the test text that follows into the second tab of the prodder, and either "step" through the script line after line, or, "play" the script all at once. You'll see a log of useful info pop up in the text area below.

For SCORM 1.2

LMSInitialize("")
LMSGetValue("cmi.core.entry")
LMSGetValue("cmi.core.lesson_mode");
LMSSetValue("cmi.core.exit","suspend")
LMSGetValue("cmi.core.lesson_status")
LMSGetValue("cmi.core.score.raw")
LMSSetValue("cmi.core.lesson_status","incomplete")
LMSGetValue("cmi.objectives._children")
LMSGetValue("cmi.interactions._children")
LMSGetValue("cmi.core.total_time")
LMSCommit("")
LMSGetValue("cmi.objectives._count")
LMSSetValue("cmi.objectives.0.id","objective1")
LMSSetValue("cmi.objectives.0.status","incomplete")
LMSSetValue("cmi.objectives.0.status","completed")
LMSGetValue("cmi.objectives._count")
LMSSetValue("cmi.objectives.1.id","objective2")
LMSGetValue("cmi.objectives.1.score._children")
LMSSetValue("cmi.objectives.1.score.raw","94")
LMSSetValue("cmi.objectives.1.status","passed")
LMSGetValue("cmi.objectives._count")
LMSCommit("")
LMSGetValue("cmi.objectives._count")
LMSGetValue("cmi.interactions._count")
LMSSetValue("cmi.interactions.0.id","interaction1")
LMSSetValue("cmi.interactions.0.type","choice")
LMSSetValue("cmi.interactions.0.objectives.0.id", "objective2")
LMSSetValue("cmi.interactions.0.student_response","a")
LMSSetValue("cmi.interactions.0.result","correct")
LMSSetValue("cmi.interactions.0.latency","00:02:00")
LMSGetValue("cmi.interactions._count")
LMSSetValue("cmi.interactions.1.id","interaction2")
LMSSetValue("cmi.interactions.1.type","choice")
LMSSetValue("cmi.interactions.1.objectives.0.id", "objective2")
LMSSetValue("cmi.interactions.1.student_response","b")
LMSSetValue("cmi.interactions.1.result","correct")
LMSSetValue("cmi.interactions.1.latency","00:05:00")
LMSGetValue("cmi.interactions._count")
LMSCommit("")
LMSGetValue("cmi.interactions._count")
LMSSetValue("cmi.core.session_time", "01:05:59")
LMSSetValue("cmi.core.lesson_status", "completed");
LMSSetValue("cmi.core.exit","suspend")
LMSCommit("")

For SCORM 2004 (3rd Edition, but should work for any 2004 version)

Initialize("")
GetValue("cmi.entry")
GetValue("cmi.mode");
SetValue("cmi.exit","suspend")
GetValue("cmi.completion_status")
GetValue("cmi.success_status")
SetValue("cmi.completion_status","incomplete")
GetValue("cmi.objectives._children")
GetValue("cmi.interactions._children")
GetValue("cmi.total_time")
Commit("")
GetValue("cmi.objectives._count")
SetValue("cmi.objectives.0.id","objective1")
SetValue("cmi.objectives.0.completion_status","incomplete")

SetValue("cmi.objectives.0.completion_status","completed")

GetValue("cmi.objectives._count")
SetValue("cmi.objectives.1.id","objective2")
SetValue("cmi.objectives.1.description","This objective has a description!")
GetValue("cmi.objectives.1.score._children")
SetValue("cmi.objectives.1.score.raw","94")
SetValue("cmi.objectives.1.completion_status","completed")
SetValue("cmi.objectives.1.success_status","passed")
GetValue("cmi.objectives._count")
SetValue("cmi.objectives.2.id","objective3")
GetValue("cmi.objectives.2.score._children")
SetValue("cmi.objectives.2.score.raw","20")
SetValue("cmi.objectives.2.completion_status","incomplete")
SetValue("cmi.objectives.2.success_status","failed")
GetValue("cmi.objectives._count")
Commit("")
GetValue("cmi.objectives._count")
GetValue("cmi.interactions._count")
SetValue("cmi.interactions.0.id","interaction1")
SetValue("cmi.interactions.0.description","Interaction descriptions are hands-down the best part of SCORM 2004.")
SetValue("cmi.interactions.0.type","choice")
SetValue("cmi.interactions.0.objectives.0.id", "objective1")
SetValue("cmi.interactions.0.learner_response","a")
SetValue("cmi.interactions.0.result","correct")
SetValue("cmi.interactions.0.latency","PT0H2M0S")
GetValue("cmi.interactions._count")
SetValue("cmi.interactions.1.id","interaction2")
SetValue("cmi.interactions.1.type","choice")
SetValue("cmi.interactions.1.objectives.0.id", "objective1")
SetValue("cmi.interactions.1.learner_response","b")
SetValue("cmi.interactions.1.result","correct")
SetValue("cmi.interactions.1.latency","PT0H5M0S")
GetValue("cmi.interactions._count")
SetValue("cmi.location", "bookmark")
GetValue("cmi.location")
Commit("")
GetValue("cmi.interactions._count")
SetValue("cmi.session_time", "PT1H5M59S")
SetValue("cmi.completion_status", "completed");
SetValue("cmi.exit","suspend")
Commit("")