С 2004 года в МГТУ им. Н.Э.Баумана разрабатывается и внедряется единая комплексная система автоматизации работы отделов Университета. Достигнуты положительные результаты, облегчена работа и повышено качество работы многих подразделений Университета, получен ценный опыт разработки и внедрения такого рода систем автоматизации в большом государственном вузе.
До 2004 года автоматизация Университета носила достаточно бессистемный, случайный характер, что приводило, как правило, к печальным результатам. В Университете существовало множество разрозненных систем, каждая из которых решала только узкие задачи внутри каждого отдела, причем в большинстве случаев в эти задачи сводились к вводу и поддержании всей информации в системе в актуальном состоянии полностью вручную и просто выводу печатных форм. Не было единой системы, которая бы предоставляла авторитативный ответ на вопрос о структуре Университета, о контингенте студентов и преподавателей, о направлениях подготовки и учебном плане и т.п.
Практически в каждом деканате и подразделении Университета, обычно силами студентов, были созданы свои мелкие автоматизированные системы. Среди относительно крупных и введенных в production стоит отметить следующие системы:
Во многом задача автоматизации Университета затруднялась отсутствием как таковой формальной модели взаимодействия различных подразделений и сущностей внутри организации, вплоть до отсутствия стандартизированных на уровне Университета форм документооборота.
На технологическом уровне стоит отметить следующие факты:
Первым важным шагом в процессе автоматизации Университета было принятие общей программы автоматизации, в которую было заложено несколько основополагающих пунктов:
1. Полная автоматизация невозможна мгновенно и будет проходить постепенно. Невозможно создать одну общую систему, которая будет удовлетворять всех, поэтому логично создавать много систем, каждая из которых бы решала какой-то ограниченный набор задач и эти системы обменивались бы данными между собой.
2. Каждая система в рамках программы автоматизации имеет четко описанный набор входных данных, набор выходных данных, задачи и логику работы.
3. Первая система, которая должна быть разработана (без которой работа всех остальных систем практически невозможна) - система учета контингента студентов и структуры учебных подразделений Университета (система "Контингент").
4. Все системы, если нет веских причин против, должны предоставлять удовлетворяющий стандартам web-интерфейс и не быть привязаны к конкретной платформе (браузер и ОС).
По ряду причин, технологической платформой для интеграции были выбраны web-services на протоколе SOAP. Предполагается поддержка SOAP как минимум для решений на базе Ruby (SOAP4R), PHP (PHP5 SOAP), Java (Axis и WSIF) и .NET (.NET Web Services).
В целом, программа автоматизации предполагает наличие следующих систем:
Система "Контингент" была создана и введена в эксплуатацию первой. Она решила одну из основных задач автоматизации Университета - в любой момент времени учитывать состояния студентов, структуру Университета, состав групп, движения студентов между группами, ведение личных дел студентов и т.п.
Идеологически система строилась как транзакционная объектная база данных, в которой сущности (студенты, группы, кафедры и т.п.) имеют некие атрибуты (состояния, принадлежности) и меняют эти атрибуты только по определенным указаниям - приказам. Приказы максимально отражают реальные бумажные приказы, была проведена масштабная работа по стандартизации документооборота в этой части и введен в действие новый механизм взаимодействия подразделений с помощью этих электронных приказов.
Пилотная версия "Контингент" была написана с использование ASP.NET и не удовлетворяла многим этим критериями и была впоследствии переписана с использованием свободных технологий - Ruby/Radical в качестве сервера приложений, MySQL в качестве СУБД, ALT Linux в качестве серверной ОС.
Для того, чтобы изменить какую-то информацию о студенте (в том числе создать информацию о новом студенте), должен быть введен в действие соответствующий приказ. Подразделения Университета (деканаты, ОРИСА и др.) готовят внутри системы электронные проекты приказов, далее следует процедура утверждения, в результате которой отдел кадров вводит приказ в действие и управление делами регистрирует приказ юридически в своем реестре, присваивая ему номер. После введения приказа в действие система автоматически меняет атрибуты у затронутых сущностей с тем, чтобы отразить их актуальное состояние.
Таким образом, по каждому студенту накапливается история приказов, которые касались его - как минимум, это приказ о зачислении, переводные приказы (с семестра на семестр) и приказ об окончании обучения, но существуют также приказы об академическом отпуске, задолженностях, сроках их сдачи, поселение и выселении из общежития и т.п. Состояние студента (значение его атрибутов) на данный момент есть сумма действий всех приказов по нему и представляет собой своеобразный "кэш", который всегда можно пересчитать, прогнав все приказы заново с самого начала, с момента создания студента.
Проекты приказов могут создаваться как вручную с помощью редактора в web-интерфейсе, так и автоматически или полуавтоматически - например, студенты зачисляются в систему "Контингент" по данным приемной комиссии и в этом случае проекты приказов импортируются оттуда.
Свой "выход" - всегда актуальную информацию по студентам - "Контингент" представляет несколькими способами:
Для поддержания такой транзакционной инфраструктуры была разработана специальная технология обработки таких приказов. В системе есть некие сущности (студенты, группы и т.п.), у каждой из них есть атрибуты. Приказы - это не произвольные текстовые документы, а нечто вроде шаблонов, в которые пользователь может вписать необходимые значения. Таких шаблонов сейчас около 20 - это разные типы приказов. Каждый тип приказа описывается в виде XML-файла специального вида, в котором полностью задаются:
Из этого описания генерируются:
Так как атрибутов очень много и они достаточно рассредоточены, то было принято решение хранить заполненные приказы и большинство атрибутов в XML. Реляционная СУБД здесь используется двояко: она хранит и полноценные XML-документы приказов и групп атрибутов, и вместе с тем ведет некий "кэш" текущего состояния студента атомарными полями, по которым нужно вести индексацию и поиск.
На данный момент система "Контингент" полностью внедрена и уже больше 2 лет используется в production. После этапа первоначального обучения, значительно облегчилась работа деканатов, отдела кадров и других подразделений Университета, стали возможными статистические исследования, полуавтоматическая генерация отчетности и т.п. Сильно снизился поток прецедентов подготовки приказов с неформализованном виде в редакторах типа Microsoft Word/Excel. На данный момент активно ведется разработка других систем, которые использует данные, предоставляемые "Контингентом". Все это должно значительно упростить дальнейшую миграцию Университета на свободное ПО.