Run Time E-learning SCORM standard bookshelf SCORM SCORM BOOK 1: The SCORM Overview SCORM_1.2_Overview.doc BOOK 2: The SCORM Content Aggregation Model BOOK 3: The SCORM Run Time Environment SCORM_1.2_CAM.doc Meta-data Dictionary (from IEEE) Content Packaging (from IMS) Content Structure (derived from AICC) (Meta-data XML Binding and Best Practice (from IMS) Data Model (from AICC) Launch, Communication API (from AICC) 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) (http://www.ariadne-eu.org/) Erik Duval Eddy Forte Florence Haenny Ken Warkentyne Aviation Industry CBT (Computer-Based Training) Committee (AICC) (http://www.aicc.org/) Jack Hyde Bill McDonald Anne Montgomery Institute of Electrical and Electronics Engineers (IEEE) Learning Technology Standards Committee (LTSC) (http://ltsc.ieee.org/) Mike Fore Wayne Hodgins IMS Global Learning Consortium, Inc. (http://www.imsglobal.org/) 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 utente Materiale didattico standard Cosa comunicare (DATA MODEL) Come comunicarlo (API) LMS Run Time Environment LMS Nome utente String 128 chr Valori: Percentuale fruiz. Finita Già iniziata Segnalibro Nome utente DATA MODEL Stato Lezione Risult. Test …… …… API Intero max 100 Stato Lezione Risult. Test Materiale didattico standard …… …… overview Scopo di SCORM è l’interoperabilità dei materiali didattici su diverse piattaforme ( Learning Management Systems, LMS). perchè ciò possa avvenire, ci devono essere un metodo comune per avviare i materiali didattici, [Launch] un metodo comune per comunicare con la piattaforma [Application Program Interface (API)] e Un linguaggio predefinito che sia la base delle comunicazioni. [Data Model] launch API Data model Learning Management System (LMS) LMS LMS Server Server Server Side Client Side Browser Data Model Actual data sent back and forth between SCO and LMS Asset SCO API API Adapter Adapter JavaScript JavaScript API (Communications Link between SCO and LMS) Launch launch API Data model Launch E’ responsabilità dell’LMS, 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) SCORM 1.3: simple sequencing launch API Data model Requisiti del lancio: Asset È sufficiente che siano lanciati attraverso il protocollo HTTP, non è richiesta comunicazione con l’LMS (no API) launch API Data model Requisiti del lancio: SCO Può essere lanciato un solo SCO alla volta Uno SCO non può lanciare un altro SCO Lo SCO può solo essere lanciato dall’LMS L’LMS deve lanciare lo SCO in una finestra o in un frame dell’LMS che deve esporre le API come oggetto DOM E’ responsabilità dello SCO cercare ricorsivamente l’API Adapter e quindi iniziare la comuniczione launch API Data model API 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 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 La comunicazione è sempre iniziata dallo SCO launch API Data model Tipi di funzioni Execution State LMSInitialize(“”) LMSFinish. State Management LMSGetLastError() LMSGetErrorString(errornumber) LMSGetDiagnostic(parameter) Data Transfer LMSGetValue(data model element) LMSSetValue(data model element, value) LMSCommit(""). launch API Data model 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". launch API SCO Lanciato Da LMS Data model API: Transizioni di stato LMSInitialize(“”) inizializzato Non inizializzato LMSFinish(“”) finito Lo SCO può chiamare: Responsabilit à dello SCO: trovare le API e lanciare LMSinitialize 1. 2. 3. 4. 5. 6. 7. LMSGetValue LMSSetValue LMSGetLastError LMSGetErrorString LMSGetDiagnositc LMSCommit LMSFinish Solo se l’LMS restituisce ‘false’ lo SCO può chiamare: •LMSGetLastError •LMSGetErrorString •LMSGetDiagnositc launch API Data model Code Description Usage “0” No error No errors encountered. Successful API call. “101” General Exception Used to indicate general exceptions. “201” Invalid argument error To 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. “202” Element cannot have children To be used when LMSGetValue() is called on any data model category or element that does not support _children. Ex. LMSGetValue(“cmi.student_id._children”) “203” Element 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”) “301” Not initialized To be used when there is a call to any API function call before LMSInitialize(“”) is called. (continua…) Esempi: error code usage launch API Data model API adapter: resonsabilità dell’LMS L’ LMS deve lanciare lo SCO in una finestra o frame che siano dipendenti (figli) della finestra dell’ LMS che contiene l’API Adapter. L’API Adapter deve essere fornito dall’ LMS. L’unico meccanismo di interazione supportato è attraverso chiamate ECMAScript (JavaScript). L’ API Adapter deve essere disponibile tramite oggetto DOM con nome “API”. launch API Data model API adapter: resonsabilità dello SCO Cercare le API Chiamare, al minimo, le funzioni LMSinitialize() e LMSfinish() launch API Data model Data Model 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 Si basa su AICC CMI Data Model (ridotto) launch API Data model Data Model: regole per i nomi La prima parte del nome indica il modello di riferimento (CMI nel nostro caso) Questo permette future implementazioni Reserved keyword Precedute da _underscore _version, _children, _count Tutte le matrici sono a partire da 0 Tutti i nomi sono case sensitive Ogni SCO ha accesso solo ai propri dati, non a quelli di altri SCO launch API Data model Data Model: elementi Alcuni obbligatori, altri opzionali Tutti gli elementi obbligatori devono essere supportati dall’LMS 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 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 launch API Data model cmi.core: obbligatori per ogni LMS 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_name: student official name cmi.core.lesson_location: identifica l’ultima posizione dello studente 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.entry: indica se lo studente è gia stato in questo SCO (ab initio, resume) cmi.core.score._children:per determinare quale score children è supportato dall’LMS cmi.core.score.raw: a 0 al primo accesso, poi viene incrementato cmi.core.score.max: il massimo punteggio ottenibile cmi.core.score.min: il minimo puntggio ottenibile 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.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 LMS SCO Scelta dello SCO da lanciare, in base a: • Richiesta dell’utente • Automatica Si usano le informazioni di content structure all’interno del content Ricerca delle API Chiamata LMSInitialize() aggregation Chiamata LMSLaunch_data(), se supportata dallo SCO Analisi di cmi.core.lesson_mode: • è prevista la scelta da parte dell’utente? • opportuni cambiamenti a cmi.core.lesson_mode Inizializzazione di cmi.core.entry Chiamata LMSGetValue(cmi.core.lesson_mod e) per identificare la modalità d’uso della lezione Lancio dello SCO Messa a disposizione delle API: • LMSInitialize • LMSGetValue • LMSSetValue • LMSGetLastError • LMSGetErrorString • LMSGetDiagnositc • LMSCommit • LMSFinish Settaggio mastery score API Data Model Chiamata LMSSetValue() con qualsiasi dato si voglia registrare Chiamata LMSCommit() Chiamata LMSFinish() opzionale Chiamata LMSGetValue(cmi.core.entry) per riportare lo studente nell’ultima posizione