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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.08.2013, 19:42   #21  
Omeo is offline
Omeo
Участник
 
129 / 50 (2) ++++
Регистрация: 18.03.2004
Адрес: Moscow
Всем добрый вечер

есть следующая проблема :
есть пакетник который в порядке очереди обрабатывает некие запросы, хотелось бы эту последовательную очередь распараллелить

но
при работе пакетника ничего не происходит при запуске
X++:
t.run(classnum(MyClass), staticmethodstr(MyClass, MyMethod));
вообще ничего, причем если запускать пакетник вручную - все ок (даже в независимости от того серверный или клиентский метод MyMethod), тред запускается , все отрабатывает

точно проверено : пакетник работает (обрамлял t.run логированием)
делал логирование в самом методе MyMethod (тут люди писали что, возможно, валится где то на IO или еще на чем то) - метод вообще не вызывается

подскажите куда рыть ?

Последний раз редактировалось Omeo; 08.08.2013 в 19:45.
Старый 08.08.2013, 20:24   #22  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
мне кажется вы не туда роете.
есть серия отличных статей про распараллеливание в пакете, класс thread тут не причем

http://blogs.msdn.com/b/axperf/archi...x-part-ii.aspx
За это сообщение автора поблагодарили: mazzy (2).
Старый 09.08.2013, 00:38   #23  
JeS is offline
JeS
Участник
 
61 / 22 (1) +++
Регистрация: 30.10.2007
Адрес: СПб
В подтверждение слов trud-а приведу ссылку, в которой пишут, что thread не работает в пакете:
http://dynamics-ax.blogspot.ru/2010/...-vs-batch.html

Когда я писал класс-наследник от RunbaseBatch, то для распараллеливания процессов делал проверку на то как работает класс. Если в пакете, то применял Batch Parallelism, если нет - threads. Вроде все работает в итоге.
Старый 09.08.2013, 02:36   #24  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Confirmed. Thread не работает в пакетном режиме, по крайней мере в AX2009.
А распараллеливание BatchHeader на BatchJobs мягко говоря неудобное решение, хотя и работает.
Старый 29.11.2013, 01:43   #25  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Confirmed. Thread не работает в пакетном режиме, по крайней мере в AX2009.
А распараллеливание BatchHeader на BatchJobs мягко говоря неудобное решение, хотя и работает.
Да, кстати если в пакете посмотреть New Session().masterSessionId() то выдаст 2
Т.е. все пакетные обработчики - это Thread-ы от одной системной сессии с номером 2.

Возможно, есть ограничение на запуск вложенных Thread.
Старый 09.11.2015, 15:07   #26  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Logger Посмотреть сообщение
После некоторых разбирательств удалось понять, что при старте АОСа он создает 2 системные сессии с SessionID равным 1 и 2.
Какая жесть
Оказывается они еще и ведут себя по разному.
Сессия 1 считает что curExt() = "" !
Как следствие, если захочется что-то по логировать то для нее не получится это сделать (поймать момент старта аоса и записать в табличный лог). Тупо выдает ошибку
Цитата:
Object Server XX: Dialog issued for client-less session 1: Cannot create a record in YYYYYYY (ZZZZZ).
Insert operations are not allowed across companies. Please use changecompany keyword to change the current company before inserting the record.
Зато для пакетной сессии 2 все нормально работает. Какая-то жесть
Старый 09.11.2015, 15:30   #27  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Пологировать можно в таблицу с SaveDataPerCompany = No
Старый 09.11.2015, 15:43   #28  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Ну да.
Но стремно.
Если такие базовые вещи не работают, то ходишь как по минному полю, не зная где еще что отвалится.
Старый 10.11.2015, 13:07   #29  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
К теме использования Thread в AX.
Здесь можно скачать xpo - пример использования в SSRS отчете. Хотя автор пишет:
Цитата:
The code is for demonstraction only. A more practical application to leverage this feature is in batch processing.
Что собственно уже упоминалось выше
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Теги
sysevent, thread

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
В Стандартной АХ2009 не работает кнопка <Параметры> на диалоге класса унаследованного от RunBaseReport Pustik DAX: Программирование 3 11.05.2011 19:47
gatesasbait: Logging independently of transaction scope by using a separate thread in Dynamics AX Blog bot DAX Blogs 0 27.05.2009 23:16
axaptapedia: RunBaseReport Blog bot DAX Blogs 0 03.08.2008 20:10
Проблема с передачей контролов из формы в класс matew DAX: Программирование 0 28.04.2008 17:37
Удобные отчеты без лицензии на класс RunBaseReport ? Александр Зайцев DAX: Программирование 4 05.05.2003 23:19

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

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

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