Здравствуйте!
Стараюсь написать программу с "правильной" архитектурой.
Прочитал про Чистую архитектуру:
https://habr.com/ru/articles/499078/
Как я понял, в соответствии с Чистой архитектурой, выходные данные бизнес-операции (Use Case Interactor) при выполнении "возвращаются" в вызывающий слой в виде OutputPort.
Но ведь OutputPort "возвращается" только в момент завершения бизнес-операции, через OutputPort возвращаются результаты выполнения.
А как сделать, чтобы происходило изменение пользовательского интерфейса именно в процессе выполнения длительной бизнес-операции?
Например.
Бизнес-операция - это обработка вложенных файлов и папок. Обработка каждой папки достаточно длительная.
Нужно, чтобы при выполнении этой операции в окне отображалась таблица с колонками: "Имя папки", "Обрабатываемый файл", "Результат обработки".
При начале обработки новой папки\подпапки в таблице должна появляться новая строка и в первой колонке "Имя папки" таблицы отображается имя папки. По ходу обработки папки (при обработке очередного файла в этой папки) во второй колоке "Файл" должна появиться строка "обрабатывается файл ххххх". После обработки всех файлов в колонке таблицы "Результат" должен появиться результат обработки папки.
В общем-то по смыслу ничего сложного.
Но как это реализовать, придерживаясь принципов Clean Architecture?
Что должен сделать Контроллер, как нужно вызвать UseCaseInteractor?
Что дожлна сделать процедура бизнес-операции, чтобы "сработали" все эти OutputPort, Presenter и т.д., и чтобы в итоге пользователь видел процесс заполнения таблицы?
Объясните, пожалуйста.
Если можно - покажите какой-нибудь подходящий пример кода.