Run Time E-learning SCORM standard
bookshelf SCORM SCORM_1.2_Overview.doc SCORM_1.2_CAM.doc SCORM_1.2_RunTimeEnv.doc
contributors Key Contributing Editors (ADL) Ron BallJeff KrinockWilliam CaponeLori MorealliJeff FallsDouglas PetersonDexter FletcherJonathan PoltrackAlan HoberneyChris SnyderPaul JesukiewiczSchawn ThroppKirk JohnsonBryce WalatMary KraulandJerry West Partial List of Contributors: Alliance of Remote Instructional Authoring & Distribution Networks for Europe (ARIADNE) ( Erik Duval Eddy Forte Florence Haenny Ken Warkentyne Aviation Industry CBT (Computer-Based Training) Committee (AICC) ( Jack Hyde Bill McDonald Anne Montgomery Institute of Electrical and Electronics Engineers (IEEE) Learning Technology Standards Committee (LTSC) ( Mike Fore Wayne Hodgins IMS Global Learning Consortium, Inc. ( Thor Anderson Steve Griffin Mark Norton Ed Walker (At Large) Bob AlcornMike Pettit Lenny GreenbergDan Rehak Chris MoffattTom Rhodes Boyd NielsenTyde Richards Claude OstynRoger St. Pierre Chantal PaquinKenny Young …and many others.
Run Time Environment LMS utente Materiale didattico standard Cosa comunicare (DATA MODEL) Come comunicarlo (API)
Run Time Environment LMS Materiale didattico standard Nome utenteStato LezioneRisult. Test…… Nome utenteStato LezioneRisult. Test…… String 128 chr Valori: Percentuale fruiz. Finita Già iniziata Segnalibro Valori: Percentuale fruiz. Finita Già iniziata Segnalibro Intero max 100 API DATA MODEL
overview Scopo di SCORM è linteroperabilità dei materiali didattici su diverse piattaforme ( Learning Management Systems, LMS). Scopo di SCORM è linteroperabilità dei materiali didattici su diverse piattaforme ( Learning Management Systems, LMS). perchè ciò possa avvenire, ci devono essere perchè ciò possa avvenire, ci devono essere un metodo comune per avviare i materiali didattici, [Launch] un metodo comune per avviare i materiali didattici, [Launch] un metodo comune per comunicare con la piattaforma [Application Program Interface (API)] e un metodo comune per comunicare con la piattaforma [Application Program Interface (API)] e Un linguaggio predefinito che sia la base delle comunicazioni. [Data Model] Un linguaggio predefinito che sia la base delle comunicazioni. [Data Model] Data model API launch
Learning Management System (LMS) Server Side Client Side Data Model Actual data sent back and forth between SCO and LMS API (Communications Link between SCO and LMS) Launch JavaScript Browser SCO API Adapter API Adapter LMS Server LMS Server Asset
Launch E responsabilità dellLMS, in base alla content structure, lanciare la giusta risorsa (Asset o SCO) E responsabilità dellLMS, in base alla content structure, lanciare la giusta risorsa (Asset o SCO) In SCORM 1.2 non è definito rigidamente il meccanismo gerarchico di lancio: può essere fornito un elenco di link riferiti ad ogni risorsa (At this time the SCORM does not address the standardization of sequencing and navigation between learning resources) In SCORM 1.2 non è definito rigidamente il meccanismo gerarchico di lancio: può essere fornito un elenco di link riferiti ad ogni risorsa (At this time the SCORM does not address the standardization of sequencing and navigation between learning resources) SCORM 1.3: simple sequencing SCORM 1.3: simple sequencing Data model API launch
Requisiti del lancio: Asset È sufficiente che siano lanciati attraverso il protocollo HTTP, È sufficiente che siano lanciati attraverso il protocollo HTTP, non è richiesta comunicazione con lLMS (no API) non è richiesta comunicazione con lLMS (no API) Data model API launch
Requisiti del lancio: SCO Può essere lanciato un solo SCO alla volta Può essere lanciato un solo SCO alla volta Uno SCO non può lanciare un altro SCO Uno SCO non può lanciare un altro SCO Lo SCO può solo essere lanciato dallLMS Lo SCO può solo essere lanciato dallLMS LLMS deve lanciare lo SCO in una finestra o in un frame dellLMS che deve esporre le API come oggetto DOM LLMS deve lanciare lo SCO in una finestra o in un frame dellLMS che deve esporre le API come oggetto DOM E responsabilità dello SCO cercare ricorsivamente lAPI Adapter e quindi iniziare la comuniczione E responsabilità dello SCO cercare ricorsivamente lAPI Adapter e quindi iniziare la comuniczione Data model API launch
API Le API sono un set predefinito di funzioni su cui lo SCO può fare affidamento Le API sono un set predefinito di funzioni su cui lo SCO può fare affidamento Un API adapter è un insieme di software che espone queste funzioni allo SCO Un API adapter è un insieme di software che espone queste funzioni allo SCO Non è responsabilità degli autori di materiali sapere come sono costruite le API, ma solo quella di usarle Non è responsabilità degli autori di materiali sapere come sono costruite le API, ma solo quella di usarle Un materiale didattico, attraverso le API, può leggere e scrivere dati Un materiale didattico, attraverso le API, può leggere e scrivere dati La comunicazione è sempre iniziata dallo SCO La comunicazione è sempre iniziata dallo SCO Data model API launch
Tipi di funzioni Execution State Execution State LMSInitialize() LMSInitialize() LMSFinish. LMSFinish. State Management State Management LMSGetLastError() LMSGetLastError() LMSGetErrorString(errornumber) LMSGetErrorString(errornumber) LMSGetDiagnostic(parameter) LMSGetDiagnostic(parameter) Data Transfer Data Transfer LMSGetValue(data model element) LMSGetValue(data model element) LMSSetValue(data model element, value) LMSSetValue(data model element, value) LMSCommit(""). LMSCommit(""). Data model API launch
Esempio di funzione: LMSInitialize Description: This function indicates to the API Adapter that the SCO is going to communicate with the LMS. It allows the LMS to handle LMS specific initialization issues. It is a requirement of the SCO that it call this function before calling any other API functions. Syntax: LMSInitialize(parameter) Parameter: "" An empty string must be passed for conformance to this standard. Values other than "" are reserved for future extensions. Return Value: String representing a boolean. "true" result indicates that the LMSInitialize("") was successful "false" result indicates that the LMSInitialize("") was unsuccessful If a return value of "false" is returned, then this signifies to the SCO that the LMS is in an unknown state and that any additional API calls will not be processed by the LMS. Example: var result = LMSInitialize("") if (result == "false") { // Do some error handling } else { // continue with the execution of the SCO } The SCO tells the API Adapter that the content wants to establish communication with the LMS. A typical return value is "true". Data model API launch
LMSInitialize() API: Transizioni di stato Data model API launch Non inizializzato finito SCO Lanciato Da LMS Responsabilit à dello SCO: trovare le API e lanciare LMSinitialize Lo SCO può chiamare: 1. LMSGetValue 2. LMSSetValue 3. LMSGetLastError 4. LMSGetErrorString 5. LMSGetDiagnositc 6. LMSCommit 7. LMSFinish LMSFinish() Solo se lLMS restituisce false lo SCO può chiamare: LMSGetLastError LMSGetErrorString LMSGetDiagnositc
Esempi: error code usage CodeDescriptionUsage 0No errorNo errors encountered. Successful API call. 101General ExceptionUsed to indicate general exceptions. 201Invalid argument errorTo be used when there is a call to a SCORM Run-Time Environment data model element that does not exist. To be used when an invalid argument is passed via the API Ex. LMSGetValue(cmi.core.zip_code) cmi.core.zip_code is not a valid CMI Data Model element. Ex. LMSInitialize(init) The LMSInitialize() expects an empty string argument. 202Element cannot have childrenTo be used when LMSGetValue() is called on any data model category or element that does not support _children. Ex. LMSGetValue(cmi.student_id._children) 203Element not an array. Cannot have count.To be used when an LMSGetValue() is called on any data model category or element that does not support _count. Ex. LMSGetValue(cmi.core._count) 301Not initializedTo be used when there is a call to any API function call before LMSInitialize() is called. Data model API launch (continua…)
API adapter: resonsabilità dellLMS L LMS deve lanciare lo SCO in una finestra o frame che siano dipendenti (figli) della finestra dell LMS che contiene lAPI Adapter. L LMS deve lanciare lo SCO in una finestra o frame che siano dipendenti (figli) della finestra dell LMS che contiene lAPI Adapter. LAPI Adapter deve essere fornito dall LMS. LAPI Adapter deve essere fornito dall LMS. Lunico meccanismo di interazione supportato è attraverso chiamate ECMAScript (JavaScript). Lunico meccanismo di interazione supportato è attraverso chiamate ECMAScript (JavaScript). L API Adapter deve essere disponibile tramite oggetto DOM con nome API. L API Adapter deve essere disponibile tramite oggetto DOM con nome API. Data model API launch
API adapter: resonsabilità dello SCO Cercare le API Cercare le API Chiamare, al minimo, le funzioni LMSinitialize() e LMSfinish() Chiamare, al minimo, le funzioni LMSinitialize() e LMSfinish() Data model API launch
Data Model Lo scopo è fornire a differenti SCO la possibilità di comunicare in modo comune verso le piattaforme (es.: punteggio ottenuto) Lo scopo è fornire a differenti SCO la possibilità di comunicare in modo comune verso le piattaforme (es.: punteggio ottenuto) E espandibile: in futuro verranno inseriti nuovi valori E espandibile: in futuro verranno inseriti nuovi valori Si basa su AICC CMI Data Model (ridotto) Si basa su AICC CMI Data Model (ridotto) Data model API launch
Data Model: regole per i nomi La prima parte del nome indica il modello di riferimento (CMI nel nostro caso) La prima parte del nome indica il modello di riferimento (CMI nel nostro caso) Questo permette future implementazioni Questo permette future implementazioni Reserved keyword Reserved keyword Precedute da _underscore Precedute da _underscore _version, _children, _count _version, _children, _count Tutte le matrici sono a partire da 0 Tutte le matrici sono a partire da 0 Tutti i nomi sono case sensitive Tutti i nomi sono case sensitive Ogni SCO ha accesso solo ai propri dati, non a quelli di altri SCO Ogni SCO ha accesso solo ai propri dati, non a quelli di altri SCO Data model API launch
Data Model: elementi Alcuni obbligatori, altri opzionali Alcuni obbligatori, altri opzionali Tutti gli elementi obbligatori devono essere supportati dallLMS Tutti gli elementi obbligatori devono essere supportati dallLMS Tutti gli elementi sono opzionali per gli SCO Tutti gli elementi sono opzionali per gli SCO Lo SCO è obbligato solo a chiamare LMSInitialize() e LMSfinish(), non sono obbligati a leggere (LMSGetValue()) o scrivere (LMSSetValue()) dati Lo SCO è obbligato solo a chiamare LMSInitialize() e LMSfinish(), non sono obbligati a leggere (LMSGetValue()) o scrivere (LMSSetValue()) dati Nota di SCORM: gli SCO possono essere piccoli (very, very small) e non essere progettati per comunicare nel dettaglio. Tuttavia, se devono comunicare, devono poterlo fare in qualsiasi LMS allo stesso modo Nota di SCORM: gli SCO possono essere piccoli (very, very small) e non essere progettati per comunicare nel dettaglio. Tuttavia, se devono comunicare, devono poterlo fare in qualsiasi LMS allo stesso modo Data model API launch
cmi.core: obbligatori per ogni LMS cmi.core_children: per determinare quali elementi del core sono supportati dalla piattaforma cmi.core_children: per determinare quali elementi del core sono supportati dalla piattaforma cmi.core.student_id: per identificare univocamente uno studente cmi.core.student_id: per identificare univocamente uno studente cmi.core.student_name: student official name cmi.core.student_name: student official name cmi.core.lesson_location: identifica lultima posizione dello studente cmi.core.lesson_location: identifica lultima posizione dello studente cmi.core.credit: indica se lo studente sta usando lo SCO per avere crediti (sì/no) cmi.core.credit: indica se lo studente sta usando lo SCO per avere crediti (sì/no) cmi.core.lesson_status: passed, completed, failed, incomplete, browsed, not attempted cmi.core.lesson_status: passed, completed, failed, incomplete, browsed, not attempted cmi.core.entry: indica se lo studente è gia stato in questo SCO (ab initio, resume) cmi.core.entry: indica se lo studente è gia stato in questo SCO (ab initio, resume) cmi.core.score._children:per determinare quale score children è supportato dallLMS cmi.core.score._children:per determinare quale score children è supportato dallLMS cmi.core.score.raw: a 0 al primo accesso, poi viene incrementato cmi.core.score.raw: a 0 al primo accesso, poi viene incrementato cmi.core.score.max: il massimo punteggio ottenibile cmi.core.score.max: il massimo punteggio ottenibile cmi.core.score.min: il minimo puntggio ottenibile cmi.core.score.min: il minimo puntggio ottenibile cmi.core.total_time: tempo totale passato dallo studente sulla lezione cmi.core.total_time: tempo totale passato dallo studente sulla lezione cmi.core.lesson_mode: indica tre modalità di utilizzo al lancio: browse, normal, review cmi.core.lesson_mode: indica tre modalità di utilizzo al lancio: browse, normal, review cmi.core.exit: indica la ragione per cui lo studente è uscito dallo SCO (timeout, suspend, logout) cmi.core.exit: indica la ragione per cui lo studente è uscito dallo SCO (timeout, suspend, logout) cmi.core.session_time: tempo passato dallo studente nella corrente sessione cmi.core.session_time: tempo passato dallo studente nella corrente sessione Data model API launch
SCO opzionale LMS Scelta dello SCO da lanciare, in base a: Richiesta dellutente Automatica Si usano le informazioni di content structure allinterno del content aggregation Analisi di cmi.core.lesson_mode: è prevista la scelta da parte dellutente? opportuni cambiamenti a cmi.core.lesson_mode Inizializzazione di cmi.core.entry Lancio dello SCO Messa a disposizione delle API: LMSInitialize LMSGetValue LMSSetValue LMSGetLastError LMSGetErrorString LMSGetDiagnositc LMSCommit LMSFinish Settaggio mastery score Ricerca delle API Chiamata LMSInitialize() Chiamata LMSFinish() Chiamata LMSLaunch_data(), se supportata dallo SCO Chiamata LMSGetValue(cmi.core.entry) per riportare lo studente nellultima posizione Chiamata LMSGetValue(cmi.core.lesson_mod e) per identificare la modalità duso della lezione Chiamata LMSSetValue() con qualsiasi dato si voglia registrare Chiamata LMSCommit() API Data Model