以前從來沒有做過SCORM的課件,自從認識這個SCORM來,一直是做LMS罷了.
只是BOSS這些天強烈建議我學會做一個內容包.算一下好象快三天了.不過今天總算是把它拿下來了!
其實早就應該發現這個問題的.我一直沒在SCO中加入對應的JS(只前些天,我也無心做這個東西.可惡!).
<
SCRIPT?LANGUAGE
=
JAVASCRIPT?SRC
=
"
util/APIWrapper.js
"
></
SCRIPT
>
<
SCRIPT?LANGUAGE
=
JAVASCRIPT?SRC
=
"
util/SCOFunctions.js
"
></
SCRIPT
>
<
SCRIPT?language
=
"
javascript
"
>
?loadPage();
?
var
???studentName?
=
?
"
!
"
;
?
var
???lmsStudentName?
=
?doLMSGetValue(??
"
cmi.core.student_name
"
?);
?
?
if
?(?lmsStudentName??
!=
?
""
?)

?
{
????studentName?
=
?
"
?
"
?
+
?lmsStudentName?
+
???
"
!
"
;
?}
?
?document.write(studentName);
?doContinue('completed');
?
</
SCRIPT
>
好象發現所以SCO頁面中的都有這些始化的代碼(SCORM1.2).
我摸著這個API一直往下走!在一個叫cmidatamodel_1.1.jar的包下總算是找到了一點眉目.接著一陣狂反編譯...
只是最后的結果令我有些郁悶,不知道是不是自己搞錯了.getvalue的方法對了student_name 好象總是空的!
主要部分代碼如下:
student_name?=?new?Element("",?"checkString255",?"NULL",?false,?true,?true);


.

String?s1?=?new?String("");
????????Class?class1?=?obj.getClass();
????????try

????????
{
????????????Field?field?=?class1.getField(s);
????????????Element?element?=?(Element)field.get(obj);
????????????if(element.isReadable())

????????????
{
????????????????s1?=?element.getValue();

?初步判斷,class1就是CMICore.java類了.student_name 是在其中構造函數中初始化的!
element 代碼如下:
public?Element(String?s,?String?s1,?String?s2,?boolean?flag,?boolean?flag1,?boolean?flag2)

????
{
????????value?=?s;
????????type?=?s1;
????????vocabularyType?=?s2;
????????writeable?=?flag;
????????readable?=?flag1;
????????if(s.equalsIgnoreCase(""))
????????????initialized?=?false;
????????else
????????????initialized?=?true;
????????mandatory?=?flag2;
????????implemented?=?true;
????}

?public?String?getValue()

????
{
????????return?value;
????}


沒有輸出的跟蹤過!只是在代碼上看了一趟!它完全沒有跟DB發生交互(廢話,人家的東西都放到包里了,怎么可能與DB發生關系!),也許這本身就是1.2版本的一個特性吧!再說API本來就可以人為定義(我以前處理的時候可不是這樣做的).當然除此外有些地方與DB交互了......
雖然對這一點不是太了解,但BOSS交代的總算是完成了,下午還寫了個說明文檔(如何做出來的). 狂暈!越寫越感覺自己SB!
剛剛,同事上來說(8樓,除了上WC我簡直不想到任何地方去.)外面的要下雨了! 正打算閃人,可是還是很負責任地跑到窗戶往外看了一眼(理智戰勝情感了).保守估計,暫時不會下....? 又是一陣開機!因為我想記一些東西....
實在是亂七八糟地在寫.所以也不敢發到首頁去!不然又要被BS....