[英]SCORM: is this a proper behaviour for commiting data to the LMS
我有流動的問題。 我正在制作一個服裝課程,該課程基於SCORM 2004第三版,並已部署在SABA LMS上。 我在做什么是:
現在,我針對不同的數據字段執行了幾次此操作,我們將其稱為“ X”,“ Y”和“ Z”。
我期望的是對服務器的第一個請求,就是看到僅發送“ X”,而這正是我所看到的。 然后在第二秒,我希望只看到“ Y”,但這是我不明白的地方,我看到API發送了“ X”和“ Y”。 當然3號會發送“ X”,“ Y”和“ Z”
您可以了解我的擔心。 我的意思是,每次我想要如此保存0.1k數據時,我都必須提出40-50K的請求。
如果這是SCORM的問題,我正在使用的特定LMS(SABA)還是我做錯了什么,誰能向我解釋?
這不是SCORM的事情。 SCORM只是告訴您API(GetValue,SetValue,Commit等)以及每個調用的一般行為。 但這並不能決定LMS實際如何執行這些操作。 看來LMS正在保存數據客戶端。 因此,當您設置X時,它將保存在本地。 當您調用Commit時,LMS將獲取所有數據客戶端並將其發送回服務器。 稍后,當您設置Y和Z時,它會做同樣的事情-獲取所有數據並將其發送回LMS。
沒有讓LMS改變其行為,我認為您真的無能為力。 我的經驗法則是僅在確實需要時才提交。 您可以只為X,Y和Z調用SetValue,然后僅在轉到另一個SCO或達到必須將這些數據保存到LMS的地步時才提交。
首先,我想說的是您沒有做錯任何事情,這完全是API的錯誤-這是我今天遇到的第二種API(巧合),它是在做錯誤的做法:
有好的做法和想法,有的不好的想法-不幸的是,不好的想法和代碼要快得多,因此人們在組合客戶端API時往往不會考慮這些事情。
其他注意事項:
API中的數據可以幾種方式存儲,但是我可以選擇一個標准的Javascript對象,每個鍵是cmi鍵,值是一個帶有各種標志和緩存的對象(或數組)值以及當前值(用於后續的GetValue / Commit調用)。
最后,請記住,Commit本身是可選的-在調用SetValue一段時間后,API本身應有效地對其進行調用。
因此,重復我的第一句話-不是您的錯,完全是所提供的API的錯。 對其進行更改應該很容易-在服務器端,僅需要支持合並而不是替換發送的數據即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.