Лучший способ реализации пакетной операции в архитектуре RESTful?

У нас есть преобладающая архитектура RESTful для нашего продукта. Это позволяет нам практически реализовать практически все необходимые функции, кроме этого нового требования, которое входит.

Мне нужно реализовать страницу, которая позволяет пользователю выполнять операции крупномасштабного БД синхронно. Они могут остановить операцию между ними, если они поняли, что совершили ошибку (вместо того, чтобы ждать завершения и выполнения операции отмены).

Мне было интересно, может ли кто-нибудь дать некоторые указания относительно того, что было бы лучшим способом реализовать такую ​​функциональность?

Ура! Nirav

3 ответа

Как насчет ресурса, который инкапсулирует набор пакетных операций? Создание ресурса означает начало операций (данные для указания того, что должны делать операции, отправляются через POST). Обновление ресурса позволяет остановить его или изменить его во время обработки.


Вам необходимо интегрировать пакетный менеджер или реализовать свой собственный. Есть несколько продуктов, которые могут вам помочь. В качестве примера прочитайте эту статью http://www.ibm.com/developerworks/websphere/techjournal/0801_vignola/0801_vignola.html


Я бы начал большую операцию в отдельном потоке. Покажите пользователю постоянно обновляемый статус потока, а также кнопку "Отмена". Если пользователь нажимает кнопку "Отмена", вы убиваете поток.

Именно так я реализовал подобные вещи в прошлом.

Идея состоит в том, чтобы немедленно вернуть их обратно, но не позволяйте им делать что-либо еще, пока поток не будет завершен, кроме отмены.

В общих терминах вам нужна "очередь заданий" и способ управления очередью.

licensed under cc by-sa 3.0 with attribution.