Дистанционное обучение
  Вход  |  Карта сайта 

 
Главная >> Библиотека >> SCORM и его применение >> Применение SCORM API 
 




 

Применение SCORM API

Применение SCORM API

В общем случае, SCO-объект – это файл или набор файлов, структурированных определённым образом, и включающих в себя средства для взаимодействия с LMS-системой. То есть, как уже говорилось ранее в курсе, каждый SCO-объект должен включать в себя вызов минимум двух методов SCORM API – LMSInitialize("") и LMSFinish(""), реализованных на языке JavaScript. Однако включать реализацию этих методов в каждый файл, из которых состоит SCO-объект, как минимум нерационально – ведь это дополнительное увеличение размера файла, да и отслеживать изменения в реализации этих методов при таком подходе непросто. Значительно продуктивнее размещать реализацию этих методов в отдельном файле, а непосредственно из файлов SCO только осуществлять вызов этих методов. Таким образом, уменьшается итоговый размер файлов, составляющих SCO, что немаловажно, ведь дистанционное образование становится всё больше направленным на передачу учебного контента через веб-среду. Кроме того, значительно упрощается процесс внесения изменений в реализацию этих, а также любых других методов, ведь не придётся просматривать каждый файл в отдельности, да ещё и следить за тем, чтобы изменения были везде одинаковые.

1

Пример реализации

Пример реализации вызова данных методов в программе eXe learning, позволяющей сохранять разрабатываемый курс в формате SCORM package v. 1.2 (все дальнейшие примеры также взяты из этой программы):

Вызов LMSInitialize("")

/*******************************************************************************
**
** Function: doLMSInitialize()
** Inputs: None
** Return: CMIBoolean true if the initialization was successful, or
** CMIBoolean false if the initialization failed.
**
** Description:
** Initialize communication with LMS by calling the LMSInitialize
** function which will be implemented by the LMS.
**
*******************************************************************************/
function doLMSInitialize()
{
   var api = getAPIHandle();
   if (api == null)
   {
      alert(UNABLE_TO_LOCATE_THE_LMS_API + '\n' + LMSINITIALIZE_WAS_NOT_SUCCESSFUL);
      return "false";
   }
   var result = api.LMSInitialize("");
   if (result.toString() != "true")
   {
      var err = ErrorHandler();
   }
   return result.toString();
}


Вызов LMSFinish("")

/*******************************************************************************
**
** Function doLMSFinish()
** Inputs: None
** Return: CMIBoolean true if successful
** CMIBoolean false if failed.
**
** Description:
** Close communication with LMS by calling the LMSFinish
** function which will be implemented by the LMS
**
*******************************************************************************/
function doLMSFinish()
{
   var api = getAPIHandle();
   if (api == null)
   {
      alert(UNABLE_TO_LOCATE_THE_LMS_API + "\n" + LMSFINISH_WAS_NOT_SUCCESSFUL);
      return "false";
   }
   else
   {
      // call the LMSFinish function that should be implemented by the API
      var result = api.LMSFinish("");
      if (result.toString() != "true")
      {
         var err = ErrorHandler();
      }
   }
   return result.toString();
}
 
Непосредственно из файла с учебным контентом, входящего в состав SCO, вызываются методы doLMSInitialize() и doLMSFinish().

Обратите внимание, что перед любыми действиями, связанными с вызовом функций API (в данном случае это api.LMSInitialize("") и api.LMSFinish("")) происходит поиск API-реализации, предоставляемой той LMS, которая является поставщиком учебного контента.


Поиск экземпляра API

Поиск реализации API – это также вполне стандартная процедура. Реализуется она следующими функциями – getAPIHandle(); getAPI(); findAPI(win);

function getAPIHandle()
{
   if (apiHandle == null)
   {
     apiHandle = getAPI();
   }
   return apiHandle;
}



function getAPI()
{
   var theAPI = findAPI(window);
   if ((theAPI == null) && (window.opener != null) && (typeof(window.opener) != "undefined"))
   {
      theAPI = findAPI(window.opener);
   }
   if (theAPI == null)
   {
     alert(UNABLE_TO_FIND_AN_API_ADAPTER);
   }
   return theAPI
}



function findAPI(win)
{
   while ((win.API == null) && (win.parent != null) && (win.parent != win))
   {
      findAPITries++;
      //Примечание: 7 - это случайное число, однако этого количества попыток должно быть более чам достаточно
      if (findAPITries > 7)
      {
         alert(ERROR_FINDING_API_TOO_DEEPLY_NESTED);
         return null;
      }
      win = win.parent;
   }
   return win.API;
}

Как можно понять, изучив эти функции, конкретная реализация API запускается самим браузером. Именно браузер и является тем самым объектом «window», который передаётся как параметр в функцию «findAPI(win)». Таким образом, браузер - это родительский объект по отношению к объекту, который содержит реализацию API. Файлы, которые являются реализацией API в конкретной LMS-системе, передаются браузеру от LMS тем же путём, что и сам обучающий контент – то есть непосредственно в момент соединения браузера клиента с сервером, на котором находится LMS-система. Далее эта реализация хранится на клиенте в течение всего сеанса работы с LMS.


Обмен данными с LMS

Для обмена данными с LMS-системой можно использовать две функции API:

  • LMSGetValue(parameter)
  • LMSSetValue(parameter_1,parameter_2)

В версии стандарта SCORM 2004 название функций API немного изменили – убрали приставку «LMS».

SCORM1.2

SCORM2004

LMSInitialize(“”)

Initialize(“”)

LMSFinish(“”)

Terminate(“”)

LMSGetValue(parameter)

GetValue(parameter)

LMSSetValue(parameter_1,parameter_2)

SetValue(parameter_1,parameter_2)

LMSCommit(“”)

Commit(“”)

LMSGetLastError()

GetLastError()

LMSGetErrorString(parameter)

GetErrorString(parameter)

LMSGetDiagnostic(parameter)

GetDiagnostic(parameter)

Несмотря на то, что функций API всего 8, они позволяют выполнять любые действия по управлению обучением. Фактически, одно из достижений стандарта SCORM именно в том, что он предоставляет единую структуру данных, которая применяется для управления обучением, а также предоставляет API, с помощью которого осуществляется управление этой структурой данных и их изменение.


Пример применения API

Как пример, можете взглянуть на то, что происходит, когда учащийся открывает в веб-браузере страницу, содержащую SCO-объект:
Вначале, при загрузке страниц запускается функция loadPage()

function loadPage()
{
     var result = doLMSInitialize();
     var status = doLMSGetValue( "cmi.core.lesson_status" );
     if (status == "not attempted")
     {
          // the student is now attempting the lesson
          doLMSSetValue( "cmi.core.lesson_status", "incomplete" );
     }
     exitPageStatus = false;
     startTimer();
}


В этой функции:
  1. Инициализируется соединение с LMS - var result = doLMSInitialize();
  2. От LMS получается текущий статус данной страницы - var status = doLMSGetValue( "cmi.core.lesson_status" );
  3. В случае, если статус установлен в значение «не изучалась» - status == "not attempted" – текущей странице присваивается статус «incomplete»
  4. Запускается таймер, отсчитывающий, сколько именно времени потратит учащийся на изучение материала, представленного на данной странице - startTimer();
Соответственно, при закрытии страницы или переходе к другой происходит обратное – останавливается таймер, полученное значение передаётся в LMS, статус страницы сохраняется как «completed», вызывается LMSFinish().


Заключение

Хотя создание даже простого SCO-объекта достаточно трудоёмкий процесс, вовсе не обязательно проделывать все этапы его реализации вручную. Для того, чтобы автоматизировать процесс преобразования имеющегося учебного контента в SCORM-совместимые курсы, существует несколько программных средств. Среди них есть как полностью коммерческие – например, Macromedia Authorware , ToolBook , так и распространяющаяся свободно - eXe .

Примеры JavaScript-кода, приведённые выше, были взяты именно из курса, разработанного и конвертированного в SCO в программе eXe.





спонсоры проекта: Неоценимую помощь окажет гороскоп совместимости людям - goroskop.bigmir.net.

  © Портал "Дистанционное обучение", 2006-2017.
Перепечатка и использование материалов допускается с условием размещения ссылки Портал "Дистанционное обучение".
Также мы будем очень благодарны, если вы просто разместите эту ссылку на своем сайте.