You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SCORM规则条件与目标跟踪模型、CMI数据的评估问题咨询

解决SCORM活动交付前排序规则评估的CMI数据问题

一、CMI值的传输与获取时机

SCORM中cmi.objectives.n.success_status和cmi.objectives.n.score.scaled的传输完全依赖SCO与LMS的API交互:

  • 传输时机:只有当第一个SCO主动调用LMSCommit("")将数据提交给LMS,或者调用LMSTerminate("")退出时,这些目标数据才会被LMS持久化存储。如果SCO未执行这些API操作,LMS不会自动保存目标状态。
  • 获取时机:在触发第二个SCO的导航请求前,必须确保第一个SCO已经完成了Commit和Terminate流程。此时LMS会从持久化存储中读取对应目标的数据,在初始化第二个SCO的目标跟踪模型时,将这些CMI值同步到模型中。

二、使用CMI值评估规则条件的正确流程

针对你的配置,完整处理流程如下:

  1. 前置SCO的数据提交
    第一个SCO(对应playing_completed目标)完成时,必须:

    • 设置cmi.objectives.[index].success_status(如"passed"或"failed")和cmi.objectives.[index].score.scaled(可选,根据规则是否需要);
    • 调用SCORM_API.LMSCommit("")提交数据;
    • 调用SCORM_API.LMSTerminate("")正常退出。
  2. LMS初始化目标跟踪模型
    当触发第二个SCO的导航请求时,LMS会:

    • 根据第二个SCO中adlseq:objective的mapInfo配置,找到previous_sco_completed对应的targetObjectiveID(即com.scorm.golfsamples.sequencing.forcedsequential.playing_completed);
    • 从持久化存储中读取该目标对应的success_status和score.scaled,填充到previous_sco_completed目标的跟踪属性中;
    • 自动计算activityProgressKnown属性:如果目标的success_status已被设置(非空且有效),则activityProgressKnown为true,反之则为false。
  3. 执行规则条件评估
    调用sequencingRulesCheckSubProcess时,基于已初始化的目标跟踪模型检查规则:

    • 你的preConditionRule使用conditionCombination="any",只要两个条件中的任意一个满足(previous_sco_completed未完成,或进度未知),就会触发disabled动作,第二个SCO不可交付;
    • 只有当previous_sco_completed的completed状态为true且activityProgressKnown为true时,规则不触发,第二个SCO才可交付。
  4. 调试与校验要点

    • 检查第一个SCO的API调用日志,确认Commit和Terminate已执行;
    • 验证LMS中持久化存储的目标数据,确保playing_completed的success_status已正确保存;
    • 确认targetObjectiveID的字符串完全匹配,避免因拼写错误导致无法读取数据。

内容的提问来源于stack exchange,提问作者Arun Kalyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 11:33:22