Элементы ‹adlcp:data› и ‹adlcp:map› непонятны

I am working on the SCORM 2004 4th edition based LMS, where i am at the initial stage. Hence, i am reading SCORM based documents.
In the SCORM 2004 4th edition CAM document, i was stuck at the page CAM-3-37,
where the element adlcp:data is defined as

the container used to define sets of data shared associated with an activity.

and the child element of adlcp:data i.e; map is defined as

Элемент — это контейнер, используемый для описания того, как действие будет использовать определенный набор общих данных.

Я подумал, может быть, я пойму это, когда буду двигаться вперед в указанной книге. Но я закончил книгу CAM и все же не могу понять, как работают эти два тега.
Также давайте рассмотрим пример, который выглядит следующим образом:

    <adlcp:data>
      <adlcp:map targetID="com.scorm.golfsamples.sequencing.forcedsequential.notesStorage" readSharedData="true" writeSharedData="true"/>
    </adlcp:data>

где атрибут readSharedDataуказывает, что доступные в настоящее время общие данные будут использоваться действием, пока оно активно.
и writeSharedData Атрибут указывает, что общие данные должны быть сохранены (true или false) после завершения ( Terminate(“”) ) попытки действия.
В этом случае,

я не не могу понять, на что указывает этот targetID= com.scorm.golfsamples.sequencing.forcedsequential.notesStorage.

я не понял, что это за общие данные? и где он находится? что это на самом деле?
Может ли кто-нибудь помочь мне в понимании вышеописанных элементов?


person Tahir Hussain Mir    schedule 20.05.2016    source источник


Ответы (2)


adlcp:data — это способ определить пространство в LMS для хранения информации, которая не соответствует модели данных CMI или которую вы хотите сделать доступной для всех SCO.

Существует 3 части определения этого пространства.
1. Атрибут adlcp:sharedDataGlobalToSystem элемента, который указывает, доступны ли общие данные для одной попытки или для каждой попытки (то есть удаляются ли они при каждой попытке). время, когда учащийся проходит курс). См. CAM-3-27
2. Элементы adlcp:data и adlcp:map перечисляют нужные пробелы. доступны для этой SCO. Вы определяете идентификатор для каждого пространства хранения, а затем добавляете элементы управления доступом, определяющие, может ли SCO читать или записывать в пространство хранения. (См. САМ-3-37)

Эти двое настраивают хранилище и поведение LMS для каждого объекта SCO в пакете содержимого.

Последняя часть описана в разделе 4.3 книги RTE. Для доступа к пространствам хранения данных вы используете запросы SCORM API GetValue и SetValue и элемент модели данных adl.data.n.store.

Еще одно замечание: поскольку порядок идентификаторов не обязательно сохраняется, вам нужно будет пройтись по хранилищам adl.data в SCO и определить, какой индекс относится к какому идентификатору.

person tom creighton    schedule 25.05.2016

Ответ Тома Крейтона — очень хорошее объяснение реализации общих корзин.

Я просто добавляю несколько указателей, которые мы нашли в нашей реализации.

  1. Сохраненные данные предназначены для «учащегося», и к ним можно получить доступ и установить в разных SCO или курсах, назначенных учащемуся. Однако будьте осторожны, если вы используете SCORM Cloud, кнопка «Очистить GLobals» очистит данные для всех курсов, назначенных пользователю.
  2. В то время как Том упоминает, что adlcp:sharedDataGlobalToSystem зависит от попытки, служба поддержки SCORM Cloud говорит, что она ограничена курсом/SCO. Я еще не получил ясности по этому поводу.
  3. Может быть ограничение на количество сохраняемых сегментов. Я еще не подтвердил это и вскоре обновлю этот ответ.

Для тех, кто ищет дополнительную информацию о реализации:

  1. Добавьте это к своему элементу (организация > элемент) в манифесте:
    <adlcp:data> <adlcp:map targetID="mybucketname" readSharedData="true" writeSharedData="true"/> </adlcp:data>

    1. Часть JS (используйте вызовы API вместо LMSGetValue и LMSSetValue)

      var dataBucketsCount = LMSGetValue("adl.data._count"); dataBucketsCount = parseInt(dataBucketsCount); for (var i=0; i < dataBucketsCount; i++){ if (LMSGetValue("adl.data." + i + ".id") == "mybucketname"){ //do your processing with the data } }

Мне пришлось много искать это и несколько раз пытаться и потерпеть неудачу, пока мы не получили это правильно. Поэтому я добавил это сюда, так что в будущем это может кому-то помочь.

person mumbaimerijaan    schedule 11.02.2018