Библиографическое описание:

Смолин А. В., Головко Д. В. Пример разработки собственных отчетов в информационной системе NetSchool средствами JavaScript // Молодой ученый. — 2014. — №18. — С. 634-638.

 

Многим известно про внедрение по стране комплексной информационной системы для современной школы NetSchool — удобно, функционально, современно. Несмотря на то, что система создавалась под нужды школ, даже заведения среднего профессионального образования могут использовать ее для своих целей.

Технологический колледж ФГБОУ ВПО «ЮУрГУ» (НИУ) в течение четырёх лет поэтапно внедряет эту систему. Предыдущий, 2013–14 учебный год стал первым, когда весь персонал полностью использовал возможности этого программного продукта. Следовательно, можно говорить об окончании процесса внедрения и начале эксплуатации программного продукта. Первый год полноценного использования информационной системы показал, что вся информация, необходимая для управления образовательным процессом в системе присутствует. Однако, количество отчетов, ориентированных на требования школы, не достаточно. Система имеет встроенный конструктор отчетов, но его возможности ограничены и не позволяют создавать узкоспециализированные подробные отчеты.

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

В нашем случае возникла необходимость создание отчета по вычитке часов педагогами с детализацией по учебным группам, дисциплинам и дням месяца (Таблица 1). Из-за замен в расписании, вызванных рядом объективных причин, и особенностей учебных планов среднего профессионального образования, включающих в себя учебную и производственную практику, ежемесячные отчеты отличаются друг от друга.

Таблица 1

Форма отчета

Педагог

Группа

Дисциплина

Дата

1

2

30

31

 

 

 

 

 

 

 

 

 

 

 

 

Количество выданных педагогом часов

 

 

 

 

 

 

 

 

 

 

 

 

 

Все эти данные есть в нескольких отчетах, встроенных в систему, однако их форма и количество делают работу по созданию единого отчета достаточно трудоемкой. Так, в среднем, на один отчет по своей работе за месяц педагог тратит около 30 минут, что при штате в 50 педагогов превращается в 25 часов или 3 человекодня на создание единого отчета. Кроме того, при создании своей части отчета каждым педагогом не исключены ошибки, обусловленные человеческим фактором.

Чтобы понять, как решить эту проблему рассмотрим общие сведения о работе клиент-серверных систем.

Нажимая на любую кнопку формирования отчета на странице браузера, мы формируем запрос к серверу на получение определенных данных. Серверу для формирования ответной страницы необходимо знать ряд параметров, которые встраиваются в запрос в явном (GET-запрос) или не явном (POST-запрос) виде.

Составлять свой новый отчет мы решили на основе встроенного в систему отчета «Журнал группы».

Пример отправки GET запроса на страницу «Журнал группы». Все параметры разделены знаком «&». На их основе сервер заполняет страницу разными данными.

Разбор параметров запроса:

Основные параметры, которые отправляются серверу на страницу «Журнал группы»: PrintOtherAssignements, StartNewPage, AT, ADT, DDT, SCLID, ACNT, PCLID.

PrintOtherAssignements — выводить другие задания, кроме домашних.

StartNewPage –начинать каждую таблицу с новой строки.

AT — authenticationtoken, значение, которое служит для того чтобы связать пользователя (браузер) с пользователем на сервере.

ADT — начальная дата отчета, DDT — конечная дата отчета. Совокупность образует интервал.

SCLID — выбор предмета.

ACNT — количество занятий на странице.

PCLID — id(идентификационный номер в системе) группы (отличается от номера группы).

Перебирая в цикле все группы, мы сможем собрать все данные по колледжу. Для того, чтобы правильно обращаться к серверу, используя id группы, необходимо средствами браузера проанализировать страницу отчета. В браузере Mozilla Firefox для этого необходимо вызвать контекстное меню и выбрать пункт «Исследовать элемент» для окна «Группа».

Параметр Value содержит id группы, которая указана между <option> и </option>.

Далее для работы нам понадобиться специальное дополнение (аддон) (англ. Expansionpack, add-on) — дополнительное программное обеспечение, расширяющее возможности базового пакета.Разрабатываться он будет на языке JavaScript с помощью инструмента Add-onSDK от Mozilla.

Логика работы аддона будет заключаться в следующем:

1.                  На страницу с базовым отчетом «Журнал группы» добавим кнопку запуска скрипта;

2.                  Формируем GET-запрос с необходимыми данными (дату выбирает пользователь, остальное делает скрипт);

3.                  Получаем от сервера страницу с отчетом и анализируем ее, извлекая необходимую информацию (ФИО педагога, учебную группу, дисциплину, количество проведенных занятий с привязкой к дате);

4.                  Сохраняем необходимую информацию во временном хранилище;

5.                  Повторяем шаги 2–4 для всех групп;

6.                  Открываем новую вкладку в браузере и в нее помещаем сформированный отчет;

7.                  Очищаем временное хранилище.

Ниже приведены фрагменты кода с необходимыми комментариями.

Привязка запуска скрипта к странице встроенного отчета:

Теперь, каждый раз, когда будет вызывать страница «Распечатка журнала группы» скрипт /lib/main.js будет добавлять к ней /data/main.js.

Формирование GET-запроса для обращения к странице «Журнал группы» происходит путем объединения всех ранее рассмотренных параметров. Осталось только добавлять к нему каждый раз новый ID группы:

Выполнение запроса, который вернёт нам HTML код страницы «Журнал группы» с выбранной нами группой:

В отчетах, полученных с сервера, осуществляем поиск предмета и преподавателя:

Для каждой анализируемойтаблицы с информацией по конкретной дисциплине и преподавателю определяем даты и количество часов. Поскольку необходимый нам отчет формируется всегда за один календарный месяц, то скрипт из найденной даты в формате «ДД.ММ.ГГГГ» будет забирать только первые 2 значения, т. е. число, игнорируя месяц и год.

После этого отправляем полученные данные в /lib/main.js.

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

Теперь получившийся отчет можно скопировать и использовать, например, в Excel для последующего анализа. Время перебора скриптом всех отчетов и на их базе формирование своего отчета на достаточно скромном учебном компьютере — около минуты. Напомню, что ранее этот отчет в общей сложности требовал 3 человекодня.

Итогами работы являются сразу несколько достижений:

-        значительное сокращение времени на формирование необходимого отчета;

-        исключение ошибок за счет автоматизации формирования отчета.

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

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

Обсуждение

Социальные комментарии Cackle