Создание офф-лайного решения по ведению журнала

Материал из Course Orchestra
Перейти к: навигация, поиск

Назначение

Решение предназначено для реализации офф-лайн работы с журналом занятия.

Решение обеспечивает следующие функции:

  1. Автоматизированный импорт журналов, которые выдает основная Система (предположительно текущий день и две недели вперед)
  2. Возможность проставлять оценки
  3. Постоянная синхронизация данных оценок в основной базе и в офф-лайн базе

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

Требования к интерфейсу

Интерфейс должен максимально повторять интерфейс он-лайн решения. Все вопросы касательно вида решения можно задавать Илье Тихонову (il_ka@mail.ru). Само решение можно посмотреть у нас по адресу 183:8080/med. Имя artamkin_sa, пароль master. Решение "Личный кабинет преподавателя".

Он состоит из двух окон:

  • Список журналов занятий (принципиально обычная html-таблица)
  • Журнал занятия (принципиально обычная html-таблица)

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

Журнал -- таблица, каждая строка которого относится к студенту. Во втором столбце размещаются фотографии студентов. В третьем и далее размещаются виды контроля.

Обмен данными с базой данных

Обмен данными осуществляется через сервисы в формате showcase.

Перечень сервисов:

Получить список журналов

Запускается при открытии списка журналов и при нажатии кнопки Обновить. Примерная структура ответа.

<spec>
   <field id = 'disc' name = 'Дисциплина' width = '10px' type = 'string (decimal, boolean, date, time)'/>
   <field id = 'stCount' name = 'Кол-во студентов' width = '10px' type = 'decimal'/>
</spec>
<data>
   <rec oblId = 'guid...' disc = 'Химия' stCount = '30'/>
   <rec/>
</data>

Требуется уточнить формат. Предполагается всегда наличие поля oblId. Именно по этому коду происходит обновление.

Получить журнал по коду

На входе -- код журнала. Структура должна быть похожей на то, что сейчас создает Илья. Процедура запускается, (1) если есть журналы, которые еще не загружены, (2) если пользователь нажал кнопку "обновить", (3) если в момент отправки оценки, мы получили ответ, что такая оценка бессмысленна (например, в результате корректировки студента не оказалось на занятии.

Требуется разработать формат.

Отправить набор оценок

Срабатывает в момент изменения оценки. При отсутствии подключения оценки кэшируются и отправляются единым пакетом.

Требуется разработать формат.

Порядок синхронизации

Порядок аутентификации

  1. Обычная он-лайн аутентификация происходит только в том случае, если в приложении нет токена
  2. Если аутентификация прошла успешно, то создается токен и передается на сервер. Токен передается средствами gwt-приложения (серверной части). И пишется в некую таблицу: sid/old_token/new_token.
  3. При каждом обращении к веб-службам передается токен. На выходе каждая операция также возвращает токен. Старый токен записывается в old_token, новый token записывается в new_token.
  4. Пользователь может нажать "Выйти". В этом случае токен стирается.
  5. Если идет обращение под старым токеном, то мы игнорируем и считаем, что произошел локальный сбой
  6. Если идет обращение с несуществующим токеном, то мы пишем "ошибка безопасности"
  7. (Возможно, имеет смысл хранить историю токенов.)
  8. В быстрой реализации мы не меняем токен

Порядок синхронизации списка мероприятий и содержания мероприятий

  1. Запуск синхронизации учебных мероприятий происходит либо автоматически (при отсутствии синхронизации за последние 12 часов (задача на будущее)), либо по нажатию кнопки в списке занятий
  2. Перед синхронизацией всегда сначала происходит сброс данных с оценками. Т.е. синхронизация журналов возможна только в том случае, если нет изменений, которые надо скидывать в БД
  3. При синхронизации мы всегда получаем весь список занятий, т.к. у них может измениться набор атрибутов.
  4. При синхронизации мы получаем содержание (1) тех мероприятий, которых у нас нет и удаляем лишнее

Порядок синхронизации оценок

  1. При простановке оценок
    1. Если on-line, все сразу летит на сервер.
    2. Если off-line или on-line не улетело, выставляется флаг
  2. Как только появляется подключение, все оценки с флагом летят на сервер единым пакетом, а флаг снимается
  3. Если в ответном сообщении процедура простановки оценок вернула код 'nr' (не найдены студенты) или 'nc' (не найден вид контроля), то этот код выставляется в параметрах журнала и при отображении выводится преподавателю в верхней части красным цветом.

Технология

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

Тестировать достаточно только с Chrome (но желательно рассмотреть возможность кроссбраузерного решения).

Предполагается также создание обертки для android, которая позволит скачивать данное приложение через google market. {{#allow-groups:user}}