Рисунок 2.1 -Диаграмма сущностей базы данных этапа проектирования
С помощью SpringData [18] планируется создать интерфейсы репозиториев, после чего фреймворк сам сгенерирует реализацию. При сохранении в базу данных каждому классу присваивается уникальный идентификатор id, которое является строкой (требование MongoDB) и используется базой данных для корректного функционирования. Далее приведено описание каждого из классов (см. таблица 2.1):
Таблица 2.1 - Описание классов проектируемого приложения
|
Класс |
Атрибуты |
Связи |
Описание |
|
|
User |
Login: строка Password: шифр. строка |
Corpus |
При регистрации пользователя создается запись о нем. |
|
|
Corpus |
Name: строка |
User Document Text Statistics |
В корпусе содержатся документы, которые принадлежат одному из пользователей. Возможно, будут реализованы публичные корпуса без владельца. |
|
|
Document |
Name: строка |
Corpus Text |
Документ - основная сущность внутри корпуса, он хранит размеченный в GATEтекст с аннотациями. Название документа будет соответствовать имени загруженного файла. |
|
|
Text |
Document TextNode |
Сущность, инкапсулирующая размеченный текст. Содержит множество узлов, в которых находится текст. |
||
|
TextNode |
Text: строка |
Text |
Текстовый узел, может иметь или не иметь аннотации. |
|
|
Annotation |
Name: строка Type: строка StartNode: целое EndNode: целое |
TextNode Statistics |
К каждому текстовому узлу может быть привязано множество аннотаций, они будут создаваться внутри GATE. |
|
|
Statistics |
Count: целое |
Corpus Annotation |
Статистика по корпусу будет содержать встречаемость маркеров в текстах корпуса (возможны другие атрибуты, на данной этапе еще неясно). |
Классы Corpus, Document, Text, Annotationявляются главными классами внутри портала. Именно за счет них будет выполняться анализ академических текстов. Содержимое загружаемых документов будет храниться на сервере, так как MongoDB позволяет хранить довольно большие документы в записях.
При разработке будет использоваться SpringMVC, поэтому классы слоя моделей по своей структуре не будут отличаться от вышеописанной структуры базы данных. Как правило, у таких классов все поля будут совпадать, а операции над ними будут производиться в сервисном слое.
Для слоя контроллеров предусмотрено разделение по области ответственности: так, CorpusController будет ответственен за операции над корпусами, UserController - за операции над пользователями и т.д. То же касается и сервисного слоя. Диаграмма классов для реализуемого паттерна MVC представлена ниже (см. рисунок 2.2).
Рисунок 2.2 - Диаграмма классов паттерна MVC
Классы разбиты на три слоя: слой контроллеров, сервисный слой, и слой моделей предметной области. На диаграмме выше изображены лишь интерфейсы репозиториев для моделей предметной области, так как уже было оговорено, что структура классов моделей практически полностью повторяет таковую у сущностей, описанную в диаграмме ERD.
Слой контроллеров содержит пять классов контроллеров: для корпусов, документов, отображения статистики, текста и пользователей. Подробно каждый класс описан в таблице ниже (см. таблица 2.2). Для краткости и удобности отображения данных в таблице суффикс «Controller», а также суффиксы методов создания, чтения и т. д. будут опущены.
Таблица 2.2 - Описание классов слоя контроллеров
|
Класс |
Метод |
Действия |
|
|
Corpus |
create |
Обрабатывает запрос на создание корпуса, обращается к соответствующему методу сервиса корпусов. |
|
|
read |
Обрабатывает запрос на чтение списка корпусов, возможно указание критерия выборки, например, вместимости страницы и номера. |
||
|
delete |
Обрабатывает запрос на удаление корпуса. Следует заметить, что на сервисном слое из сервиса корпусов произойдет каскадное удаление и документов, входящих в корпус. |
||
|
Document |
create |
Переадресует запрос на создание корпуса в сервис корпусов, так как он содержит корпус, выбранный пользователем на данный момент. |
|
|
read |
Запрашивает у сервиса корпусов все документы, входящие в корпус, возможно задание критериев выборки. |
||
|
delete |
Вызывает у сервиса корпусов метод на удаление документов из коллекции данного корпуса. |
||
|
Statistics |
read |
Запрашивает статистику по текущему корпусу. в статистику будет входить информация о встречаемости того или иного маркера в тексте, и прочая информация. |
|
|
Text |
read |
Передает запрос о чтении текста в сервис документов, который хранит открытый на данный момент документ. |
|
|
User |
register |
Обрабатывает запрос на регистрацию пользователя. |
|
|
login |
Обрабатывает авторизацию пользователя. |
В сервисном слое было выделено пять классов сервисов: сервис корпусов, документов, текста, пользователей, а также отдельный сервис для работы с библиотекой GATE Embedded. Описания сервисных классов представлены в таблице ниже (см. таблица 2.3). Для краткости суффиксы были опущены, как и в предыдущей таблице.
Таблица 2.3 - Описания классов сервисного слоя
|
Класс |
Метод |
Действия |
|
|
Corpus |
create |
Создает и сохраняет в БД пустой корпус. |
|
|
read |
Считывает из БД корпус. |
||
|
delete |
Каскадно удаляет все связанные документы, обращаясь в сервис документов, а затем удаляет корпус. |
||
|
createAndAddDocuments |
Создает новые документы, обращаясь в сервис документов, и прикрепляет их к текущему корпусу. |
||
|
readDocuments |
Считывает список документов, прикрепленных к корпусу. |
||
|
removeDocuments |
Открепляет документы от корпуса и удаляет их из БД. |
||
|
getStatistics |
Возвращает статистику по корпусу. |
||
|
Document |
create |
Создает и сохраняет в БД новый документ, обращаясь в сервис текста для сохранения аннотированного текста. |
|
|
read |
Считывает документ из БД. |
||
|
delete |
Удаляет документ из БД, удаляет текст, но не открепляет его от корпуса. Именно поэтому напрямую из контроллеров не вызывается. |
||
|
readText |
Считывает текст, обращаясь к сервису текста. |
||
|
Text |
create |
Создает текст, обращаясь в сервис GATE. |
|
|
read |
Считывает аннотированный текст. |
||
|
delete |
Удаляет текст, но не открепляет его от документа. |
||
|
Gate |
processWithGate |
Обрабатывает текст с помощью библиотеки GATEEmbedded. Вызывается из сервиса текста. |
|
|
User |
register |
Регистрирует пользователя и сохраняет данные в БД. |
|
|
login |
Авторизует пользователя в системе. |
Слой работы с данными представлен интерфейсами репозиториев, которые реализуют предоставляемый фреймворком Mongo Repository. Во время запуска приложения Springгенерирует шаблонную реализацию, которая смотрит на названия и сигнатуры методов в пользовательских интерфейсах.
Для работы с GATE Embedded используется интерфейс Corpus Controller, к которому можно присоединить корпус документов, а далее обработать их. Обработка происходит с помощью ранее написанной программы-конвейера. Такую программу планируется написать в GATE Developer, после чего она будет использована на портале.
Для клиентской части планируется разработать четыре представления: представление начальной страницы, корпусов, документов и статистики. Каждое из представлений будет иметь элементы управления, при активации которых будут посылаться запросы на контроллеры серверной части (см. рисунок 2.3).
Рисунок 2.3 - Диаграмма классов для клиентской части
Отображение начальной страницы будет иметь элементы управления для регистрации и авторизации пользователя, а также ссылки на другие части портала, например, страницу с корпусами. На данный момент доступ к документам и размеченным текстам планируется предоставить по ссылке со страницы корпусов, поэтому на начальной странице ссылок туда не предусмотрено. В будущем возможно добавление новых частей портала и, соответственно, расширение диапазона ссылок.
На представлении корпусов будет размещен их список, где для каждого корпуса можно будет осуществлять операции выбора, просмотра, и удаления корпуса. С этой страницы можно будет перейти на страницу документов.
В представлении документов будут представлены инструменты для работы с доступными документами корпуса. Здесь также можно будет просмотреть аннотированный текст документа.
Представление статистики будет открыто только для администраторов, и здесь можно будет увидеть статистику по заданному корпусу. Для сторонних сервисов будет разработано API, которое не нуждается в пользовательском интерфейсе.
После проектирования классов приложения проектируется его интерфейс. Было принято решение проектировать интерфейс в Microsoft Visio. Во время этапа реализации портала для разработки клиентской части будут использоваться следующие технологии:
1. HTML для разметки веб-страницы.
2. CSS для создания стилей страницы.
3. JavaScriptдля создания динамического контента.
На данном этапе создаются примерные шаблоны веб-страниц, на этапе реализации действительные страницы могут отличаться. На стартовой странице будут размещены ссылки на другие страницы портала, такие как корпуса, регистрация и авторизация. Кроме ссылок на страницы портала, здесь также будет размещена вспомогательная информация, которая поможет пользователю разобраться с назначением портала.
Предполагается, что для просмотра таких страниц, как, например, для просмотра корпусов или же документов, пользователь должен авторизоваться в систему. Поэтому первой разработанной страницей стала страница регистрации пользователя (см. рисунок 2.4).
Рисунок 2.4 - Страница регистрации пользователя
Для регистрации пользователь вводит свои данные: это полное имя, электронную почту, пароль и, далее, подтверждение пароля. Если все поля заполнены корректно, система зарегистрирует пользователя по нажатии кнопки регистрации. После регистрации пользователь сможет просматривать документы, интерфейс данной страницы представлен далее (см. рисунок 2.5).
Рисунок 2.5 - Страница работы с документами
Из интерфейса портала можно будет просматривать список документов уже загруженных в базу, и для каждого документа будут реализованы действия редактирования документа, просмотра информации о нем, а также удаления из базы (на рисунке выше представлены соответствующие элементы управления). С этой же страницы будет реализована функция добавления нового документа в систему (см. рисунок 2.6).
Рисунок 2.6 - Страница добавления документа
Для добавления документа были добавлены следующие элементы управления: название документа, расположение файла (будет возможен ввод с помощью файлового диалога, примерно такого, как указано на изображении), автор документа, а также выпадающий список корпусов, куда этот текст будет добавлен. По нажатии кнопки создания документ будет добавляться в базу. Для работы с документов создан интерфейс с тестовой разметкой (см. рисунок 2.7).
Рисунок 2.7 - Страница с тестовой разметкой
На изображении показан интерфейс для разметки документа. Разные маркеры будут оставлять различные аннотации, что отражено в их цвете - каждой аннотации соответствует уникальный цвет (список аннотаций находится в правой части страницы). В левой части страницы находятся списки корпусов и документов внутри выбранного корпуса. В поле текст находится размеченный текст. В левой части страницы будет реализовано выдвигающееся меню (см. рисунок 2.8).
Рисунок 2.8 -Боковое меню
Меню выдвигается по нажатии кнопки меню, закрывается так же. В боковом меню перечислены страницы с редактированием корпусов (ее структура будет практически идентична страницы с документами), редактированием документов и редактированием аннотаций (была освещена в предыдущем абзаце).
Архитектура системы
Следующей активностью стала разработка архитектуры системы. Портал состоит из трех слоев: слой данных, серверный слой и слой клиента. Вся обработка информации происходит в серверном слое, в клиентском происходит лишь чтение и отображение данных. Пользователь также может загружать документы, которые сервер обрабатывает и сохраняет в нужном корпусе в слое данных.