Продолжим разбор спецификаций xAPI/CMI5 для хранения и анализа данных обучения персонала. В последние годы появилось достаточно большое количество статей на тему использования рассматриваемых спецификаций (например - https://levellab.ru/blog/xapi-1). Вместе с тем, существующие публикации описывают использования спецификаций, на мой взгляд, очень поверхностно. Да, я согласен с тем, что использования xAPI для отчета о просмотре курса презентации или теста является достаточно тривиальной задачей. Особенно когда нужно просто получить информацию в виде затраченного времени и оценки. В предыдущей статье я уже писал, что при таком подходе, как мне кажется, использование xAPI может не дать никакого значительного преимущества.
Именно поэтому я и решил "копнуть поглубже" и показать как можно использовать спецификацию xAPI на 100% мощности, в т.ч. не только в хранении, но и в анализе данных. Кроме того, постараюсь практически объяснить разницу между xAPI и CMI5 в контексте того, как CMI5 формализует использование xAPI.
В качестве примера будем использовать имитационный тренажер для обучения персонала, например https://youtu.be/zewU3JHZCfg
Теперь давайте посмотрим отчет по форме CMI5 / xAPI. При запуске нашего ресурса (через плагин для Moodle или через очень удобный для проверки сервис), мы автоматически получаем запись в LRS с глаголом "http://adlnet.gov/expapi/verbs/launched". Обратите внимание, что запись выполняется не нашей с Вами программой, а сервисом, который производит запуск (например -moodle). Последние 4 записи (id, authority , stored, timestamp) формируются уже самой LRS. Также информация о регистрации (registration: "fb13ae65-d9cf-469d-8d89-e41fd61c842d"), LRS endpoint и авторизации передается непосредственно в наш ресурс, что дает возможность сделать запрос в LRS и найти запись "launched" даже, к примеру, из exe-файла. Таким образом мы можем получить информацию относительно обучаемого, команде и т.д. В принципе, мы можем и сами выполнить данную запись, если например, запускаем exe-файл без LMS системы.
Statement "launched"
mbox: "mailto:scorm@lcontent.ru",
name: "Петров Сергей Александрович",
objectType: "Agent"
},
id: "http://adlnet.gov/expapi/verbs/launched",
en-US: "launched"
}
},
registration: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",
objectType: "Activity",
id: "https://lms.lcontent.ru/pluginfile.php/3678/mod_resource/content/76/T.html"
}
]
}
},
id: "simulation://xapitest",
en-US: "Пример тренажера"
},
en-US: "Пример тренажера полное описание"
}
},
objectType: "Activity"
},
id: "d7a3b941-10a8-412b-912c-50cc89017f1c",
objectType: "Agent",
homePage: "https://lrs.lcontent.ru:443",
name: "maxxxxr@gmail.com"
}
},
stored: "2021-04-07T14:40:58+00:00",
timestamp: "2021-04-07T14:40:58+00:00"
}
Первой записью после запуска тренажера, мы обязаны (cmi5) прописать утверждение "initialized", которое указывает, что действие было начато. Обратите внимание на registration, которое совпадает с ранее приведенным launched, что позволяет связывать эти записи в единую последовательность. В данном утверждении целесообразно уже использовать расширения, например http://lcontent.ru/xapi/weatherConditions: "rainy", чтобы сообщить о погодных условиях в симуляторе или http://lcontent.ru/xapi/Device: "HTC VIVE" - для уточнения, что используется VR-шлем. Также мы используем уточнения про инструктора и про групповой режим обучения. Для использования CMI5 на данном шаге мы должны получить шаблон утверждения и в дальнейшем добавлять нужные поля уже на его основе.
Statement "initialized"
mbox: "mailto:user@lcontent.ru",
name: "Петров Сергей Александрович",
objectType: "Agent"
},
id: "http://adlnet.gov/expapi/verbs/initialized",
en-US: "Indicates that the activity was started.",
ru-RU: "Указывает, что действие было начато."
}
},
id: "simulation://xapitest",
objectType: "Activity",
ru-RU: "ИНК1"
},
ru-RU: "ИНК1"
}
}
},
registration: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",
https://w3id.org/xapi/cmi5/context/extensions/sessionid: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",
https://w3id.org/xapi/cmi5/context/extensions/masteryscore: 0.860000014305115,
https://w3id.org/xapi/cmi5/context/extensions/launchurl: "https://lcontent.ru",
https://w3id.org/xapi/cmi5/context/extensions/launchmode: "Normal",
http://lcontent.ru/xapi/weatherConditions: "rainy",
https://w3id.org/xapi/acme/extensions/training-location: "tyumen",
http://lcontent.ru/xapi/Device: "HTC VIVE"
},
objectType: "Activity",
id: "https://w3id.org/xapi/cmi5/context/categories/cmi5"
}
]
},
platform: "lms.lcontent.ru",
objectType: "Agent",
mbox: "mailto:MaxGammer@gmail.com",
name: "Anna Gammer"
},
objectType: "Group",
mbox: "mailto:group@gmail.com",
name: "Commander ken"
}
},
objectType: "Agent",
homePage: "https://lrs.lcontent.ru:443",
name: "maxgammer@gmail.com"
}
},
stored: "2021-04-07T09:35:50+00:00",
timestamp: "2021-04-07T09:35:50+00:00",
id: "263d5e25-c26f-46e0-8199-b59db7d11aaf"
}
completed - указывает, что субъект закончил или завершил действие в обычном режиме. Обратите внимание на записи "https://w3id.org/xapi/cmi5", они обязаны быть, если Вы хотите, чтобы данные были записаны как CMI5. Без этих записей это не будет успешно. Формат xAPI не накладывает таких ограничений.
Statement "completed"
mbox: "mailto:user@lcontent.ru",
name: "Петров Сергей Александрович",
objectType: "Agent"
},
id: "http://adlnet.gov/expapi/verbs/completed",
en-US: "Indicates the actor finished or concluded the activity normally.",
ru-RU: "Указывает, что субъект закончил или завершил действие в обычном режиме."
}
},
id: "simulation://xapitest",
objectType: "Activity",
ru-RU: "ИНК1"
},
ru-RU: "ИНК1"
}
}
},
completion: true,
duration: "PT41S",
response: "Сценарий выполнен",
http://lcontent.ru/xapi/Total_Losses_money: 600000,
http://lcontent.ru/xapi/Total_Deads: 0,
https://w3id.org/xapi/cmi5/result/extensions/progress: 100
}
},
registration: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",
https://w3id.org/xapi/cmi5/context/extensions/sessionid: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",
https://w3id.org/xapi/cmi5/context/extensions/masteryscore: 0.860000014305115,
https://w3id.org/xapi/cmi5/context/extensions/launchurl: "https://lcontent.ru",
https://w3id.org/xapi/cmi5/context/extensions/launchmode: "Normal",
https://w3id.org/xapi/cmi5/context/extensions/moveon: "CompletedOrPassed",
http://lcontent.ru/xapi/weatherConditions: "rainy",
https://w3id.org/xapi/acme/extensions/training-location: "tyumen",
http://lcontent.ru/xapi/Device: "HTC VIVE"
},
objectType: "Activity",
id: "https://w3id.org/xapi/cmi5/context/categories/cmi5"
},
objectType: "Activity",
id: "https://w3id.org/xapi/cmi5/context/categories/moveon"
}
]
},
platform: "lms.lcontent.ru",
objectType: "Agent",
mbox: "mailto:MaxGammer@gmail.com",
name: "Anna Gammer"
},
objectType: "Group",
mbox: "mailto:group@gmail.com",
name: "Commander ken"
}
},
objectType: "Agent",
homePage: "https://lrs.lcontent.ru:443",
name: "maxgammer@gmail.com"
}
},
stored: "2021-04-07T09:35:51+00:00",
timestamp: "2021-04-07T09:35:51+00:00",
id: "f7e26b65-b9f4-4934-9988-6dcc034356ce"
}
Ну и наконец одна из нескольких записей о непосредственно "оценивании" (passed). Обратите внимание, что кроме времени и самой оценки мы используем записи для описания:
Шаги обучаемого (открыл, ответил, подошел, прочитал и т.д.) с уточнением места события в модели действий персонала (обнаружение/диагностика/принятие решений и т.д.)
Последствия его действий (в $, жизнях, экологии и т.д.)
Параметры математической модели, представляющие интерес
Параметры, заданные инструктором
Комментарии инструктора
Данные нейроинтерфейса и т.д.
Statement "passed"
mbox: "mailto:user@lcontent.ru",
name: "Петров Сергей Александрович",
objectType: "Agent"
},
id: "http://adlnet.gov/expapi/verbs/passed",
en-US: "Indicates the actor completed an activity to standard.",
ru-RU: "Указывает, что субъект выполнил действие в соответствии со стандартными требованиями."
}
},
id: "simulation://xapitest",
objectType: "Activity",
ru-RU: "ИНК1"
},
ru-RU: "ИНК1"
}
}
},
success: true,
duration: "PT41S",
response: "Сценарий выполнен",
scaled: 0.0204081628471613,
raw: 1,
min: 0,
max: 49
},
http://lcontent.ru/xapi/Total_Losses_money: 600000,
http://lcontent.ru/xapi/Total_Deads: 0,
https://w3id.org/xapi/cmi5/result/extensions/progress: 100
}
},
registration: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",
https://w3id.org/xapi/cmi5/context/extensions/sessionid: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",
https://w3id.org/xapi/cmi5/context/extensions/masteryscore: 0.860000014305115,
https://w3id.org/xapi/cmi5/context/extensions/launchurl: "https://lcontent.ru",
https://w3id.org/xapi/cmi5/context/extensions/launchmode: "Normal",
https://w3id.org/xapi/cmi5/context/extensions/moveon: "CompletedOrPassed",
http://lcontent.ru/xapi/weatherConditions: "rainy",
https://w3id.org/xapi/acme/extensions/training-location: "tyumen",
http://lcontent.ru/xapi/Device: "HTC VIVE"
},
objectType: "Activity",
id: "https://w3id.org/xapi/cmi5/context/categories/cmi5"
},
objectType: "Activity",
id: "https://w3id.org/xapi/cmi5/context/categories/moveon"
}
],
id: "http://lcontent.ru/xapi/step",
ru-RU: "41b7a8b9-cac2-4853-9703-74fb3825d73b"
},
ru-RU: "Событие Стропальщик 1"
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:27 ",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:27 ",
http://lcontent.ru/step_type: "Scenario_wait_trigger",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 1,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "20e06279-e2b7-4738-9fea-5836d5d2dbe8"
},
ru-RU: "Вопрос:Укажите правильный вариант. Ответ пользователя: Нет нарушений.. Ответ неверен. Верный ответ: Нарушение. Стропальщик в момент подъема груза находится на площадке полуприцепа."
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:30 ",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:30 ",
http://lcontent.ru/step_type: "Scenario_step_question",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 0,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "2ab73493-28c3-49f6-bc9a-fbf6eb56ad1c"
},
ru-RU: "Событие 1trigg"
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:24 ",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:24 ",
http://lcontent.ru/step_type: "Scenario_wait_trigger",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 1,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "9d1feb96-a948-4c39-a880-567a169b7df9"
},
ru-RU: "Вопрос:Укажите правильный вариант. Ответ пользователя: Нарушение. Стропальщик не использует багор-оттяжку при сопровождении груза, поднятого на высоту более 1-го метра над землей (груз на месте складирования направляет руками, высота груза на уровне плеч стропальщика). Ответ верен."
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:25 ",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:25 ",
http://lcontent.ru/step_type: "Scenario_step_question",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 1,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "813a8565-3c31-4ec3-9659-319651522851"
},
ru-RU: "Показан текст Извините, У меня просто нет оттяжки и нет багра.... Я и так справлюсь."
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:35 ",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:35 ",
http://lcontent.ru/step_type: "Scenario_step_text",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 1,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "7f2dc374-b564-472d-a5ab-2eac29bfe11f"
},
ru-RU: "Показан текст Добро пожаловать в компьютерный имитационный тренажер, позволяющий отрабатывать навыки выявления опасных условий и действий при производстве работ повышенной опасности. Вы находитесь на производственном объекте . Ваша задача выявить все нарушения при производстве грузоподъемных работ. Нарушения также могут быть связаны с неправильным оформлением или отсутствием необходимой документации. В любой момент, Вы можете выйти из тренажера, нажав кнопку с флагом в правом верхнем углу экрана. Будет представлен отчет о результатах, а в режиме экзамена отчет сохранится в виде текстового файла на рабочем столе. Дата проведения проверки – 3 сентября 2020. Для передвижения используйте клавиши WSAD. Для поворота головы нажмите правую клавишу мыши и перемещайте мышь в нужном направлении. Для изменения высоты используйте клавиши в нижнем правом углу экрана. Для увеличения используйте клавишу Q. Необходимо нажать на объект, предмет, работника и указать имеется нарушение или нет. Желаем приятного обучения. "
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:35 ",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:35 ",
http://lcontent.ru/step_type: "Scenario_step_text",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 1,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "5ed064b0-aae2-4b67-a2c6-8492af0ab1fe"
},
ru-RU: "Событие ОбъектыНаПлатформе"
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:44 ",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:44 ",
http://lcontent.ru/step_type: "Scenario_wait_trigger",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 1,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "edf64367-855b-42b7-9181-a7b5ac32c23a"
},
ru-RU: "Вопрос:Укажите правильный вариант. Ответ пользователя: Нарушение незначительно. Ответ неверен. Верный ответ: Нарушение. Груз на поворотной платформе"
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:46 ",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:46 ",
http://lcontent.ru/step_type: "Scenario_step_question",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 0,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "91c4aa0e-5126-43bd-81e1-39cf1b60e994"
},
ru-RU: "Выполнение в режиме экзамена"
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:50",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:50",
http://lcontent.ru/step_type: "ScenarioEditorManager",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 1,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "3b2f4732-5ee5-4c10-8c2f-9012dc17163c"
},
ru-RU: "Время выполнения: 00:00:28"
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:50",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:50",
http://lcontent.ru/step_type: "ScenarioEditorManager",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 1,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "d3a31c1f-bfe1-4164-bd71-360789f59aac"
},
ru-RU: "Возможных нарушений было замечено: 4 Из них исправлено: 1 Из них не исправлено: 3 Возможных нарушений не было замечено: 45"
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:50",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:50",
http://lcontent.ru/step_type: "ScenarioEditorManager",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 1,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "bc03d881-faf3-4bff-8b37-e9850025c42a"
},
ru-RU: "Задача :Объекты на платформе. Выполнена. "
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:50",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:50",
http://lcontent.ru/step_type: "ScenarioEditorManager",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 1,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "ca1130ad-0d14-4ff7-89f9-033f929229bc"
},
ru-RU: "Задача :Стропальщик в момент подъема груза находится на площадке полуприцепа. Выполнена. "
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:50",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:50",
http://lcontent.ru/step_type: "ScenarioEditorManager",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 1,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/step",
ru-RU: "2d428645-f89d-4163-900b-7aede52581e3"
},
ru-RU: "Задача :Стропальщик не использует багор-оттяжку при сопровождении груза. Выполнена. "
},
http://lcontent.ru/step_datatime_real: "2021-04-07 14:35:50",
http://lcontent.ru/step_datatime_simulation: "2021-04-07 14:35:50",
http://lcontent.ru/step_type: "ScenarioEditorManager",
http://lcontent.ru/step_completed: 1,
http://lcontent.ru/step_passed: 1,
http://lcontent.ru/step_categoty: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/mathmodel_value",
ru-RU: "Pump1.Q"
},
http://lcontent.ru/mm_dimension: "Q, m3/s",
http://lcontent.ru/mm_datatime_real: "2021-04-07 14:35:51 ",
http://lcontent.ru/mm_datatime_simulation: "2021-04-07 14:35:51 ",
http://lcontent.ru/mm_float_value: 56.7770004272461,
http://lcontent.ru/mm_str_value: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/effects",
ru-RU: "4b422c7f-e7da-46be-970f-fb4f44258dc4"
},
ru-RU: "Нарушение не было устранено, Стропальщик в опасности."
},
http://lcontent.ru/effect_ref_parent: "",
http://lcontent.ru/effect_datatime_real: "2021-04-07 14:35:30 ",
http://lcontent.ru/effect_datatime_simulation: "2021-04-07 14:35:30 ",
http://lcontent.ru/effect_cause: "Обучаемый обратил внимание на нарушение, но ошибся с его диагностированием",
http://lcontent.ru/effect_cause_full: "Место в модели поведения-Обнаружение=True, Диагностика=True, ПринятиеРешений=False, ВыполняемыеДействия=False",
http://lcontent.ru/effect_losses: "Нарушение не было устранено, Стропальщик в опасности.",
http://lcontent.ru/effect_losses_moneys: "",
http://lcontent.ru/effect_losses_life_health: "",
http://lcontent.ru/effect_losses_ecology: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/effects",
ru-RU: "ff53421f-5012-41db-93b2-2308bed78792"
},
ru-RU: "Стропальщик использует безопасные методы и средства при выполнении работ. Угроза жизни и здоровью отсутствует."
},
http://lcontent.ru/effect_ref_parent: "",
http://lcontent.ru/effect_datatime_real: "2021-04-07 14:35:25 ",
http://lcontent.ru/effect_datatime_simulation: "2021-04-07 14:35:25 ",
http://lcontent.ru/effect_cause: "Обучаемый обратил внимание на нарушение.",
http://lcontent.ru/effect_cause_full: "Место в модели поведения-Обнаружение=True, Диагностика=True, ПринятиеРешений=False, ВыполняемыеДействия=False",
http://lcontent.ru/effect_losses: "",
http://lcontent.ru/effect_losses_moneys: "",
http://lcontent.ru/effect_losses_life_health: "",
http://lcontent.ru/effect_losses_ecology: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/effects",
ru-RU: "73360673-9775-41e3-9bba-398d7b7efe5e"
},
ru-RU: "Обучаемый обнаружил нарушение, но не верно его диагностировал."
},
http://lcontent.ru/effect_ref_parent: "",
http://lcontent.ru/effect_datatime_real: "2021-04-07 14:35:46 ",
http://lcontent.ru/effect_datatime_simulation: "2021-04-07 14:35:46 ",
http://lcontent.ru/effect_cause: "Обучаемый обратил внимание на нарушение.",
http://lcontent.ru/effect_cause_full: "Место в модели поведения-Обнаружение=True, Диагностика=True, ПринятиеРешений=False, ВыполняемыеДействия=False",
http://lcontent.ru/effect_losses: "Обучаемый обнаружил нарушение, но не верно его диагностировал.",
http://lcontent.ru/effect_losses_moneys: "",
http://lcontent.ru/effect_losses_life_health: "",
http://lcontent.ru/effect_losses_ecology: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/instructor_parameter",
ru-RU: "1"
},
http://lcontent.ru/instructor_parameter_name: "Pump1.Z",
http://lcontent.ru/instructor_parameter_dimension: "количество ступеней, шт.",
http://lcontent.ru/instructor_parameter_datatime_real: "2021-04-07 14:35:51 ",
http://lcontent.ru/instructor_parameter_datatime_simulation: "2021-04-07 14:35:51 ",
http://lcontent.ru/instructor_parameter_float_value: 56.7770004272461,
http://lcontent.ru/instructor_parameter_str_value: ""
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/instructor_problem",
ru-RU: "1"
},
http://lcontent.ru/instructor_problem_name: "Задвижка3.Клин",
http://lcontent.ru/instructor_problem_dimension: "да или нет",
http://lcontent.ru/instructor_problem_datatime_real: "2021-04-07 14:35:51 ",
http://lcontent.ru/instructor_problem_datatime_simulation: "2021-04-07 14:35:51 ",
http://lcontent.ru/instructor_problem_float_value: 0,
http://lcontent.ru/instructor_problem_str_value: "да"
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/instructor_comment",
ru-RU: "1"
},
http://lcontent.ru/instructor_comment_text: "Грубое нарушение техники безопасности.н",
http://lcontent.ru/instructor_comment_datatime_real: "2021-04-07 14:35:51 ",
http://lcontent.ru/instructor_comment_datatime_simulation: "2021-04-07 14:35:51 "
}
},
objectType: "Activity"
},
id: "http://lcontent.ru/xapi/neurointerface_log",
ru-RU: "Лог нейроинтерфейса"
},
ru-RU: "1"
},
http://lcontent.ru/neurointerface_log_model: "OpenBCD ",
http://lcontent.ru/neurointerface_log_datatime_real: "2021-04-07 14:35:51 ",
http://lcontent.ru/neurointerface_log_datatime_simulation: "2021-04-07 14:35:51 ",
}
},
objectType: "Activity"
}
]
},
platform: "lms.lcontent.ru",
objectType: "Agent",
mbox: "mailto:MaxGammer@gmail.com",
name: "Anna Gammer"
},
objectType: "Group",
mbox: "mailto:group@gmail.com",
name: "Commander ken"
}
},
objectType: "Agent",
homePage: "https://lrs.lcontent.ru:443",
name: "maxgammer@gmail.com"
}
},
stored: "2021-04-07T09:35:51+00:00",
timestamp: "2021-04-07T09:35:51+00:00",
id: "1abfd011-b0a5-442b-bc07-4087b4ac86cc"
}
terminated
mbox: "mailto:user@lcontent.ru",
name: "Петров Сергей Александрович",
objectType: "Agent"
},
id: "http://adlnet.gov/expapi/verbs/terminated",
en-US: "Indicates the actor has completed their session normally.",
ru-RU: "Указывает, что субъект нормально завершил сеанс."
}
},
id: "simulation://xapitest",
objectType: "Activity",
ru-RU: "ИНК1"
},
ru-RU: "ИНК1"
}
}
},
duration: "PT41S",
response: "Сценарий выполнен",
http://lcontent.ru/xapi/Total_Losses_money: 600000,
http://lcontent.ru/xapi/Total_Deads: 0,
https://w3id.org/xapi/cmi5/result/extensions/progress: 100
}
},
registration: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",
https://w3id.org/xapi/cmi5/context/extensions/sessionid: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",
https://w3id.org/xapi/cmi5/context/extensions/masteryscore: 0.860000014305115,
https://w3id.org/xapi/cmi5/context/extensions/launchurl: "https://lcontent.ru",
https://w3id.org/xapi/cmi5/context/extensions/launchmode: "Normal",
https://w3id.org/xapi/cmi5/context/extensions/moveon: "CompletedOrPassed",
http://lcontent.ru/xapi/weatherConditions: "rainy",
https://w3id.org/xapi/acme/extensions/training-location: "tyumen",
http://lcontent.ru/xapi/Device: "HTC VIVE"
},
objectType: "Activity",
id: "https://w3id.org/xapi/cmi5/context/categories/cmi5"
}
]
},
platform: "lms.lcontent.ru",
objectType: "Agent",
mbox: "mailto:MaxGammer@gmail.com",
name: "Anna Gammer"
},
objectType: "Group",
mbox: "mailto:group@gmail.com",
name: "Commander ken"
}
},
objectType: "Agent",
homePage: "https://lrs.lcontent.ru:443",
name: "maxgammer@gmail.com"
}
},
stored: "2021-04-07T09:35:52+00:00",
timestamp: "2021-04-07T09:35:52+00:00",
id: "d32fd6bf-c1b2-471d-af58-ca8754a6373b"
Ну и теперь ответим на вопрос - зачем это все нужно и что это дает?
А. Позволяет дифференцировать знания, умения и навыки, в т.ч. с учетом типа ошибок
Б. Позволяет строить диаграммы последствий (см. https://habr.com/ru/post/509736/)
В. Позволяет строить диаграммы в разрезе нужных показателей, причем в сравнении как с предыдущими попытками обучаемого, так и с оценками группы.
Г. Позволяет строить диаграммы изменения параметра математической модели (тренды) совместно с диаграммами Ганта для показа действий персонала и их взаимного влияния.
Таким образом я попытался показать некоторые возможности xAPI, обычно не затрагиваемые в других обзорах.
Все примеры доступны на сайте https://lms.lcontent.ru/course/view.php?id=84
Буду рад ответить на Ваши вопросы.
vmkazakoff
Ну моя главная претензия, в таком исполнении, не к формату передачи данных (JSON и есть JSON хоть и избыточный местами и усложненный), а к тому, что в большинстве случаев этот формат используют для отметки "пройдено/нет" для слайдовых курсов, что ну очень оверинжиниринг. Представьте, что движок хабра при прочтении статьи делал бы не запись userID | postID | readDate, а вот такой документ бы хранил ;)
В случае с симуляциями такого рода как в примерах — вопросов нет, обосновано, логично, разумеется надо использовать стандарт.
Интересно, что в формат заранее засунули очень большую гибкость — можно на ходу придумывать новые "глаголы" и писать чуть-ли не любые данные (и мне всегда было интересно, почему это объявляется в виде url, я не в курсе истории вопроса), но вот отчетность по ним строить умеют не только лишь некоторые (да и не во всех системах это может сделать менеджер по обучению) в итоге опять все останавливается, что на реальном заводе этот менеджер после получения вашей симуляции через месяц еще может быть попросил вас помочь с отчетом и отчитаться о пилоте, а через еще месяц — в лучем случае смотрит сколько людей из подразделения Х прошли, и если мало — звонит их начальнику и просит всех пнуть. Я 13+ лет работаю внутри корпораций разных и могу по пальцам одной руки сосчитать, когда отчетность подробную смотрели внимательно и на ее основе принимали решения. Примечательно, что ни разу эта отчетность не была основана на SCORM или xAPI (про форматы, впрочем, может быть систематической ошибкой выжившего, в связи со специфичностью моих проектов).
maxgammer Автор
«и мне всегда было интересно, почему это объявляется в виде url, я не в курсе истории вопроса» — в спецификации настоятельно рекомендован формат URI
«но вот отчетность по ним строить умеют не только лишь некоторые» — в этом то и прелесть, если отчет SCORM может показать только LMS и менять там вообщем-то ничего нельзя. То вот отчет xAPI можно показать прямо в конце задания например или в виде html-страницы в той-же LMS без какого-либо переписывания ее внутренностей.
«когда отчетность подробную смотрели внимательно и на ее основе принимали решения» — все дело в «стоимости» ошибки персонала. Техничка может ошибиться и кто-то поскользнётся, а вот оператор установки может ошибиться на несколько десятков жизней например. Я работаю больше с опасными производствами.
maxgammer Автор
есть исследования например Дозорцева, где приводятся данные по операторам НПЗ / США. Так вот тренажерная подготовка операторов, несмотря на очень большие затраты — оценивается выгодой в очень большие суммы в год, значительно перекрывающие расходы. Ожидать такого эффекта от менеджеров и секретарей я думаю нереально просто, так как их ошибка или успех оказывают влияние в пределах погрешности статистики.
vmkazakoff
1) ага, в спецификации так рекомендуют, но я совершенно не понимаю, зачем городить "http://lcontent.ru/step_type: "Scenario_wait_trigger", при том что никакого контента по http://lcontent.ru/step_type нет и не предвидится. Почему не my_custom_step_type: "Scenario_wait_trigger" — и читалось бы легче (есть такие примеры где этот урл на несколько строк) и весило бы меньше — даже в этом примере если удалить "http://lcontent.ru/" то нормально места можно сэкономить на куче повторов (161 раз!!! в твоем примере passed)
2) Показать отчет в конце задания — отдельный навык (да и зачем, если задание только что было выполнено бегать в LRS за данными), а в виде HTML страницы, как я и написал, умеют не только лишь все. А если еще добавить вопрос мотивации… но мы плавно переходим к пункту 3 =)
3) У меня нет никаких сомнений в пользе такого обучения для операторов НПЗ, или пилота самолета. Я даже не возьмусь перечислять профессии — их много. Но надо понимать, что из общей суммы тех, кто занимается онлайн — это доли процента. А если в "обучение онлайн" добавить всех инфоциган с курсами "как запустить онлайншколу" и прочий бред — то и того меньше. Но я писал про статистику детальную — из тех долей процента, кому реально нужно такое обучение, единицам требуется проверить поведение юзера именно в определеннйо ситуации. А если добавить сюда, что легче бывает сделать небольшую симуляцю/тренажер/курс на узкую тему — то и тут хватит "прошел/нет". Можно сделать несколько отдельных тренажеров, проверить отдельные навыки в них, потом дать один "общий" — если прошел — записываем что все пройдено, если нет — в самом тренажере смотрим где ошибка и там же даем совет какой блок повторить/перепройти и вернуться.
И из забавного опыта — был клиент который очень просил xAPI. Я ему его прикрутил (курсов мало было, но клиент уверял что ему оооочень надо все видеть). Через год с лишним звонит этот клиент со словами что у него все сломалось. Залезаю — а там 3ТБ данных в LRS и запуск любого курса просто кладет нахрен все. 3ТБ набралось т.к. он очень хотел знать о том когда видео ставят на паузу, а когда проматывают… После недолгих выяснений "какими отчетами пользуетесь и какие данные нужно спасать" выяснилось что в принципе можно удалить все к черту — он через неделю после запуска забыл про ту статистику и больше вообще не заходил в отчеты. Один отчет о % пройденных курсов только брал. Это кстати были не "менеджеры", а производство мебели — вполне себе рабочие профессии.
maxgammer Автор
1) ага, в спецификации так рекомендуют, но я совершенно не понимаю, зачем городить
Так договорились + связано с профилями xAPI.
3) ну, я это вообще обучением не считаю, ты же знаешь мое мнение по этому вопросу. Если человек после якобы обучения стал чувствовать себя «лидером» например, но знать и уметь больше не стал — это полная чушь, а не обучение. Обучение для меня — формирование и перенос знаний, умений и навыков на условия предстоящей работы и точка. Всяческие микро эммирсивные гамифицированные 2 минутные курсы в телеграмме, для меня лично не обучение.
3) У меня нет никаких сомнений в пользе такого обучения для операторов НПЗ, или пилота самолета. Да у большинства специалистов нет в этом никаких сомнений.
4) И из забавного опыта — был клиент который очень просил xAPI. Поверь мне, инструкторы очень сильно напрягаются следить за ситуацией, особенно при групповой работе. Им прям жизненно необходим инструмент, помогающий в анализе и принятии решений, как в реальном времени, так и после обучения при разборе полетов. 3GB это тоже не страшно, если получить отчет, интерпретировав эти данные, потом можно и удалить, как вариант.
А логи реальных систем кстати, годами храниться по всем параметрам и ничего, производственники к этому привыкли. И хоть там 3 GB, хоть 3 TB вообше пофиг абсолютно, хоть 3 TB/сутки.
maxgammer Автор
Владимир, обрати внимание кстати, никто не нападает со словами «да что Вы понимаете в обучении?», как некоторые в форуме, которые печатать вчера научились на клавиатуре)), открыли PowerPoint и стали считать себя королями индустрии блин)))
Но другое странно, все в личку вопросы пишут))) Вот это не могу объяснить.