The pseudocode for the Select Children Process [SR.1]
and Randomize Children Process [SR.2]
heavily suggests these processes are meant to be run multiple times although for SR.1
no behavior is defined when selection is meant to occur onEachNewAttempt
.
Since both the Sequencing Request Process [SB.2.12]
and the Navigation Request Process [NB.2.1]
expect the Available Children to be selected/randomized and the Content Delivery Environment Process [DB.2]
only initializes the new attempt after a traversal over the various Available Children has already happened, it seems like the LMS is meant to run both of these processes during initialization of the activity tree itself before attempting to deliver the first activity or handle any requests.
However this doesn't explain when SR.2
is meant to be re-run. Since DB.2
creates the new attempt progress information by iterating over the activity path from the root to the specified activity, randomizing each activity's Available Children along the way would result in the position of the specified activity within the activity tree changing after selection, which seems unintuitive. Further more, if one were to attempt to implement onEachNewAttempt
for SR.1
this could also cause the selected activity to vanish from the available activities (though this would explain why its behavior is undefined in SCORM).
My understanding would be that the Available Children are meant to be initialized to the list of all children followed by SR.1
and SR.2
being applied to all activities starting from the root and that SR.2
is then re-applied in DB.2
for every activity in the path despite this changing the order of activities. Is this correct or am I missing something?