以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 IMS/SCORM/E-learning 』  (http://bbs.xml.org.cn/list.asp?boardid=9)
----  请问SCO的数据是怎么和LMS交互的?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=9&rootid=&id=69168)


--  作者:geanyee
--  发布时间:11/6/2008 10:48:00 AM

--  请问SCO的数据是怎么和LMS交互的?
我们在SCO的JS中可以写一些读取数据和写入数据的function, 比如SetValue("") 和 GetValue("")

当SCO执行到这个代码的时候, 系统究竟是如何工作, LMS提供什么方法让SCO把数据存储到数据库中?

另外, 我们如果自己定义的LMS, 需要让我们自己的数据库结构和官方的一样吗?


--  作者:geanyee
--  发布时间:11/6/2008 2:41:00 PM

--  
经过调研, 我多了解到一些

其实我们都知道 SCO 和 LMS的交互是通过API Adapter提供的, 但是我之前一直都不知道这个API究竟是什么.

经过查看官方RTE源代码发现, 他的实现是通过Java Applet实现的, 代码如下.

function  GetCurrentAPI()
{   
   API_1484_11 = this.document.APIAdapter;   
}

<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
   width="0" height="0" id="APIAdapter"
   codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0">
  This object contains the API Adapter Applet
  <param name = "code" value = "org/adl/samplerte/client/ClientRTS.class" >
  <param name = "codebase" value = "/adl" >
  <param name = "type" value="application/x-java-applet;jpi-version=1.4.2">
  <param name = "mayscript" value="true" >
  <param name = "scriptable" value="true" >
  <param name = "archive"
           value = "util.jar,cmidatamodel.jar,lmsclient.jar,debug.jar,sequencer.jar,joda-time-1.1.jar,sspserver.jar" >
  <comment>
  <applet code="org/adl/samplerte/client/ClientRTS.class"
            archive="cmidatamodel.jar,lmsclient.jar,debug.jar,joda-time-1.1.jar,sspserver.jar"
            codebase="/adl"
            src="/adl"
            height="1"
            id="APIAdapter"
            name="APIAdapter"
            width="1"
            mayscript="true">
  </applet>
  </comment>
</object>

这段代码就提供了SCO说需要查找的API (API_1484_11).
然后由Java Applet在后台实现,  GetValue 和 SetValue等操作.


--  作者:geanyee
--  发布时间:11/6/2008 2:43:00 PM

--  
不过这样的话, 我有一个新疑问, 如果用Java实现我们用Applet,需要客户端安装 Java虚拟机(JVM)

如果我需要用C# 实现呢? 那么需要我们用ActiveX来做相同的事情, 那么也需要客户端安装.NET SDK.

我想对客户端的要求是不是太多了?

不知道各位有什么其他的看法, 也请指教.

洪老师如果看到了, 请指点一二.


--  作者:scormexplorer
--  发布时间:11/7/2008 6:49:00 PM

--  
用java的api来跟教材进行通讯的话,用户在启动教材的时候确实是需要启动虚拟机的,你说的这个C#我倒是没有碰到过,不过这样的机制应该是正常的,正在看php的moodle是采用什么机制的,希望大家一起来学习讨论,这个问题的探讨还是比较有意义的。
--  作者:zk72706271
--  发布时间:11/10/2008 2:14:00 PM

--  
我也是第一次看人说这个问题。按照楼主得意思是通过java得applet里得java类来和平台沟通。这样得话自然需要安装java先。但是php得model平台是怎么弄得呢。而且我看啦下scorm课件得开发,觉得比较繁琐。可能是自己刚接触吧。
--  作者:geanyee
--  发布时间:11/11/2008 3:01:00 PM

--  
我现在在研究一个.net下的开源平台DotNetSCORM

不知道有没有同兴趣的人一起研究


--  作者:scormexplorer
--  发布时间:2/24/2009 4:04:00 PM

--  
http://www.iscorm.cn/post/531.html,看看这个说明。
--  作者:bluoshe
--  发布时间:3/6/2009 4:43:00 PM

--  
学习一下
我也是刚刚接触scorm,还没头绪
--  作者:rise51
--  发布时间:3/2/2010 5:18:00 PM

--  
想学习DonetScorm?请问哪有相关资料?谢谢
--  作者:ihavescorm
--  发布时间:8/5/2010 3:00:00 PM

--  
我有相关程序
--  作者:xdsnet
--  发布时间:11/25/2010 11:45:00 AM

--  
出现疑问其实这是没有理解前台服务和后台服务的原因。
      客户访问一个sco时,一般是通过浏览器的,则这个浏览器在整个应用中实际上是跑的前台服务(提供内容的现实,并且完成和后台服务的联系以获取各种数据),这些前台服务可以与后台服务(由web服务提供也就是LMS的web服务部分)联系(发出具体的数据请求,以指定格式传递反馈数据等等)来获得或传输数据,从而实现了整个应用的数据流转。
      前台服务因为也需要实现一些逻辑处理,所以也存在编程,由于限制现在只能采用脚本语言,一般采用javascript。
      前台服务和后台服务其实存在着两类数据交换,一类普通文档的请求,一类是供逻辑处理的数据(这包含SCORM DATA MODEL)。对普通文档的请求是诸如请求一个gif文件,或者一个html文件,这样一些具体的、静态的请求,后台服务(主要是web服务)就可以直接响应传输,另外一部分则是对SCORM 数据模型涉及数据的请求,这因为数据是动态的,所以需要专门的处理来完成,具体就是利用API Adapter。
      因为客户端脚本采用了javascript,所以API Adapter在客户端一般实现为javascript对象,但仅仅有客户端脚本API对象实际上是完成不了任何事情的,要完成真正数据前后台传输还需要服务器端接口和客户端的实际功能脚本的相互配合,所以实际上API Adapter只是一种数据传输标准的定制,具体的实现还是要看服务器端实际接口程序(服务器端API)和客户端的实际功能脚本。
      这里的服务器端实际接口程序(服务器端API)和客户端的实际功能脚本由不同的LMS实现,互不相同,这种不同包括了实现方法/实现算法/实现语言(服务器端的)差异,但因为标准的API Adapter是统一的,这才支持了SCORM的共享机制。所以严格意义上的LMS是包括了服务器端和提供的客户端浏览框架程序的。
       前面说了浏览器客户端脚本和功能,现在说说LMS在服务器端的事情。LMS服务器端其实主要干这样一些事情:1.web服务器功能(这个前面已经提到了,不再累述);2.数据存储查询服务功能——这个就是前面提到的服务器端API完成的。因为这个功能需要服务器端逻辑处理,所以也是涉及编程的,但具体并没有强求任何语言,当然也没有指定任何数据库程序,所以理论上你可以采用任何服务器端支持的语言来实现,数据的具体存储也可以采用你喜欢的任何形式(比如文件或者某种格式的数据库),唯一的限制实际上是在一个确定的LMS中,服务器端的api要能和客户端实体功能脚本配合,实现API Adapter要求的所有功能。
     这里再有一个概念就是LMS对应的SCORM RTE层级,所谓第RTE-1实际上就是在LMS数据存储查询功能中只实现了RTE-1要求的内容。
      总结起来一个SCO和LMS交互的过程就是:
LMS的客户端程序框架启动一个SCO完成如下工作:
    1.查询这个SCO的启动文件(一般是一个html数据文件)的具体位置,向LMS服务器端发出文件请求;
    2.接收到LMS返回的SCO启动文件后进行解析显示(同时完成html数据中各个子部分的数据请求和显示),由SCO启动文件的显示触发完成这个SCO对API Adapter的搜索和实例化,并且完成SCO对象初始化(调用Initialize / LMSInitialize );
    3.在SCO子部分的浏览中依据内部逻辑按需要调用API Adapter中各个功能函数实现数据的传递;
    4.在SCO退出时(一般是由LMS客户端框架中有新的SCO或者ASSET访问请求发起引发当前SCO访问关闭或者是整个LMS客户端框架关闭等引发)调用Terminate / LMSFinish功能函数实现一个SCO对话的结束。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
109.375ms