Разработка:workflows/cpassed

Материал из DOF
Перейти к: навигация, поиск
Плагин
Название cpassed
Тип workflows


Возможные статусы

  • Запланирован (plan) - слушатель подписан на обучение данной дисциплине в данном учебном процессе, но обучение еще не началось.
  • Идет обучение (active) - слушатель обучается в составе учебного процесса.
  • Приостановлен (suspend) - обучение приостановлено по тем или иным причинам (например, непоступление оплаты или приостановка всего процесса)
  • Отменен (canceled) - обучение отменено до его завершения (слушатель отчислен, учебный процесс отменен, слушатель перевелся или отказался от дисциплины).
  • Успешно завершен (completed) - учебный процесс был проведен и успешно завершен. Студент считается сдавшим данную дисциплину, а текущая оценка считается окончательным результатом студента. Каждая запись с таким статусом считается отдельной итоговой оценкой, поэтому нужно заботиться о том, чтобы не было дублирования (при пересдачи старые оценки переводить в статус "неуспешно завершен"). Считаем, что в рамках одной подписки на программу может быть только одна подписка на каждую дисциплину с таким статусом (но могут быть в других статусах).
  • Перезачет из другой программы или учебного заведения (reoffset) - оценка была выставлена по результатам учебного процесса в другой подписке или по предъявленным документам из другого учебного заведения. Обучения не проводилось, но оценка выставлена.
  • Неуспешно завершен (failed) - обучение было проведено, но студент не сдал предмет или предмет был пересдан в другой подписке (cpassed). Оценка из текущей записи не является окончательной, отображается только в истории пересдач и в сохраненных приказах-ведомостях. Если пересдачи со статусом completed нет, дисциплина считается не сданной. Если дисциплина была передана, то окончательной является оценка из другой записи, в которой поле repeatid ссылается на текущую запись.
  • Академическая разница (задолженность) (academicdebt) - академическая разница, образовавшаяся при приеме сразу на 2-ой/3-ий курс с перезачетом сданных дисциплин из другого учебного заведения. Этот статус равносилен "неуспешному перезачету" (перезачету на неудовлетворительную оценку), который требуется пересдать вне основного учебного плана. Конечный, реальный статус неуспешного перезачета дисциплины, противоположный reoffset (успешному перезачету на положительную оценку). Обозначает обязанность ученика пересдать эту дисциплину вне индивидуального учебного плана (в произвольное время за период обучения) без изучения данной дисциплины.

Метастатусы

  • Активный: active
  • Актуальный: plan, active, suspend
  • Реальный:plan, active, suspend, completed, reoffset, failed, academicdebt
  • Мусорный: canceled

Маршруты статусов

Правила описания маршрутов: описания возможностей перехода в новый статус на основании текущего статуса и условия, действительные только при переходе в новый статус из текущего статуса, группируются по текущему статусу, описания возможностей перехода в новый статус не зависящие от текущего статуса группируются по новому статусу.

Запланирован

Возможные переходы ИЗ этого статуса:

  • Идет обучение
  • Отменен
  • Перезачет
  • Приостановлен - этот переход нужен для того, чтобы при переводе учебного процесса из статуса "запланирован" в статус "идет" данная подписка не активировалась.

Идет обучение

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

Возможные переходы ИЗ этого статуса:

  • Успешно завершен (одновременно выставляется итоговая оценка)
  • Неуспешно завершен
  • Приостановлен
  • Отменен

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

Приостановлен

  • Идет обучение
  • Отменен
  • Успешно завершен
  • Неуспешно завершен

Отменен

Конечный статус

Успешно завершен

Возможные переходы ИЗ этого статуса:

  • Неуспешно завершен - в случае, если студент пересдал итоговую оценку, то старая подписка должна быть переведена в статус "неуспешно завершен", а новая ссылаться на старую через repeatid

Перезачет

Возможные переходы ИЗ этого статуса:

  • Неуспешно завершен - в случае, если студент пересдал итоговую оценку, то старая подписка должна быть переведена в статус "неуспешно завершен", а новая ссылаться на старую через repeatid

Неуспешно завершен

Конечный статус

Академическая разница

Конечный статус

API

get_list()

Получить список всех возможных статусов для подписки на предмет

Аргументы:

  • (нет)

Возвращаемые значения:

  • Массив, со списком всех возможных статусов в формате "обозначение" => "Перевод"

get_name()

Получить название статуса по его обозначению в базе данных

Аргументы:

  • (string) $status - обозначение статуса латинскими буквами

Возвращаемые значения:

  • (string|bool) - перевод для этого статуса, либо false, если он не обнаружен в списке допустимых

get_available()

Получить список статусов, в которые может перейти указанная подписка на предмет

Аргументы:

  • $id - id подписки на предмет в таблице cpassed

Возвращаемые значения:

  • (array|bool) - массив возможных состояний в формате ('обозначение' => 'первод') или false в случае когда запись не найдена. В случае, когда переход из этого статуса невозможен - возвращается пустой массив.

change()

Сменить статус подписки на предмет на указанный.

Аргументы:

  • (int) $id - id подписки на предмет в таблице cpassed
  • (string) $status - обозначение статуса латинскими буквами
  • (array) $opt - Массив, где содержатся дополнительные параметры для смены статуса. По умолчанию null.

Возвращаемые значения:

  • (bool) true - если статус удалось изменить, или false в случае ошибки

При обращении к функции change() выполняются дополнительные действия, указанные выше, в разделе "Маршруты статусов". При каждом изменении статуса данные записываются в таблицу statushistory.

init()

Запускается при вставке в таблицу cpassed новой записи. Автоматически назначает созданной подписке на предмет статус "запланирован" (plan).

Аргументы:

  • $id - id только что созданной подписки на предмет в таблице cpassed

Возвращаемые значения:

  • (bool) true если статус успешно назначен или false в случае ошибки

Перехватываемые события

Таблица событий, которые перхватывает этот плагин
Тип плагина Код плагина Код события Пояснение
storage cpassed insert Каждая новая созданная подписка на предмет автоматически переводится в статус "запланирована" (plan), путем вызова функции init().