Общая архитектура J2EE для приложений типа Wizard / Анкета - PullRequest
0 голосов
/ 13 января 2011

Если вы разрабатываете приложение таким образом, что пользователь должен ответить на несколько вопросов на странице, и есть десятки страниц. Какие библиотеки и инструменты Java вы используете, и есть ли другие рекомендации, которые помогли вам написать такой сайт.

Требования:

  • Пользователь должен иметь возможность выйти из приложения в любое время и вернуться
  • Пользователь должен иметь возможность перемещаться от начала до конца на основе предыдущих вопросов

Возможные замечания и потенциальные проблемы: - Использование Struts2 + или другого фреймворка j2ee - Возможно использование пружинного сердечника - Пользователь Hibernate - серверная часть Oracle

  • Вы сохраняете в базу данных на каждой странице?

  • Необязательно (использование JMS), чтобы поставить в очередь, что страница завершена.

Ответы [ 2 ]

0 голосов
/ 13 января 2011

Spring Webflow хорош в подобных вещах, и я бы использовал его в этой ситуации, так как я уже использую его для других целей. Мне было бы немного тяжело поднять его, если вы не использовали его раньше, и это единственное (немедленное) использование, которое вы для него используете.

Объект «форма» в веб-потоке может содержать данные из нескольких форм, разбитых по нескольким страницам, и каждая страница заполняет только часть всего объекта.

Чтобы выйти и вернуться в любое время, вам нужно будет сохранять объект формы на каждой странице / переходе. Я бы предпочел сохранить его в той же таблице, что и готовые формы, но иметь столбец для завершения = ложь и отметку времени последнего действия.

0 голосов
/ 13 января 2011

Для записи состояния действий пользователя требуется какое-то временное хранилище данных (например, промежуточная таблица) -

Пользователь должен иметь возможность выйти из приложения в любое время и вернуть

Вы можете захватить все действия пользователя в соответствующем объекте значения (скажем, с именем WizardData) в вашем HTTPSession (поскольку вы используете веб-уровень). Нет необходимости сохранять данные на каждой странице. Вместо этого обновите WizardData в сеансе на «следующий» или «предыдущий». Когда пользователь завершит работу мастера, сохраните информацию в таблицах базы данных (j2ee / spring / hibernate).

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

ИМХО, использование JMS будет избыточным для реализации такой функциональности. Вы не получаете легкости реализации, пока добавляете дополнительный слой и сложность.

...