09.07.2012, 16:27 | #1 |
Участник
|
Вопрос по multi-thread batch posting SO. DAX 2009
Здравствуйте,
Возникла задача в конце батч постинга сейлз ордеров(picking list) выполнять некоторые свои действия(то есть, после того как постинг был выполнен для ВСЕХ ордеров). Собственно переход к multi-thread батч постингу виден в SalesFormLetter.run(). Там для каждого sales хедера попавшего под условия запроса(query) добавляется runtime task в виде экземпляра FormLetterMultiThread. Проблема в том, что я не уверен насчет того, в какой последовательности эти таски потом отрабатывают. То есть, есть догадки, но нет точного знания. Интуиция подсказывает, что, скорее всего, мой код нужно добавлять в SalesFormLetterEndMultiThread, а то, что в SalesFormLetter.run() его инстанс добавляется ДО добавления индивидуальных FormLetterMultiThread инстансов наталкивает на мысль о стэке тасков в батче(LIFO). Ну и, скорее всего, потом эти таски вынимаются на параллельное выполнение из батч хэдэра бандлами по N штук, где N - параметр количества батч потоков на сервере. НО, во-первых, это только догадки, и всё же хотелось бы спросить умных и опытных людей на сколько они близки к правде. Во-вторых, можно ли как-то явно указать, чтобы таск добавленный в батч хэдер был выполнен обязательно ПОСЛЕ всех остальных тасков или же этого можно добиться только порядком добавления таска в батч хэдэр? Если второе, то каким образом гарантируется, что SalesFormLetterEndMultiThread не будет выполнен параллельно с одним из FormLetterMultiThread или параллельность в таком случае зависит от classID процесса? П.С. Заранее прошу прощения за вопросы, которые кому-то, возможно, покажутся ламерскими. Уповаю на вашу снисходительность и опыт
__________________
Axapta has seduced me deadly! |
|
|
|