AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.06.2019, 08:50   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Наверное чтобы дальше обсуждать более конкретно нужно хотя бы из этих двух вариантов выбор сделать.
зачем делать выбор? почему логика или-или?
разве не может быть некоего переключателя в этом нечто?
тогда будет что-то вроде методов showQuery, canRunInBatch...

разве не может быть несколько точек расширения?
переопределил одну - будет одно, переопределил другую - другое. можно переопределить и обе. почему бы и нет?

возвращаясь к исходному вопросу:
если мы говорим о друх классах, то клиентский скорее всего нужно выполнить сразу, а серверный по расписанию. Но параметры расписания передаются в первый класс (в клиентский). Нужно еще как то передать расписание серверному классу.

если мы говорим об одном классе (какой-то расширенный runBaseBatch), то как правильно расширить его функционал?
__________________
полезное на axForum, github, vk, coub.
Старый 06.06.2019, 11:35   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,719 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Мда... Когда я читал вопрос, мне даже в голову не могло прийти, что речь идет именно о пакетной обработке на стороне клиента. Ну, RunBaseBacth, ну и что? Но пакетник на клиенте - глупо и бессмысленно.

Похоже, здесь ловушка "программизма", как ни странно. Чисто программистский подход без учета самой задачи, которую надо сделать. Если отвлечься от кода, то постановка задачи заключается в следующем

1. Организовать диалог с пользователем
2. Загрузить данные с одного конкретного клиента. Важно! Только один клиент из всех установленных!
3. Выполнить обработку полученных данных

Основная проблема, как я понимаю, в п.2. И сам вопрос возник, видимо, по той причине, что эта загрузка выполнятся относительно длительное время. Вот исходя из этого и надо рассуждать

Ну, само-то пакетное задание создается на клиенте. Этот самый диалог с пользователем. Но, вот мы его создали. А дальше?

Запустили мы пакетную обработку на AOS. Нам надо запустить обработку на клиенте.

Вопросы:

- Как, каким образом, AOS узнает о том, на каком именно клиенте надо запустить обработку?
- Как, каким образом, AOS может запустить обработку именно на нужном клиенте? Как он сможет передать управление этому самому клиенту?

Вот если Вы сможете найти ответы на эти вопросы, тогда и станет понятно, как модифицировать RunBaseBacth и стоит ли это вообще делать

Единственное, что мне приходит в голову, для передачи управления - это Buisness Connector. Но к модификации RunBaseBatch это отношения не имеет
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 06.06.2019, 11:56   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Мда... Когда я читал вопрос, мне даже в голову не могло прийти, что речь идет именно о пакетной обработке на стороне клиента.
скажу по секрету, когда писал вопрос мне пакетник на клиенте тоже в голову не приходил. также я полностью забыл про runsImpersonated.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Но пакетник на клиенте - глупо и бессмысленно.
согласен.
но у нас действительно есть runsImpersonated.
после небольшого копания с ним, я не думаю, что runsImpersonated это правильный способ.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Похоже, здесь ловушка "программизма", как ни странно. Чисто программистский подход без учета самой задачи, которую надо сделать. Если отвлечься от кода, то постановка задачи заключается в следующем
возможно.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
1. Организовать диалог с пользователем
2. Загрузить данные с одного конкретного клиента. Важно! Только один клиент из всех установленных!
3. Выполнить обработку полученных данных
тут важно понимать, что пользователь может быть роботом.
и для робота бессмысленно организовывать диалог в виде GUI-окна с кнопками Ok/Cancel и прочими GUI-контролами.

если под "диалогом" понимается некий интерфейс и обмен данными без привязки к GUI - полностью согласен.

Собственно поэтому в исходном вопросе нет ни пользователя, ни средств общения с ним.
В данной задаче предполагается, что входящие параметры как-то получены на клиенте.
Да, в данной ветке хотелось бы обсудить шаг 2,3

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Основная проблема, как я понимаю, в п.2. И сам вопрос возник, видимо, по той причине, что эта загрузка выполнятся относительно длительное время. Вот исходя из этого и надо рассуждать
да. и не просто длительная время, а может завершиться ошибками. и вообще имеет свой протокол взаимодействия с пользователем (в широком смысле слова).

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Ну, само-то пакетное задание создается на клиенте. Этот самый диалог с пользователем. Но, вот мы его создали. А дальше?
или через Business Connector.
Да, скорее всего инициатором будет не AOS. (хотелось бы рассмотреть именно этот вариант)
Но не вижу причин запрещать AOSу быть инициатором. (этот вариант готов пропустить в этой ветке обсуждения)

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Запустили мы пакетную обработку на AOS. Нам надо запустить обработку на клиенте.
Если честно, я ожидал способ когда клиентские действия выполняются ДО создания пакетной обработки. Обращаю внимание, до СОЗДАНИЯ.

Но раз появился runsImpersonated, то готов послушать про вариант "клиентские действия после запуска пакетной обработки на AOS". Мне этот способ не нравится, но вдруг я чего не понимаю.


Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
- Как, каким образом, AOS узнает о том, на каком именно клиенте надо запустить обработку?
- Как, каким образом, AOS может запустить обработку именно на нужном клиенте? Как он сможет передать управление этому самому клиенту?
понятия не имею.
Эти вопросы появились после того, как ax_mct начал утверждать что runsImpersonated - правильный способ.
В исходном вопросе таких требований не было.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Вот если Вы сможете найти ответы на эти вопросы, тогда и станет понятно, как модифицировать RunBaseBacth и стоит ли это вообще делать

Если честно, то совершенно не планировал искать ответы на эти вопросы.
Я думал, что можно остаться в существующей парадигме RunBaseBatch, и только добавить действия, которые должны быть выполнены на клиенте.

собственно исходный вопрос так и составлен:
Цитата:
Сообщение от mazzy Посмотреть сообщение
Предположим у нас есть RunBaseBatch.
Он делает что-то тяжелое. Мы конечно же хотим сделать так, чтобы он мог работать на пакетном сервере.
Но этот класс забирает данные из какого-нибудь файла, который находится на клиенте.

Как и куда правильно вставить действия, которые должны выполняться на клиенте?
__________________
полезное на axForum, github, vk, coub.
Теги
как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ax3,ax4,ax2009,ax2012: Есть ли красивый способ передать packable объект между клиентом и сервером? mazzy DAX: Программирование 20 09.06.2019 23:19
axaptacorner: How to read excel and update record in AX2012 through X++ code Blog bot DAX Blogs 0 04.01.2019 17:13
Скрипт для переноса данных Ax3.0 (Oracle) - Ax2009 (MSSQL) someOne DAX: Программирование 2 14.06.2011 14:53
axcoder: AxPath pugin for Tabax which works with Ax3, Ax4, Ax2009 Blog bot DAX Blogs 0 08.11.2008 02:11
Импорт из 'офисной БД' (Excel, Access) Gustav DAX: База знаний и проекты 4 07.06.2008 17:17
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:44.