Показать сообщение отдельно
Старый 30.05.2019, 10:44   #9  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
Предположим у нас есть RunBaseBatch.
Он делает что-то тяжелое. Мы конечно же хотим сделать так, чтобы он мог работать на пакетном сервере.
Но этот класс забирает данные из какого-нибудь файла, который находится на клиенте.

Как и куда правильно вставить действия, которые должны выполняться на клиенте?

Сейчас правильный способ видится таким:
* разбить процесс на два runBaseBatch класса: первый будет иметь свойство RunOn=Client, второй - RunOn=Server
* первый в методе run должен будет выполнить клиентские действия, создать второй класс на сервере и передать ему параметры и данные

Но что-то как-то слишком сложно. Очень напоминает overprogramming.

Может существует другой способ?
А по-моему - нормально. Я бы даже усугубил Класс-обработчик не запускать напрямую, а формировать пакетное задание.

Тогда то, что выполняется на клиенте - это запускает сам клиент (вместо RunBaseBatch - использовать RunBase), но результатом запуска становится не обработанные данные, а сформированное пакетное задание. Вот после обработки этого пакетного задания и получим результат

Т.е. логика такая

1. Клиент запускает пункт меню с классом RunBase. Это НЕ пакетное задание
2. Класс загружает нужные данные с клиента. Возможно, записывает в какие-нибудь parm-таблицы
3. Формирует пакетное задание на основе другого класса RunBaseBatch, который и выполняет собственно обработку
4. Для пользователя - работа пункта меню завершена. Но собственно обработка пока не выполнена. Это надо ждать завершение нового пакетного задания


Здесь единственный недостаток, что если по окончании обработки необходимо выполнить некие действия на клиенте, то не получится

Можно вообще разделить на 2 независимых пункта меню

1. Загрузка данных
2. Обработка ранее загруженных данных

Тут можно много всякого разного напридумывать при такой идеологии. И повторная обработка, и просмотр ошибок, и "разбор полетов" на предмет, что загрузили не то. Да мало ли... Но это если в этом есть необходимость, конечно...
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: mazzy (2), ax_mct (5).