使用不带LMS的SCORM运行时API?

时间:2016-01-19 17:32:16

标签: javascript php scorm scorm2004

我是SCORM的新手,已被授权将SAP Workforce Performance Builder导出的SCORM(可以是1.2或2004)内容集成到现有的PHP网站中。

简单来说,我需要能够在浏览器中显示导出的SCORM材料(我已经可以这样做了),并且能够通过SCORM运行时API获取统计信息。

据我所知,我需要使用LMS来允许通过SCORM运行时API与SCO进行通信。我已经研究了几个开源的LMS,但是没有找到一个很好的解决方案来实现我的目的。问题是很多这些LMS被设计为在提供商的域上运行,并且内置了用于跟进用户的工具。进步和得分。

我正在寻找的是一个简单,轻量级的解决方案,能够与SCORM运行时API进行交互,因此我可以获取用户在课程上花费的时间,他的分数等。我将插入将收集到的数据存储到我自己的数据库中,并编写可以自己评估结果的后端代码,我只需要一种获取SCORM数据的方法。

我觉得我错过了一些东西,因为你不需要整个LMS实现来简单地监听基本的8个SCORM API调用,并记录结果?非常感谢任何正确方向的帮助或推动!

3 个答案:

答案 0 :(得分:3)

如果您只是需要模仿LMS,提供伪SCORM API以便课程可以“说出”您的PHP网站,请尝试Claude Ostyn的SCORM Test Wrapper。它是纯粹的客户端JavaScript,与SCORM一样轻量级。

简而言之,Claude的测试包装器为要连接的课程提供了一个简单的SCORM API。它接收来自课程的通信,您可以随意处理。没有提供后端代码;如果要与数据库合并,则需要修改包装器以从站点的数据库中推送/拉取数据(这通常通过AJAX处理)。

构建数据存储后,您可以使您的网站充当LMS,使网站能够启动SCORM课程,并使课程能够通过SCORM API向您的网站发送/接收数据。无需LMS或第三方服务器。

注意:

  • 不支持解压缩包或阅读清单。 (我怀疑你对去那么远没兴趣。)

  • SCORM还支持排序和导航,它超越了简单的JavaScript包装器。如果您需要支持排序和导航功能,您需要从现有的开源项目中获取它们(不容易)或者支付第三方,如Rustici Software(SCORM Cloud)。我怀疑你通过SAP创建的内容不会使用任何SCORM的排序或导航功能,所以你可能没问题。

  • 克劳德不久前去世了,所以他不能支持你。向Rustici Software的人们大声疾呼,他们为SCORM社区保留了这个网站。

答案 1 :(得分:1)

从课件的角度来看,它只是使用javascript来调用APIAPI_1484_11对象上的函数。如果您可以编写javascript代码以充分模仿界面,并存储/返回必要的数据模型元素,那么您就不需要"整个LMS实现"。

您需要仔细阅读Run-Time Environment文档。

如果您只计划使用它来运行SAP Workforce Performance Builder生成的课件,那么您可以实现足够的或数据模型以使其正常工作(尽管我已经看到这样做,然后人们感到惊讶/当其他SCORM兼容课件不起作用时会感到困惑/生气,所以要小心。)

(旁白)您还需要一种可靠的方法来从PIF zip文件安装/更新课件包。同样,对于处理来自特定内容创建者的课件而不需要编写完整的通用界面,您只需挑选出所需的imsmanifest.xml文件位。

(离题)在编写了界面的课件方面几次后,我在API的各种LMS实现中看到了有趣的问题,包括返回布尔值true或{{1}而不是字符串false"true",它可以让你措手不及。到目前为止,最喜欢的是LMS,它会截断第一个换行符处的cmi.suspend_data。 (实际上,实现是错误的,他们的bug中存在错误,并且它也会在换行符之前切掉角色。)

答案 2 :(得分:1)

您主要想捕获,维护和执行学生尝试对象。我现在已经在JSON格式中使用了一段时间,您可以采用不同的方法来存储可共享内容对象收集的信息。通常人们会采取他们需要的部分,而不是试图100%进入完整的SCORM支持,所以这些类型的问题很受欢迎。

通过为SCORM 1.2或2004创建SCORM Runtime,您将主要提供那些从学生会话构建数据的方法。 这看起来像https://gist.github.com/cybercussion/4675334(基于SCORM 2004的单元测试数据)

  1. 您尝试将呼叫路由到服务器端。通常这会导致很多滞后。而且我通常不会提倡它作为一种选择。

  2. 您缓存学生尝试,但是您在提交调用上发布了整个JSON对象。这通常会导致更大的数据发布,如果有大量的日记交互,可能会对您造成影响。

  3. 您采用混合方法,只发布已更改的数据并将其合并到您的服务器上,以限制可能发生的数据飞艇问题。

  4. 我在wiki上有很多信息https://github.com/cybercussion/SCOBot/wiki以及大量的示例代码,提示等...