0

Should I set up cmi.objectives.0.id before I set up, for example, cmi.objectives.0.competition_status?

It's in order to interpret REQ_72.4.3.5: "Since the cmi.objectives.n.id is required to be set first prior to any other objective information, if the SCO attempts to set..."

E.g.:

scorm.setValue('cmi.objectives.0.id', 'obj1'); //?
scorm.setValue('cmi.objectives.0.completion_status', 'completed');
4

1 回答 1

1

(更新)

抱歉,出于某种原因,我以为您在讨论互动,而不是目标。我的答案已被修改以解决目标。

是的,目标需要有一个 ID。您可以通过 JavaScript API (SCORM RTE) 或清单设置 ID。必须先设置 ID,然后才能对目标执行任何其他操作,例如设置 completion_status。

如果 SCO 请求存储客观信息,则 SCO 需要在任何其他客观信息之前先设置标识符(除非它是通过其他方式初始化的)。一旦 cmi.objectives.n.id 有了值,就不允许将数据模型元素重置为不同的值。

页 RTE 4-97

如果您不确定是否设置了 ID,您可以使用 JavaScript 查看目标是否存在以及是否已为其分配了 ID。

例子:

var obj_count = parseInt(scorm.GetValue('cmi.objectives._count'), 10);

if(obj_count === 0){

    //We know for sure no objectives exist in your SCO yet.
    //Try setting the ID
    scorm.SetValue('cmi.objectives.0.id', 'obj1');

}

var id = scorm.GetValue('cmi.objectives.0.id');
var err = parseInt(scorm.GetLastError(), 10);

if(err == 0 && id == "obj1"){ 

    //continue as planned...

} else {

    //there is an error or the ID is undefined. Time to troubleshoot.

}

如果 ID 已设置但您仍无法设置completion_status,则可能需要仔细检查清单:

如果为内容包清单中<imsss:objectives>的元素定义了<imscp:item>,则 LMS 负责根据为学习活动引用和管理的目标进度信息为 SCO 初始化目标运行时数据 (cmi.objectives.n.xxx) . 与目标相关的运行时数据 (cmi.objectives.n.xxx) 不应为活动的关联 SCO 初始化,除非在排序信息 (<imsss:primaryObjective><imsss:objective>) 中定义了目标 ID 属性。目标 ID 属性应用于初始化 cmi.objectives.n.id 值。清单中定义的目标数量决定了需要初始化的目标状态信息的数量。

于 2013-04-25T15:53:03.253 回答