How to create SCORM-compliant e-learning materials
This article provides examples of creating teaching materials for learningBOX using SCORM 1.2. Please note that some of the examples may not work outside of learningBOX (in such cases, a cautionary statement will be included). Also, please note that this article has been verified with learningBOX 2.16.14, and older versions or versions to be released in the future may not give identical results.
What are SCORM materials in learningBOX?
LearningBOX allows you to upload and use SCORM 1.2 compliant educational materials. (*As of learningBOX 2.16.14, uploading SCORM archives (ZIP files) consisting of multiple SCOs is not supported. Also, please note that SCORM versions other than 1.2, such as SCORM 2004, are not supported.)
Back to Table of Contents
Minimum SCORM Materials [File Structure
In learningBOX, if the startup file is index.html, the manifest file (imsmanifest.xml: a file showing the structure in the ZIP file) is not necessary. Therefore, if only the index.html file is zipped, it can be used as SCORM material (however, the imsmanifest.xml file is required in almost all LMSs; QuizGenerator, CardGenerator, etc. require the imsmanifest.xml file for compatibility). QuizGenerator, CardGenerator, etc. output imsmanifest.xml for compatibility).
Notes on creating a ZIP file
When compressing educational materials into a ZIP file, please select and compress files as shown below. As in the bad example, selecting and compressing folders may create an extra folder hierarchy and cause problems. Also, in the case of Mac, if you use the OS standard ZIP archive function, extra files will be saved, so unnecessary files will be mixed in the problem! Please compress with reference to "Be careful when compressing zip on Mac" etc.
API Exploration
When the startup file (e.g. index.html) is loaded, the SCORM API is searched. In learningBOX 2.16 and later, the API is also provided in the preview screen of the teaching material, but the preview screen does not save the grades.
Code Example
The API is searched for with onload and made accessible via a variable named API in the teaching material, displaying API Found on the console if the API is found, or API not Found if it is not found.
(Referred to) gist's URL: https://gist.github.com/ynishi2014/8d1d951966d12d49c1eee898b4bacc17
Execution example
When mounted on learningBOX, the API for SCORM can be found, so the API is displayed as API found.
If you run it on a local drive, for example, the API cannot be found, so the API not found is displayed.
LMSInitialize and LMSFinish
Once the API is discovered, LMSInitialize is executed. LMSFinish is executed when learning is completed. Please note that grades cannot be sent before or after LMSInitialize is executed.
Code Example
(Referred to) gist's URL: https://gist.github.com/ynishi2014/d44930df2eddaa2f4140aab078e5e86f
Execution example
When executed on learningBOX, the following is displayed. However, since the learning status (cmi.core.lesson_status) is not updated, it appears that no grades remain in learningBOX. This is because the grades with cmi.core.lesson_status browsed are treated as invalid grades in the learningBOX.
SCORM materials only to be passed
In LMSSetValue, set cmi.core.lesson_status to passed.
Code Example
(Referred to) gist's URL: https://gist.github.com/ynishi2014/4eb9a00dff3ff867d51192548471a919
Transmittable Status
The values that can be sent to cmi.core.lesson_status as grades include
incomplete: learning in progress
completed: already learned
passed: Passed
failed: Failed
browsed: not displayed.
Behavior when not sent
If you do not send grades, the following will occur
Initial study: will be BROWSED (will not be displayed)
Second and subsequent studies: The results from the previous study are carried over.
Therefore, you need to be careful about the behavior when you close the material before the grade is determined, etc. In QuizGenerator, cmi.core.lesson_status is set to "browsed" at the beginning, so if you close the material before starting the answer, "browsed" will be recorded, It will appear that no grades are left.
To check operation
It is best to check with the LMS you plan to use, but since learningBOX is available free of charge and indefinitely for up to 10 users, it may be easy to use it as an environment for developing SCORM teaching materials and checking its operation.
Visualize API calls
Visualizing API calls can improve development efficiency. Due to the size of the article, we will summarize this in a separate article.
Back to Table of Contents
Information that can be sent within the SCORM 1.2 specification
In addition to the status (cmi.core.lesson_status) mentioned earlier, the following grades can be sent. By sending these, you can get detailed information on how learning is progressing, which can lead to analysis of the learning situation, appropriate feedback to the learner, and improvement of the teaching materials.
Score (cmi.core.score.raw)
Score, in SCORM 1.2 it can be an integer from 0 to 100 in "string" format.
Example API.LMSSetValue("cmi.core.score.raw", "100");API. .score.raw", score.toFixed(0));
proprietary
In learningBOX, scores over 100 are allowed. For example, 105 and 400 are accepted as valid scores. However, please note that negative numbers and decimals are not accepted. Also, in LMSs other than learningBOX, scores exceeding 100 will result in an error.
Time (cmi.core.session_time)
This is the learning time, which in the case of learningBOX is automatically measured when LMSInitialize and LMSFinish are executed. If you want to measure more accurate learning time than the time between opening and closing the material, measure it in the material and send it to us; for QuizGenerator, only the time between starting to solve a problem and the result display screen, and for video material, only the time the video is playing is sent. The following will give you 1 hour, 2 minutes, and 3 seconds.
Example API.LMSSetValue("cmi.core.session_time", "01:02:03");
Information per question
A child of cmi.interactions.n. n must be specified in order from 0. Usage such as starting from 1, skipping numbers, or going back to a smaller number is prohibited.
ID (cmi.interactions.n.id)
ID. The grade detail screen will show the ID as shown in the red box in the screenshot below. Please note, however, that negative numbers and decimals are not allowed; if you plan to download and use grades via CSV or retrieve and use grades via API, you will need to specify the appropriate ID.
latency (cmi.interactions.n.latency)
The time required. The following information is displayed in the grade details screen.
correct_responses (cmi.interactions.n.correct_responses.m.pattern)
Example of correct responses. More than one can be specified, but only one seems to be set in most cases.
objectives (cmi.interactions.n.objectives.m.id)
The objective of each question, i.e., the goal or objective to be achieved. s:xxx is used for section tags, and q:xxx for question tags, which are reflected in the medical record.
student_response (cmi.interactions.n.student_response)
The student's response. It sends the input string, choice numbers, etc.
time (cmi.interactions.n.time)
Study time. The time spent on the question is sent.
result (cmi.interactions.n.result)
Sends a correct or wrong result. Neutral and score can also be sent.
Back to Table of Contents
unique extensions to learningBOX
Normally, cmi.interactions.n.student_response cannot send HTML.
Sending Answers in HTML
Of course you can send HTML tags, but the results screen will display the HTML tags you send as is. If you specify html in cmi.interactions.n.student_response_format, cmi.interactions.n. student_response will be interpreted and displayed as HTML. However, JavaScript is restricted so that it cannot be executed.
Relaxation of Character Limit
Start time / End time (to be supported in 2.18 or later)
This function is used to record the start and end time of the study, and will be available in learningBOX 2.18 or later. (Scheduled for release in June 2022)
Back to Table of Contents
Anti-pattern [Excessive LMSCommit
When LMSCommit is executed, the value set in LMSSetValue is saved. In many LMSs, data is not sent to the server at LMSSetValue, but is sent to the server at the timing of LMSCommit. This is because the process of sending data to the server takes a relatively long time, and if communication were to take place each time LMSSetValue is executed, processing would be time-consuming. For example, if the number of questions is 100, the number of LMSSetValues per question is 6, and the communication delay is 10 ms, then 100 x 6 x 10 = 6000 ms, which means that it takes 6 seconds to send results. If you are using the system from overseas, the communication delay can be 10 times or more, so LMSCommit should not be executed excessively.
When LMSCommit should be executed
It should be executed after sending cmi.core.lesson_status or after LMSSetValue of all grades is finished. By sending "complete" to cmi.core.lesson_status and executing LMSCommit when learning has started, the grades seen by others (teachers, administrators, etc.) will change to "learning". After the LMSSetValue of all grades has been completed, LMSCommit and LMSFinish should be executed in that order. (*In learnngBOX, even if LMSCommit is not executed before LMSFinish, the process of sending grades is still executed, so LMSFinish alone is acceptable.)
Do not do LMSFinish
Always perform an LMSFinish at the end of the process; since the SCORM specification requires that an LMSFinish be performed, there is no guarantee of behavior if an LMSFinish is not performed.
LMSSetValue without checking the implementation
Not all SCORM 1.2 compliant LMSs implement all of the SCORM 1.2 specifications; the SCORM 1.2 specifications (APIs) contain a mixture of items that must be implemented and items that are allowed without implementation. Therefore, before executing LMSSetValue, you should check whether the element you are trying to send is implemented.
Back to Table of Contents
If you have any questions about how to use the system, please feel free to contact our support.
If you have any problems or questions about how to use learningBOX, please feel free to contact us at any time.
We also recommend this page! I want to read it in conjunction with
Back to Table of Contents