SCORM 2004(第4版)Available Children选择与随机化执行时机问询
关于SCORM 2004(第4版)Available Children 选择与随机化时机的解答
你的理解核心逻辑符合规范设计,但存在两处容易引发实现异常的规则遗漏,结合正式规范条文拆解如下:
两类核心流程的明确触发规则
Select Children Process [SR.1]仅在两个固定场景触发:- 活动树首次初始化阶段,所有 sequencing/navigation 请求处理之前执行
- 若活动的
selectionTiming属性配置为onEachNewAttempt,则在该活动的新尝试正式启动前、子活动路径遍历开始前执行
规范未明确定义该场景的实现细节,本质是因为该配置和随机化流程存在原生逻辑冲突,可能导致选中活动从可用列表消失,目前主流LMS几乎都不开放该配置的支持。
Randomize Children Process [SR.2]的触发时机由活动的randomizeTiming属性决定:- 属性值为
once时,仅在活动树初始化阶段和SR.1配对执行一次即可,无需重复运行 - 属性值为
onEachNewAttempt时,在该活动的每一次新尝试启动前重新执行一次
- 属性值为
DB.2流程的冲突问题澄清
你担心的Content Delivery Environment Process [DB.2]遍历路径时执行随机化导致目标活动位置偏移的问题,规范有明确的隐含约束:
所有
SR.1、SR.2的执行必须全部完成后,才会启动DB.2的活动路径遍历逻辑。即使新尝试需要重新运行选择、随机化流程,也要先从父层级自上而下完成所有子列表的过滤、排序后,再开始路径匹配,不会出现已确定的目标活动位置偏移的异常。
对你现有理解的修正补充
- 不需要对
DB.2路径上的所有活动都重新执行SR.2,仅需要对randomizeTiming = onEachNewAttempt的活动重跑流程即可,其余活动沿用初始化阶段的排序结果 - Available Children的处理顺序必须固定:先初始化为全量子活动列表,再依次执行
SR.1(过滤可选活动)、SR.2(随机排序),顺序不能颠倒 - 选择、随机化流程仅对开启了对应配置的活动执行,无对应配置的活动无需运行相关流程
内容的提问来源于stack exchange,提问作者Alan Plum
相关产品推荐
相关产品推荐

