SCORM 2004 第 4 版伪代码处理选择请求(SB.2.9,步骤 12 之后)的情况,如下所示:
If the target activity is a leaf activity Then
Exit Choice Sequencing Request Process (Delivery Request: the target activity; Exception: n/a)
End If
Apply the Flow Subprocess to the target activity in the Forward direction with consider children equal to True
// The identified activity is a cluster. Enter the cluster and attempt to find a descendent leaf to deliver.
If the Flow Subprocess returns False Then
// Nothing to deliver, but we succeeded in reaching the target activity - move the current activity.
Apply the Terminate Descendent Attempts Process to the common ancestor
Apply the End Attempt Process to the common ancestor
Set the Current Activity to the target activity
Exit Choice Sequencing Request Process (Delivery Request: n/a; Exception: SB.2.9-9)
// Nothing to deliver.
Else
Exit Choice Sequencing Request Process (Delivery Request: for the activity identified by the Flow Subprocess; Exception: n/a)
End If
看起来这意味着如果目标活动解析为集群活动,但流子流程找不到任何可用的后代叶子活动,则当前活动仍会被修改,并且尽管返回异常,但排序请求“成功”。
在这种情况下,LMS 的预期行为是什么?无法交付集群活动,但这会终止先前的活动。LMS 是否应该简单地提供一个空白页面而不是一个活动,并希望学习者可以使用导航控件导航到另一个活动?
总体排序过程的定义没有指定应该如何处理异常,但考虑到此行为设置当前活动并且所有后续请求将引用该活动而不是先前活动的活动,显然需要发生一些事情否则 LMS 将卡在不一致的状态。