Skip to content

Instantly share code, notes, and snippets.

@cybercussion
Last active August 29, 2015 14:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cybercussion/11192402 to your computer and use it in GitHub Desktop.
Save cybercussion/11192402 to your computer and use it in GitHub Desktop.
Prerequisite style imsmanifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3" xmlns:imsss="http://www.imsglobal.org/xsd/imsss"
xmlns:adlnav="http://www.adlnet.org/xsd/adlnav_v1p3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:adlseq="http://www.adlnet.org/xsd/adlseq_v1p3" xmlns:lom="http://ltsc.ieee.org/xsd/LOM"
xmlns:imss="http://www.imsglobal.org/xsd/imsss"
xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_v1p3.xsd http://www.adlnet.org/xsd/adlseq_v1p3 adlseq_v1p3.xsd http://www.adlnet.org/xsd/adlnav_v1p3 adlnav_v1p3.xsd http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd http://ltsc.ieee.org/xsd/LOM lom.xsd"
identifier="ims_sequencing_objectives" version="1.0.0" xmlns="http://www.imsglobal.org/xsd/imscp_v1p1">
<metadata>
<schema>ADL SCORM</schema>
<schemaversion>2004 3rd Edition</schemaversion>
</metadata>
<!-- Since we're using global objectives, make sure to set them to not be global to system-->
<organizations default="ORG-001" adlseq:objectivesGlobalToSystem="false">
<organization identifier="ORG-001">
<!-- Activity 1 -->
<title>ims_sequencing_objectives</title>
<item identifier="ACT-001" identifierref="RES-001">
<title>SCOBot-QUnit1</title>
<imsss:sequencing IDRef="COMMON_SEQ_RULES">
<imsss:sequencingRules>
<!-- If you also wanted to limit the number of attempts -->
<imsss:preConditionRule>
<imsss:ruleConditions>
<imsss:ruleCondition condition="attemptLimitExceeded" />
</imsss:ruleConditions>
<!-- Can not choose -->
<imsss:ruleAction action="disabled" />
</imsss:preConditionRule>
</imsss:sequencingRules>
<imsss:limitConditions attemptLimit="1" /> <!-- attemptAbsoluteDurationLimit="" set if max_time_allowed -->
<imsss:objectives>
<!-- My Understanding is SCO1_SATISFIED will assume the scoring of the SCO, then you can continue to SCO 2 after the preCondition is met -->
<imsss:primaryObjective objectiveID="SCO1_SATISFIED" satisfiedByMeasure="true">
<!-- Since the QUnit will score 0.75 I'm setting this to 0.6 -->
<imsss:minNormalizedMeasure>0.6</imsss:minNormalizedMeasure>
<imsss:mapInfo targetObjectiveID="com.cybercussion.SCOBot.ACT-001" readSatisfiedStatus="true" writeSatisfiedStatus="true" readNormalizedMeasure="true" writeNormalizedMeasure="true" />
</imsss:primaryObjective>
</imsss:objectives>
</imsss:sequencing>
<!-- This will hide the navigation, which even though below choice is true and flow is true below (contradictory). Basically ACT-001, has to request to advance. -->
<!--adlnav:presentation>
<adlnav:navigationInterface>
<adlnav:hideLMSUI>previous</adlnav:hideLMSUI>
<adlnav:hideLMSUI>continue</adlnav:hideLMSUI>
</adlnav:navigationInterface>
</adlnav:presentation-->
</item>
<!-- Activity 2 -->
<item identifier="ACT-002" identifierref="RES-002">
<title>SCOBot-QUnit2</title>
<imsss:sequencing IDRef="COMMON_SEQ_RULES">
<imsss:sequencingRules>
<!-- If you also wanted to limit the number of attempts. You'd think this would work but it only seems to
work for the first one. Online documentation seems to point to checking the referencedObjective -->
<!--imsss:preConditionRule>
<imsss:ruleConditions>
<imsss:ruleCondition condition="attemptLimitExceeded" />
</imsss:ruleConditions-->
<!-- Can not choose -->
<!--imsss:ruleAction action="disabled" />
</imsss:preConditionRule-->
<!-- New way to disable this SCO. Kinda the same thing... shrug. Essentially, this objective is satisfied. -->
<imsss:preConditionRule>
<imsss:ruleConditions>
<imsss:ruleCondition referencedObjective="SCO2_SATISFIED" condition="satisfied" />
</imsss:ruleConditions>
<imsss:ruleAction action="disabled" />
</imsss:preConditionRule>
<imsss:preConditionRule>
<!-- Essentially, if ACT-001 is not satisfied or status is unknown, disable this ACT-002 -->
<imsss:ruleConditions conditionCombination="any">
<imsss:ruleCondition referencedObjective="PREVIOUS_SCO_SATISFIED" operator="not" condition="satisfied" />
<imsss:ruleCondition referencedObjective="PREVIOUS_SCO_SATISFIED" operator="not" condition="objectiveStatusKnown" />
</imsss:ruleConditions>
<!-- Can not choose -->
<imsss:ruleAction action="disabled" />
</imsss:preConditionRule>
</imsss:sequencingRules>
<imsss:limitConditions attemptLimit="1" /> <!-- attemptAbsoluteDurationLimit="" set if max_time_allowed -->
<imsss:objectives>
<imsss:primaryObjective objectiveID="SCO2_SATISFIED" satisfiedByMeasure="true"> <!-- satisfiedByMeasure="true" this will make a default cmi.scaled_passing_score = 1 unless you specify minNormalizedMeasure-->
<!-- Since the QUnit will score 0.75 I'm setting this to 0.6 -->
<imsss:minNormalizedMeasure>0.6</imsss:minNormalizedMeasure>
<imsss:mapInfo targetObjectiveID="com.cybercussion.SCOBot.ACT-002" readSatisfiedStatus="true" writeSatisfiedStatus="true" readNormalizedMeasure="true" writeNormalizedMeasure="true" />
</imsss:primaryObjective>
<!-- This is the objective which will read the prerequisite activity ACT-001. -->
<imsss:objective objectiveID="PREVIOUS_SCO_SATISFIED">
<imsss:mapInfo targetObjectiveID="com.cybercussion.SCOBot.ACT-001" readNormalizedMeasure="true" readSatisfiedStatus="true" writeSatisfiedStatus="false" />
</imsss:objective>
</imsss:objectives>
</imsss:sequencing>
</item>
<imsss:sequencing>
<imsss:controlMode choice="true" flow="true" />
</imsss:sequencing>
</organization>
</organizations>
<resources>
<resource identifier="RES-001" type="webcontent" xml:base="content/SCOBot-QUnit1/" adlcp:scormType="sco" href="index.html">
<file href="css/img/noise2.png"/>
<file href="css/qunit-1.12.0.css"/>
<file href="css/styles.css"/>
<file href="index.html"/>
<file href="js/jquery/jquery-1.10.2.js"/>
<file href="js/jquery/jquery-1.10.2.min.js"/>
<file href="js/jquery/plugins/qunit-1.12.0.js"/>
<file href="js/scorm/Local_API_1484_11.js"/>
<file href="js/scorm/SCOBot.js"/>
<file href="js/scorm/SCORM_API.js"/>
<file href="js/scorm.bot.min.js"/>
<file href="js/scorm.bot.pack.js"/>
<file href="js/test/scobot.js"/>
<file href="js/test/scobot_basic.js"/>
<file href="js/test/scorm_api.js"/>
<file href="js/util/html5.js"/>
<file href="js/util/json2.js"/>
<file href="js/util/renderflash2.js"/>
</resource>
<resource identifier="RES-002" type="webcontent" xml:base="content/SCOBot-QUnit2/" adlcp:scormType="sco" href="index.html">
<file href="css/img/noise2.png"/>
<file href="css/qunit-1.12.0.css"/>
<file href="css/styles.css"/>
<file href="index.html"/>
<file href="js/jquery/jquery-1.10.2.js"/>
<file href="js/jquery/jquery-1.10.2.min.js"/>
<file href="js/jquery/plugins/qunit-1.12.0.js"/>
<file href="js/scorm/Local_API_1484_11.js"/>
<file href="js/scorm/SCOBot.js"/>
<file href="js/scorm/SCORM_API.js"/>
<file href="js/scorm.bot.min.js"/>
<file href="js/scorm.bot.pack.js"/>
<file href="js/test/scobot.js"/>
<file href="js/test/scobot_basic.js"/>
<file href="js/test/scorm_api.js"/>
<file href="js/util/html5.js"/>
<file href="js/util/json2.js"/>
<file href="js/util/renderflash2.js"/>
</resource>
</resources>
<!-- Sequence Collection used by SCOs -->
<imsss:sequencingCollection>
<imsss:sequencing ID="COMMON_SEQ_RULES">
<!-- Rollup: set to 0 if you don't want these scored. -->
<imsss:rollupRules objectiveMeasureWeight="1" />
<!-- prevent from accidentally being quto-completed/satisfied -->
<imsss:deliveryControls completionSetByContent="true" objectiveSetByContent="true" />
<!-- Attempt limit here had no effect -->
</imsss:sequencing>
</imsss:sequencingCollection>
</manifest>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment