Развитие образовательных технологий направлено на сбор и анализ цифровых следов.
Цифровые следы порождаются в том числе при прохождении ЭОР.
В ELiS для образования используется H5P, который порождает события xAPI https://h5p.org/documentation/x-api, но самостоятельно сохраняет только результат прохождения ресурсов и только для авторизованных пользователей.
В ELiS есть модуль интеграции с H5P - "ELiS H5P". Модуль интеграции меняет в некоторых случаях работу модуля H5P и обеспечивает сбор цифровых следов, порождаемых H5P в формате xAPI.
Как в H5P происходит генерация цифровых следов[править]
H5P поддерживает генерацию событий на действия пользователей. Так открытие задания, ответ на вопрос теста, перетаскивание изображения в некоторую точку для задания с изображениями порождает события в формате xAPI. Причем эти события порождаются не только на финальный ответ, но и на промежуточные действия.
Разные типы заданий H5P генерируют разные события, а некоторые задания могут не генерировать события xAPI вовсе (см. документацию https://h5p.org/documentation/x-api).
Порожденные события надо куда-то сохранить для дальнейшей обработки.
Как ELiS сохраняет события xAPI в PlayLogs[править]
Для хранения треков воспроизведения ресурсов в ELiS есть собственная система сбора статистики, т.н. PlayLogs. В таблицу elis_play_log пишутся сессии пользователей по работе с открытым ресурсом. Это абстрактная система сбора треков (логов), работающая для сбора самых различных типов ресурсов, не только для H5P. Но также эта система используется и для хранения событий xAPI, порождаемых H5P.
В таблице elis_play_log есть поле data, в котором лежат сериализованные данные по разным типам ресурсов в специальном формате. В поле data есть в качестве свойства массив events, в котором собираются данные по различным событиям.
События xAPI, генерируемые плеером H5P попадают таким образом в массив data.events. Для извлечения событий xAPI из записи в таблице elis_play_log можно использовать такой псевдокод:
for (i=0; i<data.events.length; i++) { if (data.events[i].type == 'xAPI') { print data.events[i].eventData; // eventData - соответствует содержимому события xAPI. if (data.events[i].eventData.result) { print data.events[i].eventData.result.score.scaled // нормализованные результаты от 0 до 1. Обратите внимание, что не каждое событие xAPI содержит в себе результаты. } } }
При записи событий, ELiS может вырезать из события xAPI поле agent т.к. это поле является избыточным и в треки пишется идентификатор пользователя (uid).
Обратите внимание, что одна запись в таблице elis_play_log содержит трек всей сессии с плеером и в нее попадают все события работы с открытым во вкладке браузера ресурсе H5P, а значит одна запись содержит множество событий xAPI, относящихся к работе с ресурсом.
Если пользователь откроет занятие в двух вкладках, то в таблице elis_play_log у него будет два трека и если вы хотите извлечь наилучший результат, вам надо обработать обе записи и выбрать в какой из них результат лучше.
Также обращаю внимание, что сам модуль H5P во вкладке результатов приводит результаты только аутентифицированных на сайте пользователей, а треки в таблицу elis_play_log пишутся и для гостей.
Наглядно представить события можно на снимке экрана ниже, где события записаны для гостя. Событие 11 в data.events[11].eventData.result.score.raw содержит результат прохождения (8 баллов из 10), а в нормированном виде это data.events[11].eventData.result.score.scaled равное 0.8.