23.10.2009, 16:34 | #1 |
Banned
|
Как сделать: пакетное задание в AX 2009 чаще 3 минут
В AX 2009 записи пакетного задания находятся в статусе исполнения в среднем часто больше 1-2 минут, хотя само задание исполняется за считанные секунды (формирование короткого файла).
Нужно 1,5 min <= t <= 2 min. Получается только 1,5 min <= t <= 3 min. при итерации каждую минуту. Такт обновления заданий, похоже, задается ядром: соответствующие процедуры хотя и написаны на X++, но не вызываются согласно перекрестным ссылкам из приложения. Что делать? |
|
23.10.2009, 17:07 | #2 |
Участник
|
Административно никак. По крайней мере в четверке там жестко в коде период 3 минуты.
__________________
Dynamics AX 4.0.2501.122 SP2, kernel 4.0.2163.0, MS SQL 2005 |
|
23.10.2009, 17:47 | #3 |
Участник
|
Хотя у нас АХ 4.0, но возможно вам пригодится.
1) сделана простая модификация: возможность такой настройки пакетного задания, чтобы после завершения исполнения сразу происходил логофф из Аксапты 2) задания запускаются по расписанию из внешнего шедулера. После каждого пакета делается автоматический логофф, и запускается следующая сессия Аксапты со следующим пакетным заданием, которое потом также делает логофф, и так далее. Думаю, такой подход позволит запускать задания с любой периодичностью. PS Вопрос "зачем так сделали" не относится к заданной теме, поэтому без комментариев. |
|
23.10.2009, 17:49 | #4 |
NavAx
|
А не проще сделать 2 задания, вместо одного?
|
|
23.10.2009, 18:38 | #5 |
Banned
|
Времена исполнения будут смещаться друг отностительно друга. Рано или поздно порог будет превышен.
Совет Zabr-а - хороший. Он сводится к том, чтобы тем или иным способом самостоятельно контролировать процесс выполнения. Посмотрим, что скажет Microsoft. На худой конец можно даже запускать мое задание синхронно, в транзакции. |
|
23.10.2009, 19:32 | #6 |
NavAx
|
А если подкрутить #define.LoopCount(30) в BatchRun.do()?
|
|
23.10.2009, 19:57 | #7 |
Banned
|
Я пробовал изменить на форме. Эффект - нулевой. Переход из статуса "Running" в "Waiting" выполняется в другой процедуре (serverGetNextTask/serverProcessFinishedJobs), которая вызывается, во-видимому, ядром.
|
|
30.10.2009, 15:31 | #8 |
Участник
|
А в МС писал? Чё говорят?
|
|
30.10.2009, 17:09 | #9 |
Banned
|
Цитата:
...
I will take a look deeply on your request, do a initial research and I will return to you. ... |
|
30.10.2009, 21:24 | #10 |
Участник
|
Может быть написать свое пакетное задание, которое будет стартовать каждые 3 минуты (или реже), но само в свою очередь будет стартовать другой пакетник с нужной частотой.
Изврат конечно, но зато даст нужный результат и реализовать наверно будет несложно. А проще всего конечно сделать как Zabr предложил. |
|
02.11.2009, 10:37 | #11 |
----------------
|
Провел опыт.
Сделал классик, который только создает 1 запись в таблице и завершается. Запустил 5 раз в пакетном режиме с повторением через 1 мин по 10 циклов. Исходные интервалы между пакетами изначально были по несколько секунд. После первого цикла задания "сгруппировались" 3 задания стартовали в одно время и 2 через 1мин1сек. И такт между пакетными заданиями был 2мин2сек. Локальный вывод. У меня получился минимальный такт обновления статуса задания 1мин1сек. Возникает ощущение, что пакетному серверу надо 2 "такта" на то чтобы перевести задание на повторное исполнение. То есть если сделать задание длительностью 9мин, 10 сек, а периодичность поставить 10мин, то все-равно будет выполняться через 11мин Последний раз редактировалось Wamr; 02.11.2009 в 11:09. Причина: проектик добавил |
|
02.11.2009, 11:01 | #12 |
Участник
|
Цитата:
Сообщение от Wamr
Провел опыт.
Сделал классик, который только создает 1 запись в таблице и завершается. Запустил 5 раз в пакетном режиме с повторением через 1 мин по 10 циклов. Исходные интервалы между пакетами изначально были по несколько секунд. После первого цикла задания "сгруппировались" 3 задания стартовали в одно время и 2 через 1мин1сек. И такт между пакетными заданиями был 2мин2сек. Думал сам делать сегодня, но раз уже есть готовый Спасибо |
|
03.11.2009, 18:09 | #13 |
Banned
|
Увы, вот что заявляет MS:
Цитата:
I am afraid that this is a design limitation - lowest resolution is 1min and it seems that state are changed only in time of "batch cycle" - that is a reason why cycle is longer.
|
|
03.11.2009, 23:40 | #14 |
Мрачный тип
|
А казалось бы - забить на априорно неизвестное никому(даже великому и ужасному M$) время исполнения некоего пакета с априорно неизвестным функциональным наполнением и проверять при попытке запуска пакета факт наличия неоконченного выполнения этого же самого пакета и запускать без проблем его в случае отсутствия наличия, либо, в случае таки наличия неоконченного, сдвигать выполнение текущей попытки на некий малый квант времени(определяемый некоей настройкой в БД) и по прошествию оного повторять попытку запуска. Но увы , дело Ленина живет и побеждает, M$ идет своим путем, не давать и не пущать - наше ффсё...
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
15.04.2011, 10:43 | #15 |
Модератор
|
__________________
-ТСЯ или -ТЬСЯ ? |
|
Теги |
ax2009, пакетная обработка, пакетное задание, частота |
|
|