Показать ход выполнения процесса Java, даже после повторного открытия веб-страницы - PullRequest
0 голосов
/ 09 февраля 2011

Я работаю в компании, занимающейся разработкой программного обеспечения для веб-сайтов J2EE.

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

Пользователи могут загрузить файл и нажать кнопку «Процесс», после чего процесс начнется. Но эти процессы могут иметь очень большую продолжительность, так как файлы CSV могут быть очень большими. Когда пользователи закрывают веб-браузер, процесс все еще продолжается на сервере.

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

Есть ли в Java какой-то механизм, с помощью которого я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2011

Если вы сохраните CSV-файл как raw в таблице в базе данных, запись должна иметь уникальный UPLOAD_ID .В этой таблице должен быть еще один столбец для ссылки на связанный CLIENT в качестве внешнего ключа.Короче говоря, вам нужно связать загруженную запись с клиентом или именем пользователя того клиента, который выполнял загрузку.

0 голосов
/ 09 февраля 2011

Самый простой способ отследить прогресс - заставить процесс записать свое обновление в таблицу базы данных, скажем, «jobs».Когда пользователь загружает новый CSV-файл и нажимает «обработать», вы можете сначала сделать запись в этой таблице.Процесс периодически записывает в таблицу свой прогресс.Когда пользователь входит в свою учетную запись, он может видеть все работы, которые он начал, и их прогресс.Это не самый чистый подход, но он сделает работу.Многое зависит от вашей конкретной структуры.Возможно, вы могли бы сделать запись в этой таблице с идентификатором процесса, и вам не нужно будет обновлять прогресс в таблице.Затем внешний интерфейс может использовать RPC для вашего процесса, чтобы запросить его ход.

...