国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SCORM標準應用編程接口(API)和數據模型(Data Model)學習及總結

ThinkSNS / 2307人閱讀

摘要:需要對每個用戶的每個內容對象維護一個數據結構。并沒有直接和相連,所以是將數據由暫存的內存中取出。采用實現的可用進行數據提交。記錄的完成情況,包括未嘗試未學習未完成,已完成。

簡介

SCORM定義了一個網絡化學習的“內容聚合模型”(Content Aggregaion Model)和學習對象的“實時運行環境”(Run-time Environment)。
簡單說,它是為了滿足對網絡化學習內容的高水平要求而設計的模型,參考了一系列相關技術規范。
這個模型由內容模型(Content Model)、元數據(Meta-data)和內容包裝(Content Packaging)三部分組成。
Scorm RTE定義了通用的內容對象運行機制,包括Launch、API以及Data Model。
Launch: 定義了內容對象的發布,描述了如何啟動一個Scorm內容對象(Asset和SCO兩種),并確立了內容對象和LMS之間的通信機制。
API: 定義了LMS與內容對象之間的通信API,使得內容對象在需要時通過API與LMS進行交互存取數據。API會將獲得的數據模型實例存儲在用戶端的內存中(如一個JavaScript對象),并在需要時將該數據發送至LMS平臺。
Data Model: 描述了跟蹤用戶學習通用數據模型,即內容對象在與LMS進行通信時所依賴的數據結構,包括用戶的學習時間、完成狀態、成績等元素。LMS需要對每個用戶的每個內容對象維護一個Data Model數據結構。

API提供了內容對象與LMS通信的接口,而DM則描述了通信所使用的數據模型,API+DM使得內容對象在不同的LMS系統中具有了通用性。

更詳細的介紹請參考scorm百度百科和SCORM維基百科。

下面時自己查閱資料,歸納整理的SCORM標準中API接口和Data Model參數詳解,以便各位同行開發時查閱使用,也是自己學習過程的總結記錄,不正確之處請大家指正。

應用編程接口(API)

在SCORM標準中,SCO(SharableContentObject)是LMS通過SCORMRTE(運行時間環境)可以跟蹤的最低粒度水平的學習資源,它們的通訊由APIAdapter(適配器)來完成。

API定義了八個主要的function,分別是LMSInitilizeLMSFinishLMSSetValueLMSGetValueLMSCommitLMSGetLastErrorLMSGetErrorStringLMSGetDiagnostic,其中LMSGetValueLMSSetValue最為復雜,也是跟蹤中使用頻率最高的,通訊過程中使用DataModel(數據模型)來記錄跟蹤信息。

LMSInitilize

LMSInitilize初始化函數,負責在當前學習的內容對象和LMS之間建立通信連接,并從LMS取得該當前用戶關于當前內容對象的學習記錄信息,即整個DM數據結構。內容對象在載入時均會通過該方法獲得初始運行時數據。函數成功執行返回"true”(字符串,非布爾值,下同),否則返回"false”。
當學習者進入開始閱讀一個SCO時,SCO第一步就是調用LMSInitialize判斷該學員之上課記錄,當學員第一次閱讀該門課的該SCO時,LMSInitialize就會將設定初值至相關的環境變量;若學習者并不是第一次閱讀該SCO,LMSInitialize則必須將該學習者之前的上課記錄取出,并存入環境變量中,如此即完成啟動SCO之動作。

LMSFinish

LMSFinish結束函數,結束一個內容對象與LMS的通信連接。內容對象在退出前均會調用該方法。通常實現時,該方法會調用LMSCommit提交一次最近的數據。當LMS平臺在API實現時,選擇HTTP協議進行無狀態通信,則該函數本身將不產生數據通信,僅僅是調用LMSCommit提交一次數據。成功執行返回"true”,否則返回"false”。
當學習者閱讀完并要離開一個SCO時,在結束時SCO便會調用LMSFinish將環境變量重設,并判斷該SCO是否在結束之前己經有調用過LMSCommit將所有記錄回存至LMS,若尚未儲存,則會自動調用并將所有學習者在該SCO的上課記錄回存。

LMSSetValue

LMSSetValue負責更新一個數據模型的屬性值。該方法原型為LMSSetValue(element, value),參數element標識要設置的屬性,value則是屬性的值。LMSSetValue 是相當復雜的Function,負責儲存所有相關的學習記錄,當SCO調用LMSSetValue欲將某個data model回存時,LMSSetValue第一步先判斷所欲回存之data model,判斷該data model是否可以set(寫入),其次判斷其型別,當型別錯誤時,記錄其Error Code,當型別檢查通過時,則依SCORM1.2 RTE所訂定該data model的處理規則,并將數據存入內存中。例如,內容對象在需要更改DM的某一屬性值時會調用該函數,如當用戶完成學習一個內容對象后需將該內容對象的cmi.core.lesson_status更新為completed。通常該函數只是更新客戶端內存中該屬性的值,而非直接提交至LMS平臺。函數成功執行返回"true”,否則返回"false”。

LMSGetValue

LMSGetValue獲取一個數據模型的屬性值。該方法原型為LMSGetValue(element),參數element,表示屬性名。通常該方法直接從客戶端內存中取出所需的值。成功執行則返回對應的屬性值,否則返回空字符串。當SCO調用LMSGetValue時,LMSSetValue會先判斷data model是否可以讀取,若不可讀取,則寫入其錯誤代碼;若該data model是可以讀取,則進取出其值并回傳給SCO。LMSSetValue并沒有直接和receiver相連,所以是將數據由暫存的內存中取出。

LMSCommit

LMSCommit提交函數,負責將客戶端內存中目前的RTE數據提交至LMS平臺,由平臺完成最后的分析寫入工作。所以當LMSCommit被調用時,會將所有之暫存數據組成XML文件,再應用XMLHTTP對象將數據POST到 Receiver,當Receiver收到這個Request時,就會解譯所傳入之XML文件,再將XML文件中的數據直接存入數據庫中。采用JS實現的API可用AJAX進行數據提交。成功返回"true”,否則返回"false”。

LMSGetLastError

LMSGetLastError獲得錯誤碼,當內容對象調用API時返回"false"或產生其他錯誤時,可調用該函數獲得具體的錯誤代碼,API實現中需要設置相應的錯誤碼。

LMSGetErrorString

LMSGetErrorString獲得錯誤碼對應的字符串說明,參數為錯誤碼。

LMSGetDiagnostic

LMSGetDiagnostic獲得針對當前錯誤的診斷信息,參數為錯誤碼。

數據模型(Data Model)

Scorm1.2 RTE數據模型部分定義了跟蹤內容對象的數據結構。LMS平臺需要為每個用戶的每個內容單元維護一組數據模型實例,該實例數據記錄了該用戶對應于該內容對象的學習狀態(如分數、進度、完成狀態等)。
DM中所有的屬性均以cmi開頭,以”.“分隔。同時數據模型中定了了三個關鍵字:children、_count,保留的關鍵字受LMS管理,且均為只讀(如使用LMSSetValue設置_version屬性,則會返回false,且API應在實現時將錯誤碼置為402)。
version: 標識了LMS平臺支持的數據模型版本,該屬性不可用于數據模型元素上(即只能以cmi._version方式獲取)
children:返回某一數據模型元素的所有子屬性(元素),以字符串形式返回,并以執行的分隔符分隔
_count: 返回一個數據模型元素集合中包含的元素總數,僅用于集合類型的數據模型
數據模型元素可以分為9類,如下:

cmi.core: 核心數據,該組中元素屬性LMS必須支持

要求所有的CMI系統都提供的信息,所有SCO在啟動運行時都需要這些信息,子數據項有:.Student ID(學生學號)、.Student Name(學生姓名)、.Output Mechanism(輸出機制)、.Lesson Location(課的位置)、.Credit(學分)、.Lesson Status(課的狀態)、.Entry(入口)、.Information Store(信息存儲)、.Score(分數)、.Total Time(總時間)、.Lesson Mode(課的模式);

1. cmi.core.total_time:

這個參數是指學習本sco用的總時間,只能讀,不能寫,它由平臺自動累加,而在課程中只需上傳每次學習sco的時間,即回話時間(cmi.core.session_time),即可。當然,在從平臺讀取數據時,還是要取一次的。

var totalTime = doLMSGetValue("cim.core.total_time");
alert("您目前這個單元的總學習時長時間是:" + totalTime);

2. cmi.core.score.raw;

這個參數是測試成績,可讀可寫。如果不上傳,則為空,在平臺計算成績時就不會計算在內。如果上傳,則至少為0。有的平臺,要求計算課程的平均得分,若sco中沒有測試題,不用上傳成績,則最好去掉上傳成績的語句,不讓會把整個課程的平均成績拉下來的。

3. cmi.core.lesson_location;

這個參數是記錄上次離開sco時的位置,課件讀取后,可依次進入到上次離開的位置,當然,這要在課程中做相應的設置才行。
cmi.core.lesson_location的作用,總的來說就只有一個定位,分開來說有幾種情況,這樣比較好理解。
1、 收藏書簽的功能
在一個SCO的學習中,系統可以提供一個書簽按鈕來保存他在這個學習過程中所自己設定的位置。
2、 課程定位的功能
如果在一個SCO中有多個學習的頁面或者內容,可以使用cmi.core.lesson_location來進行設置位置在哪里,快速調用位置。與收藏的類似。

在同一個學習內容中,比如HTM中很多段落的文字,我們可以利用“錨點”來進行位置的設定,達到學生進入時的內容定位。
如果客戶端(也就是教材)沒有對cmi.core.lesson_location讀寫操作的話,那這個cmi.core.lesson_location就是空的,定位就是靠exit和entry以及通過launch的動作來完成。

4. cmi.core.lesson_status;

記錄sco的完成情況,包括not attempted(未嘗試/未學習)、incomplete(未完成),completed(已完成)。在平臺上,課程的進度實際上是(已完成的sco數/sco總數)×100%。所以若是單sco的課程,就則只有兩種,0%和100%。而sco內部的記錄跟平臺是沒有關系的。

cmi.core.lesson_staus是專門形容SCO本身的學習情況,總共分為下面六種,而這些狀態由SCO與LMS共同維護。

passed(通過)
completed(已完成)
browsed(瀏覽)
incomplete(非完成)
failed(失敗)
not attempted(未嘗試)

當LMS發行SCO時,必須將學習狀態值初始化為“not attempted”,接著將狀態的控制權轉移給SCO。至于SCO可以采用不同的策略決定何時將學習狀態值由“not attempted”轉換至“incomplete”,例如:某教師認為當學習者進入SCO時,SCO就應轉換至“incomplete”的狀態,另外可能也有教師認為學習者必須符合某些條件或執行某些操作時,SCO才能轉換至“incomplete”的狀態,
這些完全取決于教學設計者的考慮,并沒有任何使用上的限制。教學設計者可以在學習者完成此SCO的學習時,將學習狀態值轉換至“completed”,至于認定學習者完成學習的方式與作法,也是由教學設計者自行決定。而且SCO可以根據不同的衡量方式將學習狀態值轉換至“passed”或者“failed”的狀態。

雖然SCO可以設定學習狀態值,但是SCORM并沒有強制規定SCO必須設定學習狀態值,因此LMS必須采取下列對應的處理方式,維持學習狀態值。

1). 當LMS啟動SCO時,必須將狀態初始化為“not attempted”。
2). 當LMS收到LMSFinish的命令,但lesson_status的狀態不是“not attempted”或“incompleted”時,則必須重新檢驗其狀態。
3). 當cmi.core.credit的值為“credit”,而且cmi.student_data.mastery_score與cmi.core.score均含有成績時,比較兩者的分數。若mastery_score大于score, 則更改lesson_status的值為“passed”,反之則更改為“failed”。
4). 當cmi.core.credit的值為“credit”,但是cmi.student_data.mastery_score沒有成績時,則維持lesson_status的值不變,也就是保留SCO設定的值。
5). 當cmi.core.credit的值為“no-credit”時,而且cmi.core.lesson_mode為 “browse”時,更改其值為“browsed”。
6). 當cmi.core.credit的值為“no-credit”時,但是cmi.core.lesson_mode不為“browse”或元素根本不存在時,維持lesson_status的值不變,也就是保留SCO設定的值。

5. cmi.core.exit

當非正常退出時,會設置為suspend(懸掛,即暫停的意思),
根據學習時間的判斷sco的完成狀態,利用學習者進入該sco學習過的學習時間與視頻的時間長短來進行比較,從而達到來判斷他學習時間是不是符合完成的狀態判斷,否則為未完成狀態。
RTE中提供的元素未cmi.core.total_time。

var time=doLMSGetValue( "cmi.core.total_time");
     arr=time.split(":");
     hh=Number(arr[0]);
     mm=Number(arr[1]);
     ss=Number(arr[2]);

     hms=hh*3600+mm*60+ss + currentSeconds;
     alert(hms);

     if (hms>=60){  //這里設定的時間60秒,這個時間可以自己根據本節sco的視頻學習時間需求進行更改。
          result = doLMSSetValue("cmi.core.lesson_status", "completed");
     }
     else{
          result = doLMSSetValue("cmi.core.lesson_status", "imcomplete");
     }
cmi.suspend_data: 暫存數據

存儲內容對象在恢復時所需的特定數據。
在學生使用課程過程中產生的信息,這些信息用于下一次繼續學習,比如包含課重啟所需要的信息;

cmi.launch_data: 內容對象運行時所需的數據

在SCO創建時產生的信息,對SCO啟動運行要求的說明,SCO啟動所需信息的提供,每次啟動SCO時都需要它,通常在SCO交換數據中定義;

cmi.comments:

關于內容對象的評論數據,一般來自用戶評論 。
教師設置的一些評語信息,在滿足一定條件的時候,SCO將把這些信息呈現給學生;

cmi.comments_from_lms:

LMS平臺對內容對象的評論信息

cmi.objectives:

針對內容對象的個人目標集合 。
描述學生對于SCO中每個目標的完成情況,包括的子數據項有:.Id(目標編號)、.Score(目標得分)、.Status(目標狀態);

cmi.student_data:

基于用戶偏好的內容對象自定義信息,如運行時間限制 。
而學生數據是在學生開始課程以后和學習課程當中,CMI系統所了解的學生的情況。學生數據為學生在課程中的表現。包括的子數據項有:.Mastery Score(掌握得分)、.Max Time Allowed(最大允許時間)、.Time Limit Action(限時反應);

cmi.student_preference: 針對內容對象的用戶偏好設置

SCO的參數與選項,可通過參數設置來調整SCO的表現與行為,包括的子數據項有:.Audio(音頻)、.Language(語言)、.Speed(速度)、.Text(文本)、.Video(視頻),e-Learning 教學設計:E-Learning成功保證;

cmi.interactions: 用戶交互信息

學生通過計算機輸入時產生的可記錄與可識別的信息,它可以記錄學習者與SCO每次交互的詳細信息,.id(交互編號)、.objectives(交互目標)、.time(交互時間)、.type(交互類型)、.correct_responses(正確響應次數)、.weighting(交互的權重)、.student_response(學生響應)、.result(交互結果)、.latency(交互延遲)。

元素取值:

1) model類型:

list[0] = "normal"; //正常

list[1] = "review"; //回顧

list[2] = "browse"; //瀏覽

2) status類型:

list[0] = "passed"; //通過

list[1] = "completed";//完成

list[2] = "failed"; //失敗

list[3] = "incomplete";//未完成

list[4] = "browsed"; //瀏覽

list[5] = "not attempted";//未參加

3) Exit類型:

list[0] = ""; //空,可能是強制退出或是未退出的狀態

list[1] = "time-out"; //超時后退出

list[2] = "suspend"; //暫停(非正常退出時標識為“掛起”狀態)

list[3] = "logout"; //正常退出

4) Credit類型:(學分)

list[0] = "credit"; //有學分

list[1] = "no-credit";//無學分

5) Entry類型: (是否已進入)

list[0] = ""; //空(已完成) 有待討論

list[1] = "ab-initio"; //中間

list[2] = "resume"; //重新開始

6) TimeLimitAction類型:時間界限

list[0] = ""; //空

list[1] = "exit,message"; //退出,反饋信息

list[2] = "exit,no message"; //退出,無反饋信息

list[3] = "continue,message"; //繼續,反饋信息

list[4] = "continue,no message";//繼續,無反饋信息

7) Interaction類型:課件與平臺產生的交互信息

list[0] = "true-false"; //true or false

list[1] = "choice"; //選擇

list[2] = "fill-in"; //填寫

list[3] = "matching"; //搭配

list[4] = "performance";//性能

list[5] = "likert"; //?

list[6] = "sequencing"; //排序

list[7] = "numeric"; //數字

8) result類型:結果

list[0] = "correct"; //正確

list[1] = "wrong"; //錯誤

list[2] = "unanticipated";//非正常

list[3] = "neutral"; //中立

數據類型

數據類型 描述
CMIBlank 空字符串
CMIBoolean bool字符串ture或false
CMIDecimal 帶小數的數字
CMIFeedback 描述interaction屬性中的內容的結構
CMIIdentifier 字母數字混合的字符串,不包含空格和非打印字符,不超過255
CMIInteger 整數(0, 65536)
CMISInteger 有符號整數(-32768, 32768)
CMIString255 ASCII字符串,不超過255
CMIString4096 ASCII字符串,不超過4096
CMITime 時間類型,HH:MM:SS.SS
CMITimespan 時間間隔,格式同上
CMIVocabulary 單詞表,類似枚舉類型

元素屬性

cmi.core元素屬性:




scorm標準的LMS在客戶端的運行機制

對SCORM課件的學習跟蹤是通過LMS和SCORM課件的交互來實現的。

1.在LMS服務器端:

(1)LMS首先決定哪一個SCO將要運行,同時加載DataModel庫;

(2)設定SCO的運行模式,包括預覽模式、普通模式和復習模式,其中預覽模式只是運行課件,而不進行學習跟蹤;

(3)設定學員的學習狀態,包括“ab-initio”(初次學習)、“resume”(再次學習)和“”(已完成)三種狀態;

(4)加載并運行SCO;

(5)通過APIAdapter實現LMS與SCORM課件的交互,完成數據模型的讀寫操作。

2.在LMS客戶端:

(1)運行SCORMAPIAdapter;

(2)調用API初始化函數;

(3)加載課件SCO初始化數據;

(4)獲取DataModel中的用戶ID和用戶姓名;

(5)獲取DataModel中cmi.core.lesson_status值,即當前用戶對當前SCO的學習狀態,包括Completed、Incomplete、Passed、Failed等七種狀態;

(6)獲取數據模型中的cmi.core.entry值,該值判斷當前用戶是否第一次學習當前SCO。如果值為“ab-initio”,則表示當前用戶是首次學習;如果值為“resume”,則表示用戶是再次學習當前SCO;

(7)獲取數據模型中的cmi.core.lesson_mode值,該值判斷當前用戶訪問當前SCO的方式,包括Browse(預覽,不跟蹤學習)、Normal(跟蹤學習)、Review(復習)三種模式;

(8)獲取數據模型中的cmi.core.score.raw值,該值用來存放每一個學員在每一個SCO的學習過程中所累積的總成績。如果當前SCO有評測就會記錄當前用戶的評測總成績,沒有就不記錄。LMS可借此DataModel作學習者成績分析。如果用戶是初次學習當前SCO,系統就會初始化cmi.core.score.raw的值為“”(空值);

(9)獲取數據模型中的cmi.core.lesson_location值。LMS借此DataModel記錄每一個用戶最后一次學習哪一個SCO,以便下一次重新進入該課程時可以直接跳轉到上次學習位置繼續學習,相當于書簽的功能;

(10)用戶開始學習當前SCO,在學習過程中會記錄一系列數據模型的值,用于學習跟蹤。其中cmi.core.session_time用來記錄每個學員每次學習的時間,包括每個用戶進入每個SCO的停留時間及訪問的日期。在當前用戶結束對當前SCO的學習時,LMS則會記錄cmi.core.total_time的值,cmi.core.total_time表示當前用戶對每個SCO學習所花的總時間;

(11)執行LMSCommit(Parameter)接口函數。該函數主要是用來提交數據模型元素的值,LMSCommit發生在LMSfinish之前;

(12)執行LMSFinish()函數。當用戶學習完并要離開一個SCO時,便會調用LMSFinish()。LMSFinish()主要負責將環境變量重設,并判斷該SCO是否在結束之前己經調用LMSCommit()將所有記錄存儲到LMS。若尚未儲存,則會自動調用LMSCommit()將當前用戶在當前SCO的學習記錄保存。

參考資料

scorm百度百科
SCORM維基百科
scorm標準的LMS在客戶端的運行機制
Scorm標準學習——Scorm RTE API與數據模型
SCORM標準及支持SCORM標準學習平臺的設計
scorm標準中的cmi.core.lesson_location詳解
scorm1.2標準中的datamodel詳解

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107368.html

相關文章

  • 全棧開發自學路線

    摘要:前言這里筑夢師是一名正在努力學習的開發工程師目前致力于全棧方向的學習希望可以和大家一起交流技術共同進步用簡書記錄下自己的學習歷程個人學習方法分享本文目錄更新說明目錄學習方法學習態度全棧開發學習路線很長知識拓展很長在這里收取很多人的建議以后決 前言 這里筑夢師,是一名正在努力學習的iOS開發工程師,目前致力于全棧方向的學習,希望可以和大家一起交流技術,共同進步,用簡書記錄下自己的學習歷程...

    galaxy_robot 評論0 收藏0
  • 全棧開發自學路線

    摘要:前言這里筑夢師是一名正在努力學習的開發工程師目前致力于全棧方向的學習希望可以和大家一起交流技術共同進步用簡書記錄下自己的學習歷程個人學習方法分享本文目錄更新說明目錄學習方法學習態度全棧開發學習路線很長知識拓展很長在這里收取很多人的建議以后決 前言 這里筑夢師,是一名正在努力學習的iOS開發工程師,目前致力于全棧方向的學習,希望可以和大家一起交流技術,共同進步,用簡書記錄下自己的學習歷程...

    Scorpion 評論0 收藏0
  • 從懵逼到再入門——JavaEE完整體系架構

    摘要:軟件開發體系架構兩層架構傳統的客戶服務器系統僅只簡單地基于兩層體系來構建,即客戶端前臺和企業信息系統后臺,沒有任何中間件,業務邏輯層與表示層或數據層混在一起。 showImg(https://segmentfault.com/img/remote/1460000007090113); 理想的建筑師應該既是文學家又是數字家,他還應通曉歷史,熱衷于哲學研究,精通音樂,懂得醫藥知識,具有法學...

    ZweiZhao 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<