Инструмент «Целостность данных 3KL»
Если вы используете более раннюю версию системы — обратитесь с заявкой на проведение обновления в службу технической поддержки ООО «Открытые технологии».
1. Общая информация
2. Возможности
2.1. Ситуации, в которых полезно применение плагина
2.2. Проверка и восстановление целостности оценок и связи между модулями курса и секциями
2.3. Проверка и восстановление целостности модулей курса и утерянных файлов
2.4. Обнаружение и устранение поврежденных файлов
3. Страница «Проверка целостности данных СЭО 3KL»
4. Глобальные настройки
Важно! Неосторожные действия полного администратора могут повредить систему и контент таким образом, что исправление последствий вмешательства выйдет за рамки гарантийной технической поддержки. В случае внесения правок в глобальные настройки рекомендуем вам убедиться в том, что вы полностью понимаете, за что отвечают данные настройки. Если у вас возникают сомнения в назначении глобальных настроек, обратитесь за помощью в техническую поддержку.
Подробная информация в статье «Полный административный доступ».
1. Общая информация
В общем смысле целостность данных – это состояние, при котором данные, содержащиеся в системе, остаются в правильном и ожидаемом состоянии, сохраняют логические связи между собой и являются непротиворечивыми и согласованными.
Целостность данных в контексте Moodle означает, что записи в таблицах базы данных системы соответствуют реальному состоянию объектов в системе. При этом нарушение целостности будет заключаться в том, что в таблице базы данных запись о хранящемся в системе файле есть, а сам файл физически уже отсутствует на сервере, либо связь между объектами системы некорректная.
Инструмент «Целостность данных 3KL» предназначен для анализа целостности данных в СЭО 3KL. Компоненты плагина позволяют:
- обнаружить поврежденные файлы на сервере, которые нарушают целостность СЭО 3KL;
- проверить нарушения целостности в базе данных с записями о модулях курса, которые могли появиться при удалении экземпляра модуля из СЭО 3KL;
- выявить несогласованность в таблицах базы данных с оценками и восстановить целостность;
- найти расхождения, когда запись о файле есть в базе данных, но файл физически отсутствует на сервере;
- выявить несогласованность между записями о модулях курса и секциями и восстановить целостность.
2. Возможности
2.1. Ситуации, в которых полезно применение плагина
Инструмент «Целостность данных 3KL» может быть полезен либо в случае, когда по какой-либо причине существуют сомнения в целостности данных компонентов системы, либо в случае, если в системе возникают ошибки, связанные с целостностью данных, и их необходимо устранить.
Таким образом можно выделить два типа ситуаций, когда полезен плагин:
1. Система была обновлена с версии, правильность администрирования которой подвергается сомнениям. Например, у системы не было компетентного администратора или система пережила нештатные ситуации: аварийное отключение сервера, проблемы с жесткими дисками, нестабильную работу из-за нехватки оперативной памяти, установку нестабильных сторонних плагинов, прямое вмешательство в базу данных и т. п.
2. Если система демонстрирует одну или несколько из следующих ошибок:
- Не удалось прочитать файл «Название файла». Файл либо не существует, либо есть проблема с разрешениями на доступ к нему.
- Ошибка синтаксиса.
Пример ошибки:SyntaxError
Unexpected token 'Н', "Нет экземп"... is not valid JSON
Файл:
Строка:
Трассировки стека:
SyntaxError: Unexpected token 'Н', "Нет экземп"... is not valid JSON
at parse ()
at https://example.com/lib/javascript.php/1757950054/lib/jquery/jquery-3.6.1.min.js:2:79614
at l (https://example.com/lib/javascript.php/1757950054/lib/jquery/jquery-3.6.1.min.js:2:79731)
at XMLHttpRequest. (https://example.com/lib/javascript.php/1757950054/lib/jquery/jquery-3.6.1.min.js:2:82499) - Недопустимый ID модуля курса.
Пример ошибки:invalidcoursemoduleid
Недопустимый ID модуля курса: 218712
Файл: /lib/modinfolib.php
Строка: 242
Трассировки стека:
Error code: invalidcoursemoduleid
* line 242 of /lib/modinfolib.php: moodle_exception thrown
* line 2264 of /lib/modinfolib.php: call to course_modinfo->get_cm()
* line 1049 of /lib/completionlib.php: call to cm_info::create()
* line 636 of /lib/completionlib.php: call to completion_info->get_data()
* line 1553 of /lib/completionlib.php: call to completion_info->update_state()
* line 1201 of /lib/grade/grade_grade.php: call to completion_info->inform_grade_changed()
* line 369 of /lib/grade/grade_object.php: call to grade_grade->notify_changed()
* line 662 of /lib/grade/grade_category.php: call to grade_object->insert()
* line 576 of /lib/grade/grade_category.php: call to grade_category->aggregate_grades()
* line 812 of /lib/grade/grade_item.php: call to grade_category->generate_grades()
* line 1278 of /lib/gradelib.php: call to grade_item->regrade_final_grades()
* line 2115 of /lib/grade/grade_item.php: call to grade_regrade_final_grades()
* line 291 of /lib/gradelib.php: call to grade_item->update_raw_grade()
* line 836 of /mod/quiz/lib.php: call to grade_update()
* line 728 of /mod/quiz/lib.php: call to quiz_grade_item_update()
* line 1403 of /lib/gradelib.php: call to quiz_update_grades()
* line 1373 of /lib/gradelib.php: call to grade_update_mod_grades()
* line 1127 of /lib/gradelib.php: call to grade_grab_course_grades()
* line 2157 of /lib/enrollib.php: call to grade_recover_history_grades()
* line 213 of /enrol/cohort/locallib.php: call to enrol_plugin->enrol_user()
* line 130 of /enrol/cohort/lib.php: call to enrol_cohort_sync()
* line 194 of /local/otcontrolpanel/classes/entity/course/actions/enrol_cohorts.php: call to enrol_cohort_plugin->add_instance()
* line 347 of /local/otcontrolpanel/classes/actionform.php: call to local_otcontrolpanel\entity\course\actions\enrol_cohorts->execute()
* line 85 of /local/otcontrolpanel/classes/entity/course/actions/enrol_cohorts.php: call to local_otcontrolpanel\actionform->execute_action()
* line 297 of /local/otcontrolpanel/classes/actionform.php: call to local_otcontrolpanel\entity\course\actions\enrol_cohorts->process_form_data()
* line 60 of /local/otcontrolpanel/lib.php: call to local_otcontrolpanel\actionform->process_form_data()
* line 8064 of /lib/moodlelib.php: call to local_otcontrolpanel_output_fragment_actionform()
* line 423 of /lib/external/externallib.php: call to component_callback()
* line 262 of /lib/externallib.php: call to core_external::get_fragment()
* line 81 of /lib/ajax/service.php: call to external_api::call_external_function() - Не удается найти данную запись в таблице course базы данных.
Пример ошибки:Информация об отладке: SELECT id,category FROM {course} WHERE id = ?
[array (
0 => '231',
)]
Error code: invalidrecord
Трассировки стека:- line 1654 of /lib/dml/moodle_database.php: dml_missing_record_exception thrown
- line 1630 of /lib/dml/moodle_database.php: call to moodle_database->get_record_select()
- line 7142 of /lib/accesslib.php: call to moodle_database->get_record()
- line 70 of /lib/classes/event/grade_deleted.php: call to context_course::instance()
- line 1126 of /lib/grade/grade_grade.php: call to core\event\grade_deleted::create_from_grade()
- line 1541 of /lib/gradelib.php: call to grade_grade->delete()
- line 4150 of /lib/moodlelib.php: call to grade_user_delete()
- line 110 of /admin/user.php: call to delete_user()
2.2. Проверка и восстановление целостности оценок и связи между модулями курса и секциями
Администратору СЭО 3KL нужно проверить, есть ли несоответствия в таблицах базы данных с оценками и расхождения связи между секциями и модулями курса. Для этого администратор переходит на страницу «Проверка целостности данных СЭО 3KL», расположенную по следующему пути: Администрирование -> Плагины -> Инструменты администрирования -> Целостность данных 3KL -> Проверка целостности данных СЭО 3KL (Рис. 2.1.1). На этой странице администратор запускает процесс проверки показателей, последовательно нажав на кнопки «Обновить данные» в строках с показателями «Целостность оценок» и «Целостность связи между модулями курса и секциями» (поз. 1, 2 Рис. 2.2.1).
После того, как процесс обновления показателей будет завершен, на странице «Проверка целостности данных СЭО 3KL» отобразятся обновленные статусы показателей и полученные результаты проверки (Рис. 2.2.2). В примере на Рис. 2.2.2. администратор может увидеть, что при проверке показателя «Целостность оценок» не было выявлено несоответствий, а при проверке показателя «Целостность связи между модулями курса и секциями» было выявлено 1 расхождение. Далее администратор должен устранить это расхождение.
Нажав на кнопку «Восстановить целостность» (см. поз. 1 Рис. 2.2.2) для показателя «Целостность связи между модулями курса и секциями», администратор запускает процесс восстановления корректной связи между секциями и элементами курса. После завершения этого процесса расхождения между секциями и модулями курса будут устранены и статус показателя изменится на «ОК» (поз. 1 Рис. 2.2.3).
2.3. Проверка и восстановление целостности модулей курса и утерянных файлов
Администратору СЭО 3KL нужно проверить, наблюдаются ли расхождения в показателях «Целостность модулей курса» и «Утерянные файлы». Т. к. проверка этих показателей выполняется в рамках отдельной задачи Cron, администратору необходимо перейти по пути: Администрирование -> Сервер -> Задачи -> Запланированные задачи. На открывшейся странице следует запустить задачу «Выполнить расчет данных показателей», нажав на кнопку «Запустить сейчас» (поз. 1 Рис. 2.3.1).
После этого будут пересчитаны показатели «Целостность модулей курса» и «Утерянные файлы», результаты проверки будут отражены на странице по пути: Администрирование -> Плагины -> Инструменты администрирования -> Целостность данных 3KL -> Проверка целостности данных СЭО 3KL (поз. 1, 2 Рис. 2.3.2). В рассмотренном примере проверка не обнаружила несоответствий в проверенных показателях.
2.4. Обнаружение и устранение поврежденных файлов
Администратору СЭО 3KL нужно проверить, присутствуют ли в СЭО 3KL поврежденные файлы. Для этого администратор переходит на страницу «Проверка целостности данных СЭО 3KL», расположенную по следующему пути: Администрирование -> Плагины -> Инструменты администрирования -> Целостность данных 3KL -> Проверка целостности данных СЭО 3KL (Рис. 2.4.1). На этой странице администратор запускает процесс проверки показателя «Обнаружение поврежденных файлов», нажав на кнопку «Обновить данные» в строке с показателем «Обнаружение поврежденных файлов» (поз. 1 Рис. 2.4.1).
При этом автоматически будет запланирована разовая задача, которая выполнится при следующем запуске Cron. Для того, чтобы выполнить эту задачу сразу, администратор нажимает на текстовую ссылку «разовая задача» (поз. 1 Рис. 2.4.2).
На открывшейся странице администратор нажимает на текстовую ссылку «Запустить сейчас» (поз. 1 Рис. 2.4.3) и запускает тем самым выполнение задачи.
Далее администратор может вернуться на страницу «Проверка целостности данных СЭО 3KL» и увидеть результаты проверки показателя «Обнаружение поврежденных файлов». В примере на Рис. 2.4.4. нарушений целостности в показателе не было обнаружено (поз. 1 Рис. 2.4.4).
3. Страница «Проверка целостности данных СЭО 3KL»
Страница «Проверка целостности данных СЭО 3KL» (Рис. 3.1) содержит таблицу с описанием показателей проверки целостности данных и с подробностями о дате и результатах проверки.
В таблице можно увидеть статус, который был установлен показателю в результате его последней проверки, дата проверки также регистрируется в таблице. В столбце «Описание» приведено описание показателя, для которого выполняется расчет. В столбце «Результаты последней проверки» отображается результат проверки целостности показателя. Если проверка уже была выполнена, в данном столбце отобразится текстовая ссылка либо на страницу со сводкой о выполненной проверке, либо на файл с результатами проверки (об этом функционале читайте ниже). В столбце «Способ расчета данных показателя» для показателей, вычисляемых в рамках задачи Cron, отображается надпись «По расписанию» и текстовая ссылка на страницу настройки периодичности выполнения задачи Cron; для показателей, которые вычисляются вручную, отображается надпись «Вручную» и текстовая ссылка, после нажатия на которую показатель будет обновлен. Обратите внимание, изменить способ предустановленный расчета показателя (вручную или в рамках задачи Cron) невозможно.
Кнопка «Описание статусов показателей» (см. поз. 1 Рис. 3.1) раскрывает спойлер с описанием статусов, которые используются в таблице. Доступны следующие статусы: Табл. 3.1.
Табл. 3.1. Доступные статусы показателей
| Статус | Описание статуса |
| Нарушений в целостности данных не обнаружено | |
| Проверка целостности еще не проводилась | |
| Были обнаружены незначительные нарушения в целостности данных, которые критически не влияют на работоспособность системы | |
| Были обнаружены нарушения в целостности данных, которые в высокой степени вероятности могут привести к возникновению ошибок | |
| Сбор информации по показателю целостности данных не был корректно завершен |
В столбцах таблицы с показателями (Рис. 3.1) доступны опции, которые отличаются для каждого показателя. Далее приведено описание всех текстовых ссылок, с которыми вы можете столкнуться в таблице (для текстовых ссылок с одинаковым названием для разных показателей функционал не отличается):
- Разовая задача (см. поз. 2 Рис. 3.1). Текстовая ссылка перенаправляет на страницу, с которой можно запустить разовую задачу по обновлению показателя «Обнаружение поврежденных файлов» (см. поз. 1 Рис. 3.2). Если задачу не запустить вручную, она будет выполнена при очередном запуске Cron.
- Подробнее (см. поз. 3 Рис. 3.1). Текстовая ссылка перенаправляет на страницу «Подробная информация по показателю» (Рис. 3.3), на которой можно посмотреть краткую сводку о результатах последней проверки, а также список найденных расхождений. На странице можно восстановить целостность в показателе (поз. 1 Рис. 3.2) или вернуться обратно к сводке по всем показателям (поз. 2 Рис. 3.3).
- К задаче (см. поз. 4 Рис. 3.1.). Текстовая ссылка перенаправляет на страницу изменения расписания задачи «Выполнить расчет данных для показателей» (Рис. 3.4). На странице можно определить периодичность выполнения задачи по расчету показателей (поз. 1 Рис. 3.4). Для этого нужно ввести значения даты и времени в соответствующие поля. По умолчанию задача выполняется раз в день. Если отметить опцию «Отключено» (поз. 2 Рис. 3.4), задача будет отключена и перестанет выполняться. Если отметить опцию «Установить расписание по умолчанию» (поз. 3 Рис. 3.4) все значения из полей указания даты и времени будут сброшены до значений по умолчанию. Обновление показателей в рамках описанной задачи доступно только для показателей «Целостность модулей курса» и «Утерянные файлы», обновление двух других показателей необходимо запускать вручную.
- Обновить данные (см. поз. 5 Рис. 3.1). Нажатие на текстовую ссылку запускает процесс пересчета показателя.
- Восстановить целостность (см. поз. 6 Рис. 3.1). Нажатие на текстовую ссылку запустить скрипт, восстанавливающий несоответствия в показателе.
Если в ходе проверки показателя «Утерянные файлы» были обнаружены нарушения целостности, то в столбце с результатом проверки появится текстовая ссылка «Файл с результатами». При нажатии на текстовую ссылку на компьютер пользователя будет скачан файл формата csv с подробностями об отсутствующих на сервере файлах. Отсутствующие файлы идентифицируются по следующим значениям: хеш файла, компонент, файловая зона, полный путь к файлу, название файла, идентификатор пользователя, название курса, идентификатор контекста.
4. Глобальные настойки права администратора
Включить или отключить вычисление каждого из показателей целостности можно на странице, расположенной по пути: Администрирование -> Плагины -> Инструменты администрирования -> Целостность данных 3KL -> Настройки показателей (Рис. 3.1). Для того, чтобы включить вычисление, достаточно отметить нужный показатель галочкой, и он будет пересчитываться с периодичностью, определенной по умолчанию: для показателей «Целостность оценок» и «Целостность связи между модулями курса и секциями» пересчет можно выполнить только вручную, для показателей пересчет будет выполняться в рамках задачи Cron, периодичность которую можно переопределить (подробнее о настройках данной задачи читайте в пункте 3. «Страница «Проверка целостности данных СЭО 3KL»).