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

Материал из DOF
Версия от 12:03, 14 августа 2014; Konovalov (обсуждение | вклад) (Метастатусы)
Перейти к: навигация, поиск
Плагин
Название cpassed
Тип workflows


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

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