@zelenprog

Clean Architecture. Как спроектировать отображение в UI процесса выполнения длительной бизнес-операции?

Здравствуйте!

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

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

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

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

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

Объясните, пожалуйста.
Если можно - покажите какой-нибудь подходящий пример кода.
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 1
DollyPapper
@DollyPapper
Мартин придумал сову, а вы теперь на свой глобус ее натягиваете. Не знаю что за OutputPort, видимо в терминологии из статьи это View Model. Примерно так это может выглядеть схематично66eaf0cd5ca32926811795.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы