关于 SCORM 2004 3rd Edition Sample Run-Time Environment 的二次开发(-)learner学习信息的提取
来源:互联网 发布:可以录音的软件 编辑:程序博客网 时间:2024/04/28 19:41
上篇解决了rte的跨平台。下面解决下如何提取出来业务系统关心的learner学习的状态信息
因为公司的另外一个项目的某些功能需要分析用户在scorm平台学习的情况。而adl都是将这些状态保存在文件里。所以我们就需要把这些数据提取出来。在研究rte的源码的过程中。并没有发现rte预留的有给开发人员的提取learner学习状态的接口。不知道是本人水平有限没有发现还是怎么样。但是时间紧迫。既然没有发现。那只好自己修改源码了。
scorm的Data Model被adl rte封装在org.adl.datamodels包里边。可以发现rte运行环境里边的单元element都继承了抽象类org.adl.datamodels.DMElement。因为我们不同的业务系统关心得数据可能不一样。所以我们能做的是把rte运行环境里的一切SCO交互数据都提取出来交给业务系统。当然其中cmi的数据是主要的。通过对源码的分析。认定可以通过toString方法来提取所有data Model。所以重写DMElement,SCORM_2004_DM。。。等类的toString方法。取出你所关心的数据。我这里是用键值对来提取表示的。(注意:rte里边的序列化对象并没有添加serialVersionUID,如果你修改了序列化的对象的源码。在对这些对象反序列化的时候会报错的。例如:
解决这个问题可以在修改的对象里加入private static final long serialVersionUID=(stream classdesc serialVersionUID),至于序列化向上兼容和向下兼容的问题可以google一下。这里就不讨论了。)
这样可以在rte的运行环境中当adl持久化SCODataManager的时候把learner学习sco状态信息以键值对的形式取出来。或者在adl持久化后给业务系统发送消息。让业务系统反序列化化SCODataManager对象文件利用toString生成字符串。然后再将String形式的键值对生成Properties对象。方法如下:
InputStream in = new ByteArrayInputStream(s.getBytes());
Properties p = new Properties();
try ...{
p.load(in);
} catch (Exception e) ...{
e.printStackTrace();
}
return p;
}
如果想省事的话。可以直接利用URLConnection来直接将Properties对象序列化到业务系统。由业务系统来提取他们所关心的数据。当然这样业务系统开发人员需要熟悉scorm 的Data Model了。。我在这里是写了一套Data Model类型提供各种数据信息的取出方法。自己在rte环境生成properties后又重新封装到data模型里再序列化到业务系统。这样业务系统开发会相对简单点。
在二次开发过程中业务系统和adl rte运行系统的交互是通过http来的大家可以用HttpClient或者URLConnection来交互。这样开发完毕后可以做到业务系统和scorm学习平台的相对独立。对于以后有需要scorm学习平台的项目可以直接移植二次开发过的scorm运行平台就OK。并不需要重新开发一套新的scorm平台。这只是我对于adl得rte平台二次开发的一些经验。时间比较紧。只是花了几天时间来做一个demo。甚至没来得及考察其他scorm学习平台。唉。官僚主义害死人啊。
- 关于 SCORM 2004 3rd Edition Sample Run-Time Environment 的二次开发(-)learner学习信息的提取
- 关于 SCORM 2004 3rd Edition Sample Run-Time Environment 的二次开发(-)跨平台解决方案
- S60 3rd Edition和S60 3rd Edition, FP1中不同的浏览器UID
- [原创]强烈推荐,正在翻译的《Effective C++,3rd Edition》
- SCORM标准及支持SCORM标准学习平台的设计
- 利用 MDK的RTE(run-time environment)功能添加自己的pack
- Real Time UML : Advances in the UML for Real-Time Systems (3rd Edition)
- 【Real-Time Rendering 3rd】开坑的序章
- How to Run Successful Projects III: The Silver Bullet (3rd Edition)
- c++ primer 3rd edition 学习笔记(一)
- JSP,3rd Edition学习笔记(一)
- Linux Device Drivers 3rd Edition Time Delays and Deferred Work
- SCORM标准的LMS
- SCORM标准的LMS
- scorm标准的课程设计
- Uinx Shell by Example,3rd Edition第3章grep章节的答案
- [翻译] Effective C++, 3rd Edition, Item 1: 将 C++ 视为语言的联合体
- [翻译] Effective C++, 3rd Edition, Item 42: 理解 typename 的两个含义
- 使用线程,防止当前程序被阻塞
- 2007年度中文博客百条经典语录
- 企业信息管理系统 开发(完善中)
- 阿蒙:一个程序员老总的年终总结之2007
- 信息系统界面
- 关于 SCORM 2004 3rd Edition Sample Run-Time Environment 的二次开发(-)learner学习信息的提取
- 洗心革面 重新学习JSP! ----之二:过滤器(3)
- 糗事百科
- Ubuntu gutsy下frame buffer不工作
- Internet Explorer 编程简述(十)响应来自HTML Element的事件通知——几个好用的类
- 关于CString总结
- .netframework中TimeZoneInfo 类的使用
- bad day
- 动态改变元素的风格