xAPI/CMI5. Полная мощность

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Продолжим разбор спецификаций xAPI/CMI5 для хранения и анализа данных обучения персонала. В последние годы появилось достаточно большое количество статей на тему использования рассматриваемых спецификаций (например - https://levellab.ru/blog/xapi-1). Вместе с тем, существующие публикации описывают использования спецификаций, на мой взгляд, очень поверхностно. Да, я согласен с тем, что использования xAPI для отчета о просмотре курса презентации или теста является достаточно тривиальной задачей. Особенно когда нужно просто получить информацию в виде затраченного времени и оценки. В предыдущей статье https://habr.com/ru/post/508882/ я уже писал, что при таком подходе, как мне кажется, использование xAPI может не дать никакого значительного преимущества.

Именно поэтому я и решил "копнуть поглубже" и показать как можно использовать спецификацию xAPI на 100% мощности, в т.ч. не только в хранении, но и в анализе данных. Кроме того, постараюсь практически объяснить разницу между xAPI и CMI5 в контексте того, как CMI5 формализует использование xAPI.

В качестве примера будем использовать имитационный тренажер для обучения персонала, например https://youtu.be/zewU3JHZCfg

Теперь давайте посмотрим отчет по форме CMI5 / xAPI. При запуске нашего ресурса (через плагин для Moodle https://moodle.org/plugins/mod_tincanlaunch или через очень удобный для проверки сервис https://cloud.scorm.com/), мы автоматически получаем запись в 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"

{

  • actor: {

    • mbox: "mailto:scorm@lcontent.ru",

    • name: "Петров Сергей Александрович",

    • objectType: "Agent"

    },

  • verb: {

    • id: "http://adlnet.gov/expapi/verbs/launched",

    • display: {

      • en-US: "launched"

      }

    },

  • context: {

    • registration: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",

    • contextActivities: {

      • parent: [

        • {

          • objectType: "Activity",

          • id: "https://lms.lcontent.ru/pluginfile.php/3678/mod_resource/content/76/T.html"

          }

        ]

      }

    },

  • object: {

    • id: "simulation://xapitest",

    • definition: {

      • name: {

        • en-US: "Пример тренажера"

        },

      • description: {

        • en-US: "Пример тренажера полное описание"

        }

      },

    • objectType: "Activity"

    },

  • id: "d7a3b941-10a8-412b-912c-50cc89017f1c",

  • authority: {

    • objectType: "Agent",

    • account: {

      • 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"

{

  • actor: {

    • mbox: "mailto:user@lcontent.ru",

    • name: "Петров Сергей Александрович",

    • objectType: "Agent"

    },

  • verb: {

    • id: "http://adlnet.gov/expapi/verbs/initialized",

    • display: {

      • en-US: "Indicates that the activity was started.",

      • ru-RU: "Указывает, что действие было начато."

      }

    },

  • object: {

    • id: "simulation://xapitest",

    • objectType: "Activity",

    • definition: {

      • name: {

        • ru-RU: "ИНК1"

        },

      • description: {

        • ru-RU: "ИНК1"

        }

      }

    },

  • context: {

    • registration: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",

    • extensions: {

      • 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"

      },

    • contextActivities: {

      • category: [

        • {

          • objectType: "Activity",

          • id: "https://w3id.org/xapi/cmi5/context/categories/cmi5"

          }

        ]

      },

    • platform: "lms.lcontent.ru",

    • instructor: {

      • objectType: "Agent",

      • mbox: "mailto:MaxGammer@gmail.com",

      • name: "Anna Gammer"

      },

    • team: {

      • objectType: "Group",

      • mbox: "mailto:group@gmail.com",

      • name: "Commander ken"

      }

    },

  • authority: {

    • objectType: "Agent",

    • account: {

      • 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"

{

  • actor: {

    • mbox: "mailto:user@lcontent.ru",

    • name: "Петров Сергей Александрович",

    • objectType: "Agent"

    },

  • verb: {

    • id: "http://adlnet.gov/expapi/verbs/completed",

    • display: {

      • en-US: "Indicates the actor finished or concluded the activity normally.",

      • ru-RU: "Указывает, что субъект закончил или завершил действие в обычном режиме."

      }

    },

  • object: {

    • id: "simulation://xapitest",

    • objectType: "Activity",

    • definition: {

      • name: {

        • ru-RU: "ИНК1"

        },

      • description: {

        • ru-RU: "ИНК1"

        }

      }

    },

  • result: {

    • completion: true,

    • duration: "PT41S",

    • response: "Сценарий выполнен",

    • extensions: {

      • http://lcontent.ru/xapi/Total_Losses_money: 600000,

      • http://lcontent.ru/xapi/Total_Deads: 0,

      • https://w3id.org/xapi/cmi5/result/extensions/progress: 100

      }

    },

  • context: {

    • registration: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",

    • extensions: {

      • 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"

      },

    • contextActivities: {

      • category: [

        • {

          • 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",

    • instructor: {

      • objectType: "Agent",

      • mbox: "mailto:MaxGammer@gmail.com",

      • name: "Anna Gammer"

      },

    • team: {

      • objectType: "Group",

      • mbox: "mailto:group@gmail.com",

      • name: "Commander ken"

      }

    },

  • authority: {

    • objectType: "Agent",

    • account: {

      • 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). Обратите внимание, что кроме времени и самой оценки мы используем записи для описания:

  1. Шаги обучаемого (открыл, ответил, подошел, прочитал и т.д.) с уточнением места события в модели действий персонала (обнаружение/диагностика/принятие решений и т.д.)

  2. Последствия его действий (в $, жизнях, экологии и т.д.)

  3. Параметры математической модели, представляющие интерес

  4. Параметры, заданные инструктором

  5. Комментарии инструктора

  6. Данные нейроинтерфейса и т.д.

Statement "passed"

{

  • actor: {

    • mbox: "mailto:user@lcontent.ru",

    • name: "Петров Сергей Александрович",

    • objectType: "Agent"

    },

  • verb: {

    • id: "http://adlnet.gov/expapi/verbs/passed",

    • display: {

      • en-US: "Indicates the actor completed an activity to standard.",

      • ru-RU: "Указывает, что субъект выполнил действие в соответствии со стандартными требованиями."

      }

    },

  • object: {

    • id: "simulation://xapitest",

    • objectType: "Activity",

    • definition: {

      • name: {

        • ru-RU: "ИНК1"

        },

      • description: {

        • ru-RU: "ИНК1"

        }

      }

    },

  • result: {

    • success: true,

    • duration: "PT41S",

    • response: "Сценарий выполнен",

    • score: {

      • scaled: 0.0204081628471613,

      • raw: 1,

      • min: 0,

      • max: 49

      },

    • extensions: {

      • http://lcontent.ru/xapi/Total_Losses_money: 600000,

      • http://lcontent.ru/xapi/Total_Deads: 0,

      • https://w3id.org/xapi/cmi5/result/extensions/progress: 100

      }

    },

  • context: {

    • registration: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",

    • extensions: {

      • 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"

      },

    • contextActivities: {

      • category: [

        • {

          • objectType: "Activity",

          • id: "https://w3id.org/xapi/cmi5/context/categories/cmi5"

          },

        • {

          • objectType: "Activity",

          • id: "https://w3id.org/xapi/cmi5/context/categories/moveon"

          }

        ],

      • other: [

        • {

          • id: "http://lcontent.ru/xapi/step",

          • definition: {

            • name: {

              • ru-RU: "41b7a8b9-cac2-4853-9703-74fb3825d73b"

              },

            • description: {

              • ru-RU: "Событие Стропальщик 1"

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "20e06279-e2b7-4738-9fea-5836d5d2dbe8"

              },

            • description: {

              • ru-RU: "Вопрос:Укажите правильный вариант. Ответ пользователя: Нет нарушений.. Ответ неверен. Верный ответ: Нарушение. Стропальщик в момент подъема груза находится на площадке полуприцепа."

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "2ab73493-28c3-49f6-bc9a-fbf6eb56ad1c"

              },

            • description: {

              • ru-RU: "Событие 1trigg"

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "9d1feb96-a948-4c39-a880-567a169b7df9"

              },

            • description: {

              • ru-RU: "Вопрос:Укажите правильный вариант. Ответ пользователя: Нарушение. Стропальщик не использует багор-оттяжку при сопровождении груза, поднятого на высоту более 1-го метра над землей (груз на месте складирования направляет руками, высота груза на уровне плеч стропальщика). Ответ верен."

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "813a8565-3c31-4ec3-9659-319651522851"

              },

            • description: {

              • ru-RU: "Показан текст Извините, У меня просто нет оттяжки и нет багра.... Я и так справлюсь."

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "7f2dc374-b564-472d-a5ab-2eac29bfe11f"

              },

            • description: {

              • ru-RU: "Показан текст Добро пожаловать в компьютерный имитационный тренажер, позволяющий отрабатывать навыки выявления опасных условий и действий при производстве работ повышенной опасности. Вы находитесь на производственном объекте . Ваша задача выявить все нарушения при производстве грузоподъемных работ. Нарушения также могут быть связаны с неправильным оформлением или отсутствием необходимой документации. В любой момент, Вы можете выйти из тренажера, нажав кнопку с флагом в правом верхнем углу экрана. Будет представлен отчет о результатах, а в режиме экзамена отчет сохранится в виде текстового файла на рабочем столе. Дата проведения проверки – 3 сентября 2020. Для передвижения используйте клавиши WSAD. Для поворота головы нажмите правую клавишу мыши и перемещайте мышь в нужном направлении. Для изменения высоты используйте клавиши в нижнем правом углу экрана. Для увеличения используйте клавишу Q. Необходимо нажать на объект, предмет, работника и указать имеется нарушение или нет. Желаем приятного обучения. "

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "5ed064b0-aae2-4b67-a2c6-8492af0ab1fe"

              },

            • description: {

              • ru-RU: "Событие ОбъектыНаПлатформе"

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "edf64367-855b-42b7-9181-a7b5ac32c23a"

              },

            • description: {

              • ru-RU: "Вопрос:Укажите правильный вариант. Ответ пользователя: Нарушение незначительно. Ответ неверен. Верный ответ: Нарушение. Груз на поворотной платформе"

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "91c4aa0e-5126-43bd-81e1-39cf1b60e994"

              },

            • description: {

              • ru-RU: "Выполнение в режиме экзамена"

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "3b2f4732-5ee5-4c10-8c2f-9012dc17163c"

              },

            • description: {

              • ru-RU: "Время выполнения: 00:00:28"

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "d3a31c1f-bfe1-4164-bd71-360789f59aac"

              },

            • description: {

              • ru-RU: "Возможных нарушений было замечено: 4 Из них исправлено: 1 Из них не исправлено: 3 Возможных нарушений не было замечено: 45"

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "bc03d881-faf3-4bff-8b37-e9850025c42a"

              },

            • description: {

              • ru-RU: "Задача :Объекты на платформе. Выполнена. "

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "ca1130ad-0d14-4ff7-89f9-033f929229bc"

              },

            • description: {

              • ru-RU: "Задача :Стропальщик в момент подъема груза находится на площадке полуприцепа. Выполнена. "

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "2d428645-f89d-4163-900b-7aede52581e3"

              },

            • description: {

              • ru-RU: "Задача :Стропальщик не использует багор-оттяжку при сопровождении груза. Выполнена. "

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "Pump1.Q"

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "4b422c7f-e7da-46be-970f-fb4f44258dc4"

              },

            • description: {

              • ru-RU: "Нарушение не было устранено, Стропальщик в опасности."

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "ff53421f-5012-41db-93b2-2308bed78792"

              },

            • description: {

              • ru-RU: "Стропальщик использует безопасные методы и средства при выполнении работ. Угроза жизни и здоровью отсутствует."

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "73360673-9775-41e3-9bba-398d7b7efe5e"

              },

            • description: {

              • ru-RU: "Обучаемый обнаружил нарушение, но не верно его диагностировал."

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "1"

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "1"

              },

            • extensions: {

              • 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",

          • definition: {

            • name: {

              • ru-RU: "1"

              },

            • extensions: {

              • 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",

          • definition: {

            • description: {

              • ru-RU: "Лог нейроинтерфейса"

              },

            • name: {

              • ru-RU: "1"

              },

            • extensions: {

              • 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 ",

              • http://lcontent.ru/neurointerface_log_data: [2 items]

              }

            },

          • objectType: "Activity"

          }

        ]

      },

    • platform: "lms.lcontent.ru",

    • instructor: {

      • objectType: "Agent",

      • mbox: "mailto:MaxGammer@gmail.com",

      • name: "Anna Gammer"

      },

    • team: {

      • objectType: "Group",

      • mbox: "mailto:group@gmail.com",

      • name: "Commander ken"

      }

    },

  • authority: {

    • objectType: "Agent",

    • account: {

      • 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

{

  • actor: {

    • mbox: "mailto:user@lcontent.ru",

    • name: "Петров Сергей Александрович",

    • objectType: "Agent"

    },

  • verb: {

    • id: "http://adlnet.gov/expapi/verbs/terminated",

    • display: {

      • en-US: "Indicates the actor has completed their session normally.",

      • ru-RU: "Указывает, что субъект нормально завершил сеанс."

      }

    },

  • object: {

    • id: "simulation://xapitest",

    • objectType: "Activity",

    • definition: {

      • name: {

        • ru-RU: "ИНК1"

        },

      • description: {

        • ru-RU: "ИНК1"

        }

      }

    },

  • result: {

    • duration: "PT41S",

    • response: "Сценарий выполнен",

    • extensions: {

      • http://lcontent.ru/xapi/Total_Losses_money: 600000,

      • http://lcontent.ru/xapi/Total_Deads: 0,

      • https://w3id.org/xapi/cmi5/result/extensions/progress: 100

      }

    },

  • context: {

    • registration: "fb13ae65-d9cf-469d-8d89-e41fd61c842d",

    • extensions: {

      • 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"

      },

    • contextActivities: {

      • category: [

        • {

          • objectType: "Activity",

          • id: "https://w3id.org/xapi/cmi5/context/categories/cmi5"

          }

        ]

      },

    • platform: "lms.lcontent.ru",

    • instructor: {

      • objectType: "Agent",

      • mbox: "mailto:MaxGammer@gmail.com",

      • name: "Anna Gammer"

      },

    • team: {

      • objectType: "Group",

      • mbox: "mailto:group@gmail.com",

      • name: "Commander ken"

      }

    },

  • authority: {

    • objectType: "Agent",

    • account: {

      • 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/)

Вероятности событий, связанных с человеческим фактором на диаграмме ETA
Вероятности событий, связанных с человеческим фактором на диаграмме ETA
Вероятности событий, связанных с человеческим фактором на диаграмме FTA
Вероятности событий, связанных с человеческим фактором на диаграмме FTA

В. Позволяет строить диаграммы в разрезе нужных показателей, причем в сравнении как с предыдущими попытками обучаемого, так и с оценками группы.

,
,

Г. Позволяет строить диаграммы изменения параметра математической модели (тренды) совместно с диаграммами Ганта для показа действий персонала и их взаимного влияния.

Таким образом я попытался показать некоторые возможности xAPI, обычно не затрагиваемые в других обзорах.

Все примеры доступны на сайте https://lms.lcontent.ru/course/view.php?id=84

Буду рад ответить на Ваши вопросы.

Источник: https://habr.com/ru/post/551374/

Интересные статьи

Интересные статьи

В 1С-Битрикс: Управление сайтом (как и в Битрикс24) десятки, если не сотни настраиваемых типов данных (или сущностей): инфоблоки, пользователи, заказы, склады, форумы, блоги и т.д. Стр...
Есть статьи о недостатках Битрикса, которые написаны программистами. Недостатки, описанные в них рядовому пользователю безразличны, ведь он не собирается ничего программировать.
В 2019 году люди знакомятся с брендом, выбирают и, что самое главное, ПОКУПАЮТ через интернет. Сегодня практически у любого бизнеса есть свой сайт — от личных блогов, зарабатывающих на рекламе, до инт...
Одной из «киллер-фич» 12й версии Битрикса была объявлена возможность отдавать статические файлы из CDN, тем самым увеличивая скорость работы сайта. Попробуем оценить практический выигрыш от использова...
В «1С-Битрикс» считают: современный интернет-магазин должен быть визуально привлекательным, адаптированным для просмотра с мобильных устройств и максимально персонализированным с помощью технологии Бо...