Отправка данных из MiddleWare в WebClient

Всем привет. Пытаюсь решить следующую проблему: в сервисе выполняется трудоемкая задача, которая запускается с кнопки на фронте. Нужно показывать прогресс этой задачи. Я создал BackgroundTask, все замечательно, но как мне отправить результат из сервиса в web часть? Подключая примитивный слушатель я ловлю ошибку что он не может быть сериализован. Какими еще путями можно правильно решить этот вопрос?

Добрый день,
Есть несколько вариантов решения данной задачи.

  1. Воспользоваться аддоном global-events. https://www.cuba-platform.com/marketplace/global-events/
    Он позволяет посылать события с middleware и реагировать на них в экранах веб клиента.

  2. Если ваша долгая задача может быть разбита на несколько равных по размеру этапов, то можно на каждый этап сделать отдельный вызов сервиса с UI. После каждого этапа обновлять прогресс.

  3. Прогресс выполнения долгой задачи можно сохранять в базе данных в отдельной таблице (сущности).
    Долгий процесс работает и по мере прогресса обновляет % завершенности в таблице. А экран периодически раз в 3-5 секунд вычитывает данные из этой таблички и обновляет свое состояние.
    В этом случае для различения разных пользовательских сессий между собой нужно будет использовать какое-то дополнительное поле, чтобы они не путались, например брать UserSession.getId().