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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.03.2012, 17:55   #1  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Может подойти класс Tread. Поскольку Вам все равно нужно чистить таблицу вне зависимости выполнилась ли бизнесс-логика или нет, то конструкцию можно организовать на примере следующего джоба :
X++:
static void Job620(Args _args)
{
   Thread bpt; // поток для бизнесс-процесса
   Thread clt; //  поток для удаления таблицы

   bpt = new Thread();
   clt = new Thread();

   bpt.setInputParm(connull()); // передача параметров потоку для бизнесс-процесса
   // запуск
   bpt.run( classnum( TestClassThread),staticmethodstr(TestClassThread,BuisnessProcess));
   bpt.waitUntilSignaled(); // ожидание завершения БП

   clt.setInputParm(connull()); /      
   clt.run( classnum( TestClassThread ), staticmethodstr(TestClassThread,ClearTable)); // чистка
   clt.waitUntilSignaled(); // ожидание завершения чистки
}
Потоки запускаются в разных сессиях, поэтому друг другу не мешают. Т.е. один поток не будет зависить от ошибки другого ( даже того же throw error()) А
X++:
bpt.waitUntilSignaled();
не даст очистить таблицу раньше времени. Для тестирования можете создать класс TestClassThread как указан в джобе и написать там 2 статических метода :
X++:
server static void BuisnessProcess(Thread t)
{
   container con = t.getInputParm();
   ;
   // выполнение бизнесс процесса

   // выполнение бизнесс процесса
   throw error('Ошибка');
}
X++:
server static void ClearTable(Thread t)
{
   container con = t.getInputParm();
   ;
   // очистка таблицы

   // очистка таблицы
   info('ClearTable');
}
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 22.03.2012 в 18:01.
За это сообщение автора поблагодарили: Андрей К. (1).
Старый 23.03.2012, 09:56   #2  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,821 / 402 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от Pustik Посмотреть сообщение
Может подойти класс Tread. Поскольку Вам все равно нужно чистить таблицу вне зависимости выполнилась ли бизнесс-логика или нет, то конструкцию можно организовать на примере следующего джоба :
и где гарантия что не будет прерван код между запусками потоков?
Старый 23.03.2012, 12:11   #3  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от ice Посмотреть сообщение
и где гарантия что не будет прерван код между запусками потоков?
Гарантия в том, что ошибка при выполнении первого потока (БЛ) не остановит выполнение второго (ЧТ).В моем примере я четко указал на Throw error();
Если речь идет о полном отрубании электричества, крахом сервера и т.д. во время выполнения БЛ, то тут я бы использовал не таблицу лога запусков, а журнал запусков, где бы порекомендовал воспользоваться советом Alexanderis.ua. - аналогия разноски журналов.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Масштабируемость AOS'а AX 2009 и принципы выполнения кода клиентских сессий на сервере gl00mie DAX: Администрирование 27 28.05.2013 17:40
Перенос точки выполнения в отладчике DAX2009 Bega DAX: Программирование 3 21.02.2011 15:21
axforum blogs: Можно ли снизить стоимость внедрения ERP-системы? Blog bot DAX Blogs 0 11.02.2011 15:11
Ускорение выполнения запроса Oracle + MS Axapta Горбунов Дмитрий DAX: Программирование 17 15.11.2005 18:13
Как можно управлять элементом Grid из кода? vitk DAX: Программирование 4 26.08.2004 16:02
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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