Преобразование IMS в SCORM
Мне нужно разработать инструмент для автоматического преобразования из одного стандартного пакета контента для электронного обучения в другой, на данный момент я рассматривал IMS и SCORM, но не до конца понял, что может быть лучшей причиной для разработки инструмента автоматического преобразования из IMS в SCORM или наоборот. Я имею в виду, какие преимущества можно извлечь из такого инструмента? Это причина, которую я получил в одном техническом документе. Кто-нибудь может, пожалуйста, объяснить и уточнить это или сказать мне несколько веских причин для разработки такого инструмента:
"Спецификации IMS [6] и SCORM [7] имеют много общих характеристик, но также имеют некоторые ключевые различия в представлении структуры содержания обучения. Другой важной проблемой, которую следует рассмотреть, является расширение этих систем и огромное количество организации, которые их используют. Эта ситуация приводит к тому, что одно и то же содержимое создается, поддерживается, изменяется и т. д. [8]. Обычно это не идентичные копии, но содержимое одинаковое и нацелено на одну и ту же цель обучения. было бы полезно разделить работу между организациями, чтобы избежать повторения этой работы снова и снова. Это сэкономит время и ресурсы и приведет к высококачественному содержанию. Основным препятствием для этого является наличие ранее представленного существования различных типы моделей для содержимого. Из всего этого мы можем сделать вывод о полезности автоматического преобразования между форматами. Это преобразование позволит взаимодействовать между учебными платформами на высоком уровне автоматизации ". - ЭЛЕКТРОННОЕ ОБУЧЕНИЕ СОДЕРЖАНИЕ АВТОМАТИЧЕСКАЯ ПРЕОБРАЗОВАНИЯ Guiterrez, Jose Maria et al.
JavaScript (пакет SCORM)
<script type="text/javascript">
<![CDATA[
var numQuestions = 2;
var rawScore = 0;
var actualScore = 0;
var question0;
var question1;
var key0 = 0;
var key1 = 1;
function getAnswer()
{
doLMSSetValue("cmi.interactions.0.id","key0b8");
doLMSSetValue("cmi.interactions.0.type","choice");
doLMSSetValue("cmi.interactions.0.correct_responses.0.pattern",
"0");
for (var i=0; i < 2; i++)
{
if (document.getElementById("quizForm8").key0b8[i].checked)
{
question0 = document.getElementById("quizForm8").key0b8[i].value;
doLMSSetValue("cmi.interactions.0.student_response",question0);
break;
}
}
doLMSSetValue("cmi.interactions.1.id","key1b8");
doLMSSetValue("cmi.interactions.1.type","choice");
doLMSSetValue("cmi.interactions.1.correct_responses.0.pattern",
"1");
for (var i=0; i < 2; i++)
{
if (document.getElementById("quizForm8").key1b8[i].checked)
{
question1 = document.getElementById("quizForm8").key1b8[i].value;
doLMSSetValue("cmi.interactions.1.student_response",question1);
break;
}
}
}
function calcRawScore(){
if (question0 == key0)
{
doLMSSetValue("cmi.interactions.0.result","correct");
rawScore++;
}
else
{
doLMSSetValue("cmi.interactions.0.result","wrong");
}
if (question1 == key1)
{
doLMSSetValue("cmi.interactions.1.result","correct");
rawScore++;
}
else
{
doLMSSetValue("cmi.interactions.1.result","wrong");
}
}
function calcScore2()
{
computeTime(); // the student has stopped here.
document.getElementById("quizForm8").submitB.disabled = true;
getAnswer();
calcRawScore();
actualScore = Math.round(rawScore / numQuestions * 100);
alert("Your score is " + actualScore + "%")
doLMSSetValue( "cmi.core.score.raw", actualScore+"" );
var mode = doLMSGetValue( "cmi.core.lesson_mode" );
if ( mode != "review" && mode != "browse" ){
if ( actualScore < 50 )
{
doLMSSetValue( "cmi.core.lesson_status", "failed" );
}
else
{
doLMSSetValue( "cmi.core.lesson_status", "passed" );
}
doLMSSetValue( "cmi.core.exit", "" );
}
exitPageStatus = true;
doLMSCommit();
doLMSFinish();
}
]]>
</script>
HTML
<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- Other Code -->
<body>
<div id="outer">
<div class="QuizTestIdevice" id="id8">
<script src="calculate.js" type="text/javascript"></script>
<form name="quizForm8" id="quizForm8" action="javascript:calcScore2();">
<div class="iDevice_inner">
<div class="passrate" value="50"></div>
<div class="question">
<div id="taquestion0b8">
1> TEXT FOR QUESTION 1.
</div><br />
True<input type="radio" name="key0b8" value="0" id="taoptionAnswer0q0b8" />
False<input type="radio" name="key0b8" value="1" id="taoptionAnswer1q0b8" />
</div><br />
<div class="question">
<div id="taquestion1b8">
2> TEXT FOR QUESTION 2.
</div><br />
True<input type="radio" name="key1b8" value="0" id="taoptionAnswer0q1b8" />
False<input type="radio" name="key1b8" value="1" id="taoptionAnswer1q1b8" />
</div><br />
<input type="submit" name="submitB" value="SUBMIT ANSWERS" />
</div>
</form>
</div>
</div>
</body>
</html>
Javascript и HTML для пакета IMS
<html>
<body>
<div class="QuizTestIdevice" id="id8">
<script type="text/javascript">
<!-- //<![CDATA[
var numQuestions = 4;
var rawScore = 0;
var actualScore = 0;
var question0;
var question1;
var key0 = 0;
var key1 = 1;
var key2 = 0;
var key3 = 0;
function getAnswer()
{
for (var i=0; i < 2; i++)
{
if (document.getElementById("quizForm8").key0b8[i].checked)
{
question0 = document.getElementById("quizForm8").key0b8[i].value;
break;
}
}
for (var i=0; i < 2; i++)
{
if (document.getElementById("quizForm8").key1b8[i].checked)
{
question1 = document.getElementById("quizForm8").key1b8[i].value;
break;
}
}
}
function calcRawScore(){
if (question0 == key0)
{
rawScore++;
}
if (question1 == key1)
{
rawScore++;
}
}
function calcScore2()
{
getAnswer();
calcRawScore();
actualScore = Math.round(rawScore / numQuestions * 100);
document.getElementById("quizForm8").submitB.disabled = true;
alert("Your score is " + actualScore + "%")
}
//]]> -->
</script>
<form name="quizForm8" id="quizForm8" action="javascript:calcScore2();">
<div class="iDevice emphasis1">
<img alt="" class="iDevice_icon" src="icon_question.gif" />
<span class="iDeviceTitle">SCORM Quiz</span>
<div class="iDevice_inner">
<div class="passrate" value="50"></div>
<div class="question">
<div id="taquestion0b8" class="block" style="display:block">1> QUESTION 1
</div><br/>
<table><tr><td><input type="radio" name="key0b8" value="0" />
</td><td>
<div id="taoptionAnswer0q0b8" class="block" style="display:block">True
</div></td></tr>
<tr><td><input type="radio" name="key0b8" value="1" />
</td><td>
<div id="taoptionAnswer1q0b8" class="block" style="display:block">False
</div>
<br/><input type="submit" name="submitB" value="SUBMIT ANSWERS"/>
</form>
</body>
</html>
Благодарю вас!
1 ответ
Когда я создаю курсы с ручным кодированием, я стараюсь сохранять все как можно более нейтральным. Стандарты электронного обучения, такие как SCORM, обычно используют то, что мы называем "оболочкой", оно в основном обрабатывает все основные ошибки и процесс подключения.
Когда вы переходите от одной версии к другой, например, от SCORM 1.2 до SCORM 2004, 4-е издание, логика на самом деле не меняется, она улучшается, но все предыдущие элементы обычно присутствуют здесь. Таким образом, вы создаете новую оболочку с такими же именами функций, и все основы уже работают. И ваша обертка не принципиально отличается, она просто заменяет "cmi.xxx".
Чтобы перейти от одного стандарта к другому, если основы одинаковы, вы можете использовать другую оболочку, и она будет работать. Обычно это относится к большинству простых курсов, и как только у вас появятся взаимодействия, упражнения и так далее, это может стать сложным делом. Чтобы избежать этих плохих моментов, держите всю свою логику взаимодействия отдельно от курса.
Теперь ваш курс, вероятно, не написан вручную и не создан программным обеспечением? В таком случае вам нужно будет проанализировать, что находится "под капотом", пытаясь выяснить, что и когда нужно сделать, и как заменить это другим способом обработки каждой детали.
Я думаю, что конвертер является чем-то очень небезопасным, он будет сильно зависеть от курса и не может применяться ко всем курсам одинаково, если вы не найдете способ просто заменить его взаимодействия оболочкой. Но если вы можете предоставить инструмент, который может создать курс, совместимый со всеми стандартами, вы уже порадуете многих пользователей!
Теперь, чтобы вернуться к вашему вопросу, я думаю, вам нужно понять, из чего сделаны стандарты электронного обучения:
- Файлы для отображения в браузере.
- Файл манифеста для описания содержимого, которое вы даете LMS.
- Способ общения между курсом и его LMS.
Файлы, как правило, HTML-страницы и все, что происходит вокруг. Манифест - это файл, обычно написанный с использованием XML. Связь в большинстве случаев настраивается с помощью Javascript.
- IMS - это стандарт на уровне манифеста, он описывает, что должно быть в вашем XML-файле.
- SCORM - это стандарт, который учитывает два последних пункта списка. (основанный на AICC, он определяет, что и курс, и LMS должны соответствовать.)
Теперь, если вам нужно создать инструмент для преобразования XML-файла, я думаю, что любая технология сможет это сделать, поскольку это технически простой текст.