SCORM Explained

The SCORM 2004 pseudo code (or “p-code”) defines the normative behavior for the SCORM 2004 sequencer.e-learning interoperability.

Recent blog posts:

The SCORM 2004 Pseudo Code

The SCORM 2004 Pseudo Code defines the “sequencing loop” that the LMS executes in between SCOs. The sequencing loop begins with the Overall Sequencing Process which then executes of many subroutines. Each routine in the p-code is independent, each has a name and an identifying code.

Understanding these algorithms in detail can be quite helpful in diagnosing unexpected sequencing behaviors. Our freely available testing tool within SCORM Cloud allows you to run any SCORM course and then monitor the precise execution path through the SCORM 2004 Pseudo Code. These debug logs contain a line-by-line trace of the p-code algorithms that were executed in each sequencing loop. Understanding these algorithms will provide you with an in depth understanding how how sequencing operates.

Top Level Process

Overall Sequencing Process [OP.1] – Controls the overall execution of the sequencing logic. Execution of this function represents one iteration of the sequencing loop.

Top Level Functions

Navigation Request Process [NB.2.1] – Determines if a specified navigation request is valid given the current state of the activity tree.

Termination Request Process [TB.2.3] – Ends the attempt on the current activity to allow a navigation request to proceed.

Sequencing Request Process [SB.2.12] – Determines the validity of a given sequencing request. If the request is valid, returns the next activity for delivery.

Delivery Request Process [DB.1.1] – Determines if an activity is actually valid for delivery.

Content Delivery Environment Process [DB.2] – Responsible for the actual delivery of an activity to the learner.

Termination Functions

Sequencing Exit Action Rules Subprocess [TB.2.1] – Checks for and evaluates exit sequencing rules.

Sequencing Post Condition Rules Subprocess [TB.2.2] – Checks for and evaluates post-condition sequencing rules.

End Attempt Process [UP.4] – Ends and attempt on a given activity.
Overall Rollup Process [RB.1.5] – Consolidates the state data from child activities to the state data of the parent activity.

Measure Rollup Process [RB.1.1] – Rolls up activity measure (score).

Objective Rollup Process [RB.1.2] – Rolls up objective activity data (satisfaction).

Completion Measure Rollup Process [RB.1.1.b] – Rolls up activity completion measure data (completion percentage). Introduced in 4th Edition.

Activity Progress Rollup Process [RB.1.3] – Rolls up activity progress (completion) data. Replaced in 4th Edition by the Activity Progress Rollup Using Measure Process and the Activity Progress Rollup Using Rules Process.

Activity Progress Rollup Using Measure Process [RB.1.3.a] – Rolls up activity progress (completion) data by comparing progress measure against completion threshold. Introduced in 4th Edition.

Activity Progress Rollup Using Rules Process [RB.1.3.b] – Rolls up activity progress (completion) data using defined rollup rules. Introduced in 4th Edition.

Objective Rollup Process Using Measure [RB.1.2.a] – Rolls up the activity’s satisfied status by evaluating the activity’s score.

Objective Rollup Process Using Rules [RB.1.2.b] – Rolls up the activity’s satisfied status using defined rollup rules.

Objective Rollup Process Using Default [RB.1.2.c] – Rolls up the activity’s satisfied status using the default rules.

Rollup Rule Check Subprocess [RB.1.4.2] – Determines if the action of a rollup rule should be executed based on the evaluation of its conditions.

Check Child For Rollup Subprocess [RB.1.4.2] – Determines if an activity should participate in determining its parent’s rolled up status

Evaluate Rollup Conditions Subprocess [RB.1.4.1] – Determines if a single rollup rule condition evaluates to true.

Terminate Descendent Attempts Process [UP.3] – Ends the attempts of activities on the current active path.

Sequencing Functions

Exit Sequencing Request Process [SB.2.11] – Determines the validity of an exit sequencing request.
Resume All Sequencing Request Process [SB.2.6] – Determines the validity of a resume all sequencing request. If the request is valid, identifies the previously suspended activity for delivery.

Start Sequencing Request Process [SB.2.5] – Determines the validity of a start sequencing request. If the request is valid, identifies the first activity for delivery.

Retry Sequencing Request Process [SB.2.10] – Determines the validity of a retry sequencing request. If the request is valid, identifies the next activity for delivery.

Continue Sequencing Request Process [SB.2.7] – Determines the validity of a continue sequencing request. If the request is valid, identifies the next activity for delivery.

Previous Sequencing Request Process [SB.2.8] – Determines the validity of a previous sequencing request. If the request is valid, identifies the next activity for delivery.

Jump Sequencing Request Process [SB.2.13] – Determines the validity of a jump sequencing request. If the request is valid, identifies the next activity for delivery. Introduced in 4th Edition.

Choice Sequencing Request Process [SB.2.9] – Determines the validity of a choice sequencing request. If the request is valid, identifies the next activity for delivery.

Choice Activity Traversal Subprocess [SB.2.4] – Checks for stop forward traversal rules, or forward only restrictions that would prevent this choice request from succeeding.

Choice Flow Subprocess [SB.2.9.1] – Determines the actual activity to deliver in response to a choice request.

Choice Flow Tree Traversal Subprocess [SB.9.2] – Flows into an activity to determine the first available child for delivery.

Sequencing Rules Check Process [UP.2] – Determines what sequencing action should be executed based on the evaluation of sequencing rule conditions.

Sequencing Rules Check Subprocess [UP.2.1] – Evaluates the condition of sequencing rules to see if they should trigger the sequencing rule’s action.

Check Activity Process [UP.5] – Determines if an activity is currently disabled or if the learner has exceeded any attempt limits.

Limit Conditions Check Process [UP.1] – Determines if the learner has exceeded any attempt limits.

Flow Subprocess [SB.2.3] – Finds the appropriate activity to deliver when flowing into an activity, i.e. it figures out what is logically “first”, “next” or “previous”.

Flow Activity Traversal Subprocess [SB.2.2] – Determines if an activity can be delivered via flow navigation and if not, searches for the next activity that can.

Flow Tree Traversal Subprocess [SB.2.1] – Moves one activity through the tree in the specified direction. From a given location in the tree, this process will find the next activity that should be considered.

Select Children Process [SR.1] – Determines which child activities will be included in the delivery of a parent activity. Invocation is controlled by the LMS.

Randomize Children Process [SR.2] – Determines the order in which child activities will be included in the deliver of a parent activity. Invocation is controlled by the LMS.

Delivery Functions

Clear Suspended Activity Subprocess [DB.2.1] – Resets the suspended activity and the suspended status of ancestor activities.