Clean Architecture. Отображение в GUI процесса выполнения длительной операции
От: zelenprog  
Дата: 13.09.24 06:17
Оценка:
Здравствуйте!

Стараюсь написать программу с "хорошей" архитектурой.
Читал про Чистую архитектуру:
https://habr.com/ru/articles/499078/

Как я понял, в соответствии с Чистой архитектурой, выходные данные ResponseModel бизнес-операции (UseCase Interactor) после ее завершения "возвращаются" в вызывающий слой через интерфейс OutputPort.
Интерфейс OutputPort реализуется в вызывающем слое как объект Presenter.
Но ведь OutputPort "возвращается" только при завершении бизнес-операции, через OutputPort возвращаются результаты выполнения.

А как сделать, чтобы происходило изменение пользовательского интерфейса именно в процессе выполнения длительной бизнес-операции?

Например.
Бизнес-операция — это обработка вложенных файлов и папок. Обработка каждой папки достаточно длительная.
Нужно, чтобы при выполнении этой операции в окне отображалась таблица с колонками.
При начале обработки новой папки\подпапки в таблице должна появляться новая строка и в первой колонке "Имя папки" таблицы отображается имя папки.
По ходу обработки папки (при обработке очередного файла в этой папки) во второй колоке "Файл" должна появиться строка "обрабатывается файл ххххх". После обработки всех файлов в колонке таблицы "Результат" должен появиться результат обработки папки.

В общем-то по смыслу ничего сложного.
Но как это реализовать, придерживаясь принципов Clean Architecture?
Как вызывающий слой должен вызвать UseCaseInteractor?
Что должна сделать процедура бизнес-операции, чтобы "сработали" все эти OutputPort, Presenter и т.д., и чтобы в итоге пользователь видел процесс заполнения таблицы?

Объясните, пожалуйста.
Если можно — покажите какой-нибудь подходящий пример кода.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.