WEB-ИНТЕРФЕЙС СИСТЕМЫ "НАУКА РОССИИ"
Первые версии web-интерфейса системы "Наука России" появились около года назад и были приняты на вооружение БЕН РАН. Первоначально перед системой ставились достаточно традиционные цели по организации web-интерфейса к существующей фиксированной базе данных - сама по себе теоретического интереса такая задача не представляет, этот вопрос хорошо освещен и в литературе, и в многочисленных успешно функционирующих проектах, существует большое количество типовых решений и стандартного инструментария для организации подобного рода доступа.
Одной из первых перед системой "Наука России" возникла задача настраиваемости таблиц системы. Изначально система базировалась на 4 таблицах, хранящих различные части схемы данных общих записей: "Публикации", "Персоналии", "Организации", "Источники". Так как для различных целей могли понадобится различные поля в этих таблицах, вопрос о наращиваемости структуры полей был решен путем создания редактора структуры таблиц, позволяющего на лету модифицировать схему данных, добавляя, изменяя и удаляя поля. При этом, благодаря использованной ISAM, эти действия выполняются практически мгновенно.
Этот шаг был реализован в первой версии "Науки России". Тем не менее, система расширялась как в качественном, так и в количественном направлении, появлялись новые функции, повышалась совместимость и удобство для пользователя, и с некоторых пор жестко фиксированная структура из 4 отдельно описанных таблиц стала серьезной помехой для проведения дальнейших разработок на базе этой системы. Вторым шагом по пути универсализации и структуризации "Науки России" стало избавление от фиксированной структуры из 4 таблиц. Каждая таблица получила свой внутренний идентификатор, и все общие свойства каждой из них были сведены к одной глобальной сущности, в том числе были четко выделены типы, возможные содержания полей и соответствующие им элементы интерфейса для двух случаев: редактирования (или ввода) и просмотра записи.
Такие действия в значительной мере упростили и сделали более гибкой настройку системы на дополнительные таблицы, поля и типы данных. Стало намного проще, например, добавить поддержку нового типа поля в систему - для этого достаточно было дописать поддержку интерфейсов редактирования и просмотра для этого типа поля и описать механизм хранения полей и записей в базе данных. Система позволяла также ограниченно менять структуру таблиц, хотя сам процесс был связан с множеством ограничений, вызванных тем, что связи между таблицами во второй версии системы были жестко фиксированы во многих местах в самом коде, что затрудняло, например, добавление новой таблицы.
Стоит заметить, что подразумевается под термином "связи между таблицами". Как и любая реляционной модели, модель БД "Науки России" содержит таблицы, связанные ключами отношениями типа 1-к-1, 1-к-многим и много-к-многим. В оригинальной версии с 4 таблицами эти связи выглядели следующим образом:
Публикация <<->> Персоналия <<->> Организация
Публикация <<-> Источник
Но, кроме существования чисто теоретических связей по ключам между таблицами, в системе "Наука России" существуют определенные "пути прохождения" пользователя по интерфейсу ввода в процессе ввода или корректирования одной записи. В некотором смысле такой подход связан со спецификой пользовательского интерфейса и web-среды, и, с одной стороны, он относительно несложно реализуется технически, с другой - крайне удобен для конечного пользователя.
Еще на этапе проектирования первой версии системы были определены основные пути прохождения пользователя (workflow) для ввода информации по каждой из сущностей, для 4-табличной версии эти пути были следующими:
Для публикации:
публикация -> персоналия -> организация
публикация -> источник
Для персоналии:
персоналия -> организация
Для организации и источника ввод записи заключался только в вводе информации о самой записи без установления связей.
Очевидно, что задача реализации таких связей и путей (без рассмотрения вопросов их дальнейшего развития) могла быть с успехом решена без построения достаточно сложного математического описания соответствующей схемы данных, что и было сделано в первой и второй версиях системы "Наука России".
Разработка третьей версии ставила перед собой задачу создания уже нечто большего, чем web-интерфейс для одной конкретной базы данных или системы баз данных. Третья версия "Науки России" фактически представляет из себя настраиваемый конструктор для реализации практически любых представимых в реляционной модели баз данных, ориентированных на описание и поиск различных ресурсов.
Было принято решение перенести всю функциональность конкретных таблиц в отдельные типовые классы функциональностей, а существующие таблицы описать как схему данных, основанную на различных сочетаниях таких типовых классов. При этом внимание уделялось сохранению как привычных схем работы (путей прохождения для пользователей), так и полноте предоставляемых средств для разработчика в будущем с помощью такого API.
Новая версия системы "Наука России" накладывает некоторые дополнительные условия на существующие базы данных, сделанные для обобщения методов работы с таблицами, а именно каждая сущность-таблица, с которой идет работа и на которую, может быть, придется ссылаться из справочников, должна иметь визуальной идентификатор-строку "name", которая будет использоваться для показа пользователю в качестве указателя на конкретную запись.
Для каждой базы данных, поддерживаемой описываемой системой, создается конфигурация, включающая в себя для каждой таблицы:
Для каждой такой ссылки из п. 4 в конфигурации фиксируются следующие параметры:
Таким образом, введение понятия конфигурации системы для определенной базы данных в третьей версии "Науки России" продвинуло возможности системы до создания специализированных, сильно отличающихся по структуре БД на основе того же программного обеспечения. Ярким примером такой БД можно считать базу данных "Информационные ресурсы РАН", которая имеет следующую структуру:
Ресурс <<->> Персоналия
Ресурс <<->> Организация
Персоналия <<->> Организация
Стоит заметить также, что в отличие от "Науки России", все множественные связи здесь типа "0n" в обозначениях, предложенных выше. Система "Информационных ресурсов РАН" функционирует в точности на той же самой общей платформе, что и различные базы данных "Науки России", отличаясь только конфигурационным файлом, что позволяет говорить о достаточной гибкости предложенного подхода.
Благодаря реализованной за счет конфигурации гибкой настраиваемости SQL-обработчика, систему можно использовать даже для организации web-интерфейса к уже существующим базам данных - достаточно просто корректно описать их структуру и связи.
Дальнейшее развитие системы предполагается осуществлять "вглубь" и "вширь", Вширь - это добавление новых возможностей экспорта и импорта, взаимодействия с внешними по отношению к web-среде системами, улучшения интерфейсов, в том числе поискового. Вглубь - это дальнейшая работа над автоматизацией работы поисковой системы. Поисковая компонента "Науки России" осталась единственной частью системы, которую нельзя пока напрямую сгенерировать из конфигурации ввиду достаточной сложности и неоднозначности формирования поисковых запросов. В будущем необходимо будет формализовать и описать на уровне структур данных и эту часть, а также реализовать трансляцию этой части конфигурации напрямую в соответствующие web-формы и SQL-запросы из них к базам данных.