如何修复SCORM的LMSSetValue类型不匹配错误及排查ServiceNow兼容性
SCORM包在ServiceNow LMS中报错的调试与兼容性检查方案
一、先确定SCORM版本
解压SCORM包,找到根目录下的imsmanifest.xml文件,查看根节点的命名空间:
- 包含
http://www.adlnet.org/xsd/scorm/1.2→ SCORM 1.2 - 包含
http://www.adlnet.org/xsd/scorm_2004→ SCORM 2004
二、调试CMI_Completion_Status的方法
1. 浏览器开发者工具抓包追踪
- 在ServiceNow中打开课程,按F12唤起开发者工具
- 切换到「控制台」标签,勾选「保留日志」
- 操作课程至触发错误,在控制台搜索
LMSSetValue,能直接看到传入的状态值内容
2. 直接查看SCORM包内代码
- 解压包后,找到核心交互JS文件(常见命名为
scorm_api.js、lms_api.js或课程自定义脚本) - 搜索
CMI_Completion_Status、cmi.completion_status或SetValue关键词,定位设置状态值的代码行,即可看到硬编码的状态内容
3. 本地SCORM测试环境监控
- 搭建轻量本地SCORM测试环境(比如使用开源的SCORM调试工具)
- 将SCORM包导入测试环境,运行时监控所有LMS API调用,直接捕获
CMI_Completion_Status的设置值
三、ServiceNow LMS兼容性检查
1. 对照官方规范确认合法值
ServiceNow支持SCORM 1.2和2004,两种版本的合法状态值要求:
- SCORM 1.2:
cmi.core.lesson_status的合法值为passed、completed、failed、incomplete、browsed、not attempted - SCORM 2004:
cmi.completion_status的合法值为completed、incomplete、not attempted
2. 手动修改测试
- 找到SCORM包中设置状态值的代码,将值改为ServiceNow认可的标准格式(统一小写
completed等) - 重新打包SCORM包,上传至ServiceNow验证是否解决报错
3. 启用ServiceNow LMS调试日志
- 导航到ServiceNow的「学习管理 > 系统属性」,启用「调试SCORM API」选项
- 运行课程后查看日志,获取更详细的API交互错误细节,精准定位问题
内容的提问来源于stack exchange,提问作者noniguez
相关产品推荐
相关产品推荐

