本站首页    管理页面    写新日志    退出


«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031

最新日志

【梁政良】怎样设计一个符合SCORM的L
SCORM标准中SCO与LMS的通讯原理
[收藏]第12天:校验及常见错误 --
我不是强者
第一篇日记

最近的评论

回复:第一篇日记

连接





SCORM标准中SCO与LMS的通讯原理与方法
echo6459 发表于 2006/2/1 15:08:06

  在SCORM标准中,SCO与LMS的通讯是由API Adapter来完成的。 在SCORM1.2的标准中,API定义了8个主要的function,分别是LMSInitilize, LMSFinish, LMSSetValue, LMSGetValue, LMSCommit, LMSGetLastError, LMSGetErrorString, LMSGetDiagnostic,其中又以LMSGetValue和LMSSetValue最为复杂,以下的流程图是主要几个function的逻辑流程。 500)this.width=500'> LMSInitialize: LMSInitialize负责启动SCO,当学习者进入开始阅读一个SCO时,SCO第一步就是先要呼叫LMSInitialize,LMSInitialize function判断该学员之上课记录,当学员第一次阅读该门课的该SCO时,LMSInitialize就会将设定初值至相关的环境变量;若学习者并不是第一次阅读该SCO,LMSInitialize则必须将该学习者之前的上课记录取出,并存入环境变量中,如此即完成启动SCO之动作。 Example: var result = LMSInitialize("")if (result == "false"){      // Do some error handling}else{     // continue with the execution of the SCO} LMSFinish: 当学习者阅读完并要离开一个SCO时,在结束时SCO便会将呼叫LMSFinish,LMSFinish主要负责将环境变量重设,并判断该SCO是否在结束之前己经有呼叫LMSCommit将所有记录回存至LMS,若尚未储存,则会自动呼叫将所有学习者在该SCO的上课记录回存。 Examples:var result = LMSFinish(""); LMSSetValue: 在LMSSetValue是相当复杂的Function,负责储存所有相关的学习记录,当SCO呼叫欲将某个data model回存时,LMSSetValue第一步先判断所欲回存之data model,判断该data model是否可以set(写入),其次判断其型别,当型别错误时,记录其Error Code,当型别检查通过时,则依SCORM 1.2 RTE所订定该data model的处理规则,并将数据存入内存中。 Examples:var result = LMSSetValue("cmi.core.score.raw","95"); LMSGetValue: LMSGetValue主要负责将数据由LMS取出,当SCO呼叫LMSGetValue时,LMSSetValue会先判断data model是否可以读取,若不可读取,则写入其错误代码;若该data model是可以读取,则进取出其值并回传给SCO。但在设计时,如同LMSSetValue并没有直接和receiver相连,所以是将数据由暂存的内存中取出。 Examples:var value = LMSGetValue("cmi.core.student_name")A typical return value might be "Hyde, Jackson".var value = LMSGetValue("cmi.core.lesson_status")A typical return value might be "incomplete".var value = LMSGetValue(“cmi._version”) LMSCommit: 相较于LMSSetValue和LMSGetValue,LMSCommit可以说简单多了,其主要负责将所有暂存在内存中的学习记录,回存到LMS,在设计时应用了XMLHTTP之技术,所以当LMSCommit被呼叫时,会将所有之暂存数据组成XML文件,再应用XMLHTTP对象将数据POST到Receiver,当Receiver收到这个Request时,就会解译所传入之XML文件,再将XML文件中的数据直接存入数据库中。  Examples:var result = LMSCommit(""); LMSGetLastError该函数将返回一个错误代码,每次API function呼叫后,该函数的值将被重置。(LMSGetErrorString及LMSGetDiagnostic除外)。 Examples:var errorCode = LMSGetLastError(); LMSGetErrorString  Examples:var errorString = LMSGetErrorString("403"); LMSGetDiagnostic   Examples: var moreInfo = LMSGetDiagnostic("403"); 500)this.width=500'> 图2:SCO与LMS通讯示意图

阅读全文(1955) | 回复(0) | 编辑 | 精华


发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



公告

暂无公告...

专题

首页(5)

留言

签写新留言


统计

blog名称:
日志总数:5
评论数量:3
留言数量:0
访问次数:30801
建立时间:2005年2月13日

 

 

 


站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.363 second(s), page refreshed 144795480 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号