SCORM 1.2 API示例/教程

时间:2015-03-02 19:08:07

标签: api scorm

我花了相当多的时间来搜索SCORM 1.2 API教程/示例,结果证明这是一项非常困难的任务。

我找到的唯一样本是: http://www.vsscorm.net/2009/05/30/ground-rules/

这是一个可靠的教程,但我想从其他来源找到更多信息。

所有建议都表示赞赏。

4 个答案:

答案 0 :(得分:9)

就像Andrew提到的那样,自己完全实现SCORM真的很难。 我相信Moodle甚至不支持Scorm 2004.

相比之下,AICC非常容易实现,但在完成时更难以重定向等等。并且功能较少。

在我的系统中,我实现了最少的功能集,以支持使用Articulate等工具生成的简单课程。不同的课程以不同的顺序调用api或在模型中获取/设置不同的值,因此您需要密切测试任何新的课程格式。这是我发现最困难的部分是补偿不同课程所表现出的不同行为。

  

你提到的vsscorm实际上是最好的一步一步   我已经找到了关于如何实现服务器端的解释   随着他实施的越来越多,他获得了60个职位   http://www.vsscorm.net/

     

一旦您与服务器通信Rustici文档和运行时   API参考非常有助于引用模型值描述和   默认值
  http://scorm.com/scorm-explained/technical-scorm/run-time/run-time-reference/

     

Pipwerks虽然有一些有趣的工具和博客文章   主要集中在课程创建上。
http://pipwerks.com/downloads/

     

同样是ADL文档,但是自从我查看它们以来已经很长时间了。   http://www.adlnet.gov/scorm/scorm-version-1-2/

如果您下载Scorm 1.2版本(基本运行时调用)并将下面发布的代码放在课程根目录中的html文件中,然后通过Web服务器在浏览器中打开该页面,它将使课程思考它在LMS内部足以不抱怨并且会记录它所做的所有api调用 http://scorm.com/scorm-explained/technical-scorm/golf-examples/

<html>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script>
        var API = {};

        (function ($) {
            $(document).ready(setupScormApi());

            function setupScormApi() {
                API.LMSInitialize = LMSInitialize;
                API.LMSGetValue = LMSGetValue;
                API.LMSSetValue = LMSSetValue;
                API.LMSCommit = LMSCommit;
                API.LMSFinish = LMSFinish;
                API.LMSGetLastError = LMSGetLastError;
                API.LMSGetDiagnostic = LMSGetDiagnostic;
                API.LMSGetErrorString = LMSGetErrorString;

                window.open("shared/launchpage.html", "popupname","resizable,scrollbars,status");
            }
            function LMSInitialize(initializeInput) {
                displayLog("LMSInitialize: " + initializeInput);
                return true;
            }
            function LMSGetValue(varname) {
                displayLog("LMSGetValue: " + varname);
                return "";
            }
            function LMSSetValue(varname, varvalue) {
                displayLog("LMSSetValue: " + varname + "=" + varvalue);
                return "";
            }
            function LMSCommit(commitInput) {
                displayLog("LMSCommit: " + commitInput);
                return true;
            }
            function LMSFinish(finishInput) {
                displayLog("LMSFinish: " + finishInput);
                return true;
            }
            function LMSGetLastError() {
                displayLog("LMSGetLastError: ");
                return 0;
            }
            function LMSGetDiagnostic(errorCode) {
                displayLog("LMSGetDiagnostic: " + errorCode);
                return "";
            }
            function LMSGetErrorString(errorCode) {
                displayLog("LMSGetErrorString: " + errorCode);
                return "";
            }
            function displayLog(textToDisplay){
                var loggerWindow = document.getElementById("logDisplay");
                var item = document.createElement("div");
                item.innerText = textToDisplay;
                loggerWindow.appendChild(item);
            }
        })(jQuery);
    </script>
    <div id="logDisplay">
    </div>
</html>

答案 1 :(得分:2)

您是要创建SCORM播放器还是创建课程?我们在这里有一些很棒的课程样本:

http://scorm.com/scorm-explained/technical-scorm/golf-examples/

我们网站上也有一些很好的文档:

http://scorm.com/scorm-explained/scorm-resources/

如果您有具体问题,请告诉我们,我们当然可以尝试让您走上正轨。

谢谢,


support@scorm.com

答案 2 :(得分:1)

我认为主要的困难在于解析具体问题。大多数SCORM 1.2都是可选的,因此您可以选择要支持的内容和数量。触发错误代码,诊断消息,验证与否。你可以做出的所有决定。但是从JavaScript的角度来看,它和Nathan一样简单,除了你需要构建你的CMI对象,你可以用JSON作为例子。

我设置了一个类似的模拟器,用于在本地运行https://github.com/cybercussion/SCOBot/blob/master/QUnit-Tests/js/scorm/SCOBot_API_1484_11.js并考虑SCORM 2004。两个版本之间的名称空间发生了变化,因此它不是1:1。这不包括真正的运行时通常抛出的所有丰富的规则,验证和错误消息,并不是故意的。

构建完整的Runtime API可能非常耗时。您通常需要融入测试驱动开发,并摒弃规范的数百页。

  1. 设置API
  2. 设置学生尝试
  3. 加载您的内容
  4. 等待用户互动
  5. 您需要在LMSCommit('')上发布学生尝试。这通常意味着向后端发送同步Ajax。我已经看到其他LMS系统采用非缓存方法,其中每个LMSGetValue / SetValue都是到服务器的往返。 SCORM并没有真正决定这里的最佳做法,但是那么多的喋喋不休会导致疯狂的DNS延迟(沙滩球,小时眼镜)以及用户体验的减弱。
  6. 有很多使用案例,但我不会说你没有全部检查。无论如何都要有良好的知识。

答案 3 :(得分:0)

Building a SCORM player is hard。您确定要在SCORM规范生命周期的这个阶段构建SCORM播放器吗,特别是因为已经存在大量commercial甚至open source选项?对于开源选项,播放器通常嵌入到开源LMS中,因此需要提取(或者您可以使用OS LMS!)

您可能会发现查找Tin Can API是有益的,这是一个新规范,旨在替换SCORM,然后再投入大量时间。 SCORM支持在当今世界仍然很重要,但了解Tin Can可能会影响您的SCORM播放器构建/购买决策;如果你打算在更短的时间内使用它,那么建立你自己的东西就没什么意义了。