Продолжайте выполнять процедуру SQL при просмотре в другом месте приложения - PullRequest
0 голосов
/ 23 сентября 2011

У меня возникла техническая проблема при разработке веб-приложения:

Вот цель: нажав на кнопку, пользователь запускает процедуру SQL / Oracle, которая занимает от 5 до 10 минут.до конца успешно.Процедура состоит из 4 этапов:

  1. удаление пользователей ...
  2. удаление данных ...
  3. копирование пользователей ...
  4. копирование данных ...

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

Вот техническая проблема для меня:

После нажатия, если любой пользователь access или остается на на стартовой странице, я хочу, чтобы пользователь видел мониторинг хода выполнения (4 шага).Таким образом, мне нужно подумать о каком-то обновлении страницы, когда пользователь остается на ней.

Технологии веб-приложения:

  • Java / Java EE, Struts, Spring, Oracle SQL9i
  • NO AJAX

У вас есть какие-либо предложения о том, как заставить его работать?

Спасибо.

1 Ответ

2 голосов
/ 23 сентября 2011

Самый простой из возможных подходов - отправить ваше приложение с помощью пакета DBMS_JOB, который выполнил четыре шага в отдельном сеансе.Вы можете либо использовать пакет DBMS_APPLICATION_INFO для обработки своего кода, чтобы интерфейсная часть могла сообщать о текущем состоянии, либо вы могли записывать в отдельную таблицу журналов и запрашивать эту таблицу журналов из интерфейсной части.Вы можете предотвратить отправку второго задания, либо получив задание, определяемое пользователем, с помощью пакета DBMS_LOCK (который был бы более надежным), либо с помощью внешней проверки, чтобы увидеть, было ли уже отправлено задание.в таблице DBA_JOBS.Ваш пользовательский интерфейс может просто автоматически обновить страницу и отобразить текущий статус.

...