Панель обработки прецедентов. Локальный плагин

Алексей Городков
2020-12-03 16:39

Панель обработки прецедентов - инструментарий для решения нетипичных задач. Состоит из набора инструментов, каждый из которых решает определенную задачу для администрирования СДО. Плагин дает возможность реализовать сложные сценарии, как реакцию на события в системе. Модуль постоянно модифицируется и дополняется новыми функциями силами специалистов компании "Открытые технологии".

Уведомления Панели обработки прецедентов

Плагин рассылает уведомления пользователям системы стандартным способом. Получение уведомлений от плагина настраивается пользователем через настройки уведомлений в Личном кабинете в секции "Панель обработки прецедентов":
Личный кабинет -► Настройки -► Учетная запись пользователя -► Настройка уведомлений

Уведомления Панели разделяются на два типа для возможности раздельной настройки управления их получением по присутствию пользователя на сайте, способу доставки:

  • Уведомления о прецедентах - этот тип уведомлений рассылает все уведомления Панели, кроме паролей:
    • отправка орфографических ошибок
    • отправка уведомления о том, что пользователь зарегистрирован давно и не заходит
    • отправка уведомления о том, что пользователь только что зарегистрирован
    • отправка уведомления о том, что студент зачислен в курс
    • отправка уведомления о том, что учитель зачислен в курс
  • Панель обработки прецедентов: Служебные уведомления - этот тип уведомлений в данный момент рассылает только пароли новым пользователям.
Важно! Действия в данной инструкции с меткой требуются права администратора можно выполнить только при наличии доступа "Полный Администратор". По умолчанию мы предоставляем доступ "Диспетчер-Администратор". Для изменения глобальных конфигураций мы рекомендуем выбрать набор требуемых опций по данной инструкции и обратиться в техническую поддержку с заявкой на конфигурирование системы. Подробнее - в статье "Полный административный доступ".

Путь к настройкам: "Администрирование" -► "Плагины" -► "Локальные плагины" -► "Панель обработки прецедентов".
Все действия в данной инструкции требуют права полного (технического) администратора!

Состав панели обработки прецедентов

1. Уведомление об орфографической ошибке
2. Уведомление слушателя о подписке на курс
3. Уведомление преподавателя о подписке на курс с правом оценивать других пользователей
4. Уведомление ни разу не авторизовавшегося пользователя о недавней регистрации
5. Уведомление ни разу не авторизовавшегося пользователя о регистрации, с момента которой прошло почти два месяца
6. Удаление ни разу не авторизовавшихся пользователей, с момента регистрации которых прошло два месяца
7. Снятие назначенных ролей
8. Отправка уведомлений с паролем пользователям, загруженным в систему
9. Синхронизация пользователей с глобальными группами
10. Синхронизация пользователей с глобальными группами по расписанию
11. Удаление подписок типа "Синхронизация с глобальной группой" по дате из настраиваемых полей глобальной группы
12. Удаление глобальных групп по дате из настраиваемых полей глобальной группы
13. Удаление завершенных попыток тестирования старше заданной даты
14. Сохранение и отправка паролей из внешней базы данных пользователям, загруженным в систему
Функции для разработчиков

1. Уведомление об орфографической ошибке

Модуль "Отчет об орфографической ошибке" предназначен для обратной связи пользователей сайта, сообщающих о найденных ошибках на сайте СДО, и администраторов, получающих сообщения об ошибках. Ссылка на отдельную  инструкцию по модулю.

2. Уведомление слушателя о подписке на курс

Инструмент предназначен для отправки уведомлений слушателю при его зачислении на курс.
Особенности и условия:
1. Уведомление отправляется при любом способе зачисления пользователя на курс.
2. Уведомление отправляется пользователям, записанным на курс с оцениваемой ролью.

Настройка:
1. Включить отправку уведомления (поставить галочку).
2. Если нужно, отредактировать уже заполненные по умолчанию поля "Заголовок уведомления", "Полный текст уведомления" и "Короткий текст уведомления".

3. Уведомление преподавателя о подписке на курс с правом оценивать других пользователей

Инструмент предназначен для отправки уведомлений преподавателю при его зачислении на курс.
Особенности и условия:
1. Уведомления отправляются только контактам курса. Пользователь (преподаватель) должен быть записан на курс с ролью, которая указана в настройках контактов курса. По умолчанию в СДО в контактах курса указана роль Преподаватель.
Проверить роли контактов курса можно здесь:
Администрирование - ► Внешний вид - ► Курсы. /admin/settings.php?section=coursecontact

Настройка:
1. Включить отправку уведомления (поставить галочку).
2. Если нужно, отредактировать уже заполненные по умолчанию поля "Заголовок уведомления", "Полный текст уведомления" и "Короткий текст уведомления".

4. Уведомление ни разу не авторизовавшегося пользователя о недавней регистрации

Инструмент предназначен для отправки уведомлений зарегистрированному пользователю, который ни разу не заходил в систему в течение 7 дней после регистрации.
Особенности и условия:
1. Пользователь может быть зарегистрирован в СДО любым способом.
2. Если в течение 7 дней с момента регистрации он не заходил в систему, ему однократно отправляется уведомление.

Настройка:
1. Включить отправку уведомления (поставить галочку).
2. Заполнить поля "Заголовок уведомления", "Полный текст уведомления" и "Короткий текст уведомления". 

5. Уведомление ни разу не авторизовавшегося пользователя о регистрации, с момента которой прошло почти два месяца

Инструмент аналогичен предыдущему (п.4) и предназначен для отправки уведомлений зарегистрированному пользователю, который ни разу не заходил в систему в течение 7 недель после регистрации.
Особенности и условия:
1. Пользователь может быть зарегистрирован в СДО любым способом.
2. Если в течение 7 недель (точнее '-2 months, +7 days') с момента регистрации он не заходил в систему, ему однократно отправляется уведомление.

Настройка:
1. Включить отправку уведомления (поставить галочку).
2. Заполнить поля "Заголовок уведомления", "Полный текст уведомления" и "Короткий текст уведомления". 

6. Удаление ни разу не авторизовавшихся пользователей, с момента регистрации которых прошло два месяца

Инструмент предназначен для автоматического удаления пользователей, ни разу не авторизовавшихся а системе за два месяца с момента регистрации. Обычно применяется с инструментом п.5 (пользователю отправляется сообщение за неделю до удаления).
Особенности и условия:
1. Будут удалены все зарегистрированные, но ни разу не авторизовавшиеся в течение двух месяцев пользователи, кроме пользователей с ролью технический (полный) администратор.
2. Обычно используется с инструментом п.5.

Настройка:
1. Включить выполнение действия (поставить галочку).

7. Снятие назначенных ролей

Инструмент предназначен для массового снятия конкретной роли в конкретном контексте СДО.

Примеры использования:
1. Отчислить всех студентов из всех курсов.
2.  Удалить назначение специальной роли "Старший преподаватель" или "Завуч" из контекста категорий.

Настройка:
1. Включить снятие ролей (поставить галочку).
2. Выбрать контекст, на уровне которого будет сниматься назначенная роль. 
3. Выбрать назначенную роль, которая будет снята.

8. Отправка уведомлений с паролем пользователям, загруженным в систему

Сценарий представляет собой отправку паролей загруженным в систему пользователям с помощью уведомлений на почту и/или СМС. Данный инструмент может быть полезен, если нужно отправить новым пользователям пароль по СМС, при этом, можно настроить генерацию пароля так, что временный пароль будет коротким и простым.
Настройки содержат тексты уведомлений, опцию принудительной смены пароля и дополнительные настройки пароля.
Особенности и условия:

Важно!
1. Чтобы данный инструмент нормально функционировал, необходимо отключить стандартную задачу на генерацию и рассылку паролей в  cron:
Рассылка паролей новым пользователям \core\task\send_new_user_passwords_task
2. Чтобы пользователи получали сообщения (в т.ч. по СМС), при их регистрации в системе должен быть указан email пользователя.
3. Уведомления рассылаются именно при загрузке пользователей (CSV, внешняя БД) и не работают при ручной регистрации пользователей с автоматической генерацией пароля.

8.1. Отправка уведомлений с паролем

Особенностью данного инструмента является возможность отправлять уведомления с паролем не только на почту (стандартный метод), но и по СМС.

Пример:
Пользователи импортированы в СДО с помощью CSV-файла.
Работа стандартного метода СДО: по задаче в cron система генерирует пароли и отправляет уведомление с паролем на email пользователя.
Работа данного инструмента: по сценарию (при отключенной стандартной задаче по рассылке паролей) пароли отправляются пользователям на почту и/или по СМС. Опционально (п.8.2) можно отправлять пользователю простой короткий цифровой пароль.

Настройка:
1. Включить отправку уведомлений с паролем (поставить галочку).
2. Если нужно, отредактировать уже заполненные по умолчанию поля "Заголовок уведомления", "Полный текст уведомления" и "Короткий текст уведомления".
3. Принудительная смена пароля. Если поставить эту отметку, то пользователю будет предложено изменить пароль при следующем входе в систему. При этом создаваемый пользователем пароль будет должен соответствовать политике паролей (если она включена).

8.2. Дополнительные настройки пароля

Начиная с версии Moodle 3.5.9a в сценарий отправки паролей добавлена возможность сгенерировать пароль в обход стандартной логики Moodle. Теперь можно отправлять новым пользователям простые короткие временные пароли (например, из 4-6 цифр), не отменяя политики паролей.

Пример использования:
Новых пользователей зарегистрировали способом синхронизации с базой данных или при загрузке через CSV-файл. Пользователи получают на email или СМС удобные короткие цифровые временные пароли.

Настройки данного инструмента находятся в соответствующей секции Панели:

Настройка:
1. Включить "Дополнительные настройки пароля" (поставить галочку).
2. С помощью остальных настроек откорректировать параметры создаваемых паролей.

Дополнительная информация: "Пароли в Moodle. Политика паролей".

9. Синхронизация пользователей с глобальными группами

Инструмент позволяет синхронизировать пользователей с глобальными группами по данным из поля профиля, т.е. добавлять в пользователей в группы или отписывать от них.

Особенности и условия:
1. Сценарий срабатывает в следующих пяти случаях:
создается, обновляется или удаляется пользователь в системе, пользователь добавляется в глобальную группу или удаляется из нее.
2. В поле профиля пользователя (которое указывается в настройках инструмента) вносятся данные о группах, при этом поле может быть и пустым.
3. Сценарий извлекает данные о группах из поля профиля пользователя, ищет по этим данным глобальные группы в системе.
Если такие группы найдены, пользователь записывается в них. При этом, из групп, которые есть в системе, но не входят в список групп из поля профиля, пользователь отписывается.
4. В результате работы сценария пользователь будет записан ТОЛЬКО в те группы, которые будут указаны в заданном поле профиля.

Настройка:
1. Включить синхронизацию (поставить галочку). Включение инструмента.
2. Выберите поле профиля, в котором указан список глобальных групп пользователя. Выпадающий список для выбора поля профиля пользователя.
3. Идентификатором группы следует считать... Выбор типа поля идентификации группы, которое будет использоваться при поиске групп во время синхронизации. Варианты:
ID - внутренний уникальный идентификатор группы в системе.
♦ Имя группы
♦ Идентификатор группы - заданный вручную идентификатор группы. Назначается при создании или может быть импортирован из внешней системы. Должен быть уникальным.
4. Ручное управление глобальными группами: Запрещено / Разрешено.
Настройка позволяет задать реакцию системы на редактирование состава глобальных групп вручную. Доступны два сценария:
"Разрешено" - система позволяет добавлять/исключать пользователей вручную в группы, не указанные в поле профиля.
"Запрещено" - система запрещает добавлять/исключать пользователя вручную в любые группы.

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

10. Синхронизация пользователей с глобальными группами по расписанию

Данный сценарий работает только с предыдущим (п.9), при включенной синхронизации. Сценарий для ВСЕХ пользователей в системе создает события обновления пользователя, что позволяет сценарию из п.9 по раписанию синхронизировать всех пользователей с глобальными группами.
Сценарий нужен, чтобы не обновлять всех пользователей системы вручную для их записи в глобальные группы по полю профиля.

Особенности и условия:
Работает только только с предыдущим сценарием (п.9), при включенной синхронизации.

 Настройка:
1. Включить синхронизацию по расписанию (поставить галочку) - включение инструмента.

11. Удаление подписок типа "Синхронизация с глобальной группой" по дате из настраиваемых полей глобальной группы

Сценарий предназначен для удаления подписок Глобальной группы на курсы при наступлении указанной в настройках даты.

Сценарий использует данные даты из настраиваемого поля Глобальной группы. После настройки сценария и наступления указанной даты система удаляет способы записи типа «Синхронизация с глобальной группой», связанные с группой с истекшим сроком обучения.

Особенности и условия:
Предварительно нужно задать настраиваемые поля для Глобальных групп в плагине "Настраиваемые поля" и заполнить эти поля (поле с форматом "Дата", в котором указана дата отписки ГГ от курсов).

Как это сделать описано в инструкции "Настраиваемые поля".

Настройка:
1. Включить сценарий удаления подписок (поставить галочку).
2. Выбрать Настраиваемое поле, в котором хранится дата отписки глобальной группы.

12.Удаление глобальных групп по дате из настраиваемых полей глобальной группы

Сценарий предназначен для удаления Глобальной группы при наступлении указанной в настройках даты.

Сценарий использует данные даты из настраиваемого поля Глобальной группы. После настройки сценария и наступления указанной даты, система находит Глобальные группы с истекшим сроком пребывания в системе и удаляет их.

Особенности и условия:
Предварительно нужно задать настраиваемые поля для Глобальных групп в плагине "Настраиваемые поля" и заполнить эти поля (поле с форматом "Дата", в котором указана дата удаления ГГ).

Как это сделать описано в инструкции "Настраиваемые поля".

Настройка:
1. Включить сценарий удаления глобальных групп (поставить галочку).
2. Выбрать Настраиваемое поле, в котором хранится дата для удаления глобальной группы.

13. Удаление завершенных попыток тестирования старше заданной даты

Сценарий позволяет автоматически удалять неуспешные завершенные попытки тестирования (элемент "Тест"), с момента завершения которых прошло больше времени, чем указано в настройках сценария. При включенной опции система в фоновом режиме проверяет завершенные попытки прохождения теста на успешность в зависимости от метода оценивания в тесте и удаляет подходящие по сроку неуспешные попытки. Данная операция не влияет на оценки за тест и позволяет улучшить скорость работы модуля.
Данный инструмент может быть полезен, если нужно удалить незначительные данные о неуспешных попытках пользователей пройти тест.

Настройка:
1. Включить удаление завершенных попыток тестирования (поставить галочку).
2. Если нужно, отредактировать значение умолчанию поля "С момента завершения попытки должно пройти больше".

Комментарии по производительности:
Данная задача достаточно ресурсоемкая. Первый запуск может длиться продолжительное время. Много времени при обработке уходит на запросы к базе данных и на процесс удаления каждой попытки.
Ориентировочная производительность: за 7 суток обрабатывается около 500 000 попыток теста.
При повторных запусках сценарий всегда работает быстрее, чем при первичном, так как часть попыток уже удалена во время предыдущего прохода. Попытки удаляются по одной по мере выполнения процесса.
Если аварийно завершить задачу, то она просто перестанет выполняться. В следующий запуск задачи прогон пойдет сначала, и гораздо быстрее будет выполнена та часть, которая уже была выполнена до аварийного завершения (т.к. там выполняется только сканирование, без удаления попыток). Удаления попыток будут начаты с места прерывания.

14. Сохранение и отправка паролей из внешней базы данных пользователям, загруженным в систему

Сценарий предназначен для совместного использования с плагином аутентификации "Внешняя база данных" для одноразовой синхронизации паролей пользователей. При синхронизации из внешней БД пароль пользователя сохраняется в СЭО. Происходит это один раз и после этого пароли в Moodle и внешней БД не синхронизируются.  После этого пользователи могут менять пароль в СЭО.

Плагин имеет опцию отправки уведомления пользователю о регистрации в системе на электронную почту. Если пароль хранится в открытом виде, можно отправить его пользователю в этом уведомлении. Если пароль во внешней базе хранится в формате md5, хеш пароля на почту отправлен не будет.

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

Особенности и условия:

Важно!
1. Для правильного функционирования инструмента необходимо отключить стандартную задачу на генерацию и рассылку паролей в  cron:
Рассылка паролей новым пользователям \core\task\send_new_user_passwords_task
2. Чтобы пользователи получали уведомления, при синхронизации из внешней БД должен передаваться email пользователя.
3. Если используется опция отправки пароля пользователю, пароль должен храниться в открытом виде во внешней БД .
4. Если пароль во внешней БД не указан, пользователь в Moddle останется без пароля и не сможет авторизоваться.

Настройка:

Настройки в плагине аутентификации "Внешняя база данных":
1. Предварительно настраивается плагин аутентификации "Внешняя база данных". В настройках пароль должен быть указан как внутренний (должен храниться в СДО),  см.п. 2.1.2. в статье "Аутентификация "Внешняя база данных". Синхронизация пользователей по внешней БД". Остальные настройки синхронизации выбираются согласно необходимому сценарию работы.

Настройки в Панели обработки прецедентов:
2. В пункте Включить сохранение паролей из внешней базы данных для включения сценария нужно поставить галочку.
3. В селекторе Тип пароля во внешней базе данных указывается в каком виде хранится пароль во внешней базе: Текстовый или Хеш MD5.
4. Если планируется отправка уведомлений пользователям, включается опция Отправка сообщения пользователю и, если нужно, редактируются уже заполненные по умолчанию поля "Заголовок уведомления", "Полный текст уведомления" и "Короткий текст уведомления" (можно использовать указанные в описании макроподстановки).
5. При включении опции Принудительная смента пароля пользователю будет предложено изменить пароль при следующем входе в систему. При этом создаваемый пользователем пароль должен будет соответствовать политике паролей (если она включена).

 

Функции для разработчиков

Все перечисленные ниже функции применяются при написании сценариев для плагина «Панель обработки прецедентов».

  • Обработчик, сравнивающий полученное значение с заданным. Например, можно сравнивать контекст главной страницы и контекст страницы, где находится пользователь.
  • Обработчик условия, проверяющий, обработан ли прецедент. Может быть использован, например, для показа уведомления пользователю только один раз при заходе пользователя в курс или для отправки лишь одного уведомления пользователю через определенное время.
  • Обработчик условия, проверяющий, является ли переданный предыдущим хэндлером результат пустым.
  • Обработчик, получающий значение настройки user_preferences (частные настройки пользователя) и записывающий ее в переменную.
  • Хендлер «Показать уведомление», показывающий уведомление с заданным типом, текстом и заголовком пользователю.
  • Хендлер, взаимодействующий с брокером сообщений Rabbitmq «Получение ответа из очереди Б на отправленный запрос в очередь А». Хендлер отправляет запрос в очередь А, помеченный уникальным идентификатором, прослушивает очередь сообщений Б, и, как только находится сообщение с заданным идентификатором, возвращает json найденного сообщения.
  • Обработчик «Остановка сценария по условию» прекращает работу сценария при выполнении предварительно заданных условий.
  • Сценарии в «Панели обработки прецедентов» переведены на валидную Yaml-разметку.
  • В параметрах вызова обработчика (хендлера) можно задать условия для его срабатывания.
  • В параметрах вызова любого обработчика можно настроить сохранение результата работы обработчика в переменную, указанную в конфигурации обработчика.
  • Возможно указать для обработчика входные параметры следующих типов:
    • статические
    • указанные в переменной
    • из предыдущего обработчика
  • Обработчик получения способов записи на курс по заданным условиям.
  • Обработчик получения записей из таблицы кастомных полей по коду сущности и дополнительным параметрам.
  • Обработчик удаления способа записи на курс.
  • Обработчик удаления глобальной группы.
  • Обработчик получения переменной из контейнера.
  • Обработчик получения значения конфигурации плагина.
  • Обработчик получения записи из таблицы «Cohort» БД о глобальной группе по ее идентификатору.
Теги: контент, отчет
Рейтинг ответа: 0 (0 оценок)

Комментарии запрещены