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 on learningBOX? On learningBOX, you can upload and use SCORM 1.2 compliant 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. (However, almost all LMS require the imsmanifest.xml file. QuizGenerator, CardGenerator, etc. output imsmanifest.xml for compatibility). Note on creating a ZIP file When compiling your materials into a ZIP file, please select and compress the files as shown below. As in the bad example, selecting a folder and compressing it may create an extra folder hierarchy and cause trouble. 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 zipping on a Mac,” etc. API search When the startup file (e.g. index.html) is loaded in the SCORM teaching material, the SCORM API is searched. In learningBOX 2.16 or later, the API is also provided in the preview screen of the teaching material, but the preview screen does not save the grades. Example code: The API is searched for in onload and made accessible via a variable called API of the teaching material, displaying API Found in the console if the API is found, or API not Found if it is not found. (Reference: 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 found“ will be displayed. If you run it on a local drive, etc., it cannot find the API, so it will display API not found. Once the LMSInitialize and LMSFinish APIs are found, execute LMSInitialize. LMSFinish is executed when learning is completed. Please note that grades cannot be sent before or after LMSInitialize is executed. Code Example (Reference) gist's URL https://gist.github.com/ynishi2014/d44930df2eddaa2f4140aab078e5e86f Execution Example When executed with learningBOX, the following is displayed. This alone is a valid SCORM teaching material, but since the learning status (cmi.core.lesson_status) is not updated, it appears that no grades are left on the learningBOX. This is because a grade with cmi.core.lesson_status browsed is treated as an invalid grade in learningBOX. SCORM teaching materials that only pass the test If you set cmi.core.lesson_status to passed in LMSSetValue, it will pass the test. Code Example (Reference) gist's URL https://gist.github.com/ynishi2014/4eb9a00dff3ff867d51192548471a919 Statuses that can be sent The values that can be sent to cmi.core.lesson_status as grades are, The values that can be sent to cmi.core.lesson_status as grades are as follows incomplete: being studied completed: completed passed: passed failed: failed browsed: not displayed Behavior when grades are not sent If grades are not sent, the following will occur First time learning: browsed (not displayed) Second and subsequent learning: inherits the grades from the previous learning session Therefore, you need to be careful about the behavior when you close the material before the grades are determined. status is set to ”browsed“ at the beginning of QuizGenerator, so if you close the course before starting to answer the questions, ”browsed“ will be recorded and it will appear that no grades are left. To check the operation It is best to check the operation with the LMS you plan to use, but since learningBOX can be used by up to 10 users free of charge and indefinitely, it may be easy to use it as an environment for developing and checking the operation of SCORM teaching materials. Visualizing API calls Visualizing API calls can improve development efficiency. Due to the size of the article, we will summarize this in another 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 results can also 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 teaching materials. Score (cmi.core.score.raw) The score, in SCORM 1.2, can be an integer between 0 and 100 in ”string“ format. Example API.LMSSetValue(”cmi.core.score.raw", "100");API. .score.raw", score.toFixed(0)); In the original extended 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 allowed. 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, please measure it in the material and send it to us; in QuizGenerator, the time between starting to solve a problem and the result display screen, and in video material, only the time when the video is playing is sent. The following will result in 1 hour, 2 minutes, and 3 seconds. Example API.LMSSetValue(“cmi.core.session_time”, "01:02:03"); Information per question This is a child item of cmi.interactions.n. n must be specified starting from 0. Usage such as starting from 1, skipping numbers, or going back to a smaller number is not allowed. ID (cmi.interactions.n.id) ID. The ID is displayed in the grade details screen as shown in the red frame of the screenshot below. Note that negative numbers and decimals are not allowed, so if you plan to download the grades in CSV or use the API to retrieve the grades, you must specify an appropriate ID. latency (cmi.interactions.n.latency) The time required. The following will be displayed in the grade details screen. correct_responses (cmi.interactions.n.correct_responses.m.pattern) Example of correct responses. Multiple responses can be specified, but only one is likely to be set in most cases. objectives (cmi.interactions.n.objectives.m.id) The objective of each question, i.e., the purpose or goal to be achieved, etc. Values in the format s:xxx are section tags, and values in the format q:xxx are question tags. The value in the format s:xxx will be reflected in the medical record. student_response (cmi.interactions.n.student_response) The student's response. It sends the string entered by the learner, the choice number, and so on. time (cmi.interactions.n.time) The learning time. The time spent on the question is sent. result (cmi.interactions.n.result) Send correct or wrong. Neutral and score can also be sent. Back to Table of Contents Original Extension of 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. About character limit relaxation Start time / End time (to be supported in 2.18 or later) This function is used to record the start time and end time of the learning process. (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, LMSSetValue does not send data to the server, but sends data 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. Since the communication delay can be 10 times or more for overseas users, LMSCommit should not be executed excessively. When LMSCommit should be executed It should be executed after cmi.core.lesson_status is sent 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 will still be executed, so LMSFinish alone is acceptable. The SCORM specification requires that LMSFinish be executed at the end of the process, so there is no guarantee of behavior if LMSFinish is not executed. LMSSetValue without checking implementation SCORM1.2 compliant LMSs do not necessarily implement all of the SCORM1.2 specifications. 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 usage, 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 anytime. We also recommend you to read this page! Back to Table of Contents