Arun Kalyan
Arun Kalyan

Reputation: 1

How to evaluate SCORM rule conditions against objective tracking model and CMI data?

I’m working on a SCORM package where I'm evaluating rule conditions defined in the sequencing rules against objectives before delivering an activity. I understand that the sequencingRulesCheckSubProcess handles the evaluation of rule conditions based on the objective's tracking model. However, I'm facing some challenges with this process and would appreciate some guidance.

<item identifier="etuqiette_item" identifierref="etiquette_resource">
  <title>Etiquette</title>
  <adlcp:data>
    <adlcp:map targetID="com.scorm.golfsamples.sequencing.forcedsequential.notesStorage" readSharedData="true" writeSharedData="true"/>
  </adlcp:data>

  <adlcp:completionThreshold progressWeight="0.3"/>
  
  <imsss:sequencing IDRef="content_seq_rules">
  
    <imsss:sequencingRules>

      <!-- Check it out, we can sequence off completion in 4th Edition-->
      <imsss:preConditionRule>
        <imsss:ruleConditions conditionCombination="any">
          <imsss:ruleCondition referencedObjective="previous_sco_completed" operator="not" condition="completed"/>
          <imsss:ruleCondition referencedObjective="previous_sco_completed" operator="not" condition="activityProgressKnown"/>
        </imsss:ruleConditions>
        <imsss:ruleAction action="disabled"/>
      </imsss:preConditionRule>
      
    </imsss:sequencingRules>
    <imsss:objectives>
      <imsss:primaryObjective objectiveID="ettiquette_completed"/>
      <imsss:objective objectiveID="previous_sco_completed"/>
    </imsss:objectives>

    <adlseq:objectives>
      <adlseq:objective objectiveID="ettiquette_completed">
        <adlseq:mapInfo targetObjectiveID="com.scorm.golfsamples.sequencing.forcedsequential.ettiquette_completed" readCompletionStatus="true" writeCompletionStatus="true"/>
      </adlseq:objective>
      <adlseq:objective objectiveID="previous_sco_completed">
        <adlseq:mapInfo targetObjectiveID="com.scorm.golfsamples.sequencing.forcedsequential.playing_completed"  readCompletionStatus="true" writeCompletionStatus="false"/>
      </adlseq:objective>
    </adlseq:objectives>
  </imsss:sequencing>
</item>

The above item is my second SCO. While completing the first SCO, I'm triggering a navigation request to check if second SCO is deliverable.

Rule condition evaluation before activity delivery

Before delivering the identified activity, I evaluate the sequencing rule conditions. These conditions are evaluated against objectives, and the objective tracking information is initialized from CMI values like:

  1. cmi.objectives.n.success_status
  2. cmi.objectives.n.score.scaled

However, I'm not receiving these CMI values during the runtime. Without them, I can't properly initialize the tracking model, and thus the evaluation of rule conditions fails. I need to understand:

When are the CMI values (success_status, score.scaled) transmitted during runtime? At what point can I expect these values to be available?

How should I evaluate rule conditions against the tracking model using these CMI values? What is the proper flow for processing the received CMI data and using it to evaluate rule conditions tied to objectives?

Any insight into the correct sequencing and handling of CMI data in SCORM, especially around the evaluation of rule conditions before delivering an activity, would be greatly appreciated!

Upvotes: 0

Views: 50

Answers (1)

pipwerks
pipwerks

Reputation: 4581

(Caveat: I'm not a user [or fan] of SCORM 2004's sequencing model, so I could be completely wrong.)

TL:DR; The two are independent processes, and you wouldn't use CMI data to influence sequencing.

  1. CMI data is stored in the LMS's database, and made available to the SCO (typically an HTML file) via the JavaScript-based SCORM API after the SCO has been launched by the LMS.

    As a course developer, the only place you can query CMI data such as cmi.objectives.n.success_status is from the currently-open SCO, because it's the only place the SCORM API is made available to you.

  2. Sequencing rules are written in XML and evaluated by the LMS to determine which SCO to open in the LMS's SCORM player. The LMS is responsible for querying completion data and processing the sequencing rules under-the-hood. There is no specified standard for how LMSs process the XML, the only requirement is that the outcome of the processing/sequencing conforms with expectations as defined in the SCORM 2004 spec.

    As a course developer you don't have scripting access to this process, you are limited to options available in the XML-based manifest.

See scorm.com for more details about SCORM 2004 sequencing and navigation https://scorm.com/scorm-explained/technical-scorm/sequencing/

Upvotes: 0

Related Questions