29.06.2010, 20:40 | #1 |
Участник
|
Пакетник в Dax-2009 как 4.0
Доброго времени суток!
Пытаюсь настроить пакетник в 2009 по-старому (с клиентом), стартует, пишет, что выбранный пакет в режиме "ожидание", но реально выбранный класс не отрабатывает. Под пакетник выделена отдельная машина с установленным клиентом. Класс с перекрытым методом runsImpersonated возвращающим false (выполнение на клиенте). Вопрос: кто-нибудь настраивал так пакетник в 2009, и что еще нужно сделать? |
|
30.06.2010, 10:29 | #2 |
Участник
|
Может забыли... пакетные группы задания и обработчика заданий одинаковы? В каком состоянии находится признак "Частный"? Может дело в них?
|
|
30.06.2010, 12:30 | #3 |
Участник
|
Да, группа одна. Галку "частный" и ставил и снимал, ничего не меняется
|
|
30.06.2010, 13:58 | #4 |
Участник
|
насколько я помню, там все исходники есть - можно походить дебаггером
|
|
30.06.2010, 18:04 | #5 |
Участник
|
Поначалу у меня тоже пакетник на клиенте не хотел работать, но именно из-за метода runsImpersonated() в классе. А в остальном после предыдущей версии аксапты класс менять не пришлось.
Ну разве что свойство RunOn у класса выставил в значение "Client". До этого было Called from.
__________________
Дмитрий |
|
30.06.2010, 18:39 | #6 |
Участник
|
Помимо метода runImpersonated посмотри ещё в Администрирование\Настройка\Конфигурация сервера выделен ли хотя бы один АОС как пакетный сервер.
|
|
01.07.2010, 13:32 | #7 |
Участник
|
Цитата:
По-моему, если нужно запускать обработчик через клиентскую сессию, то вообще никаких AOS выделять для этого не надо (иначе, задания будет обрабатывать соответствующая служба, запущенная на указанном AOS). Или я ошибаюсь?
__________________
MS Dynamics AX 2009 Kernel 5.0.1600.4110 Application 5.0.1500.6491 |
|
01.07.2010, 15:01 | #8 |
Участник
|
|
|
01.07.2010, 15:50 | #9 |
Участник
|
Цитата:
|
|
02.07.2010, 12:37 | #10 |
Участник
|
Пакетный обработчик при этом хоть и клиентский, но для того чтобы понять какие пакетные задания нужно обрабатывать он лезет в настройки аоса, к которому подключен. AOS должен быть настроен как сервер пакетной обработки и для него должны быть выбраны соответствующие группы пакетной обработки.
__________________
Дмитрий |
|
02.07.2010, 13:53 | #11 |
Участник
|
Цитата:
Сообщение от Damn
Пакетный обработчик при этом хоть и клиентский, но для того чтобы понять какие пакетные задания нужно обрабатывать он лезет в настройки аоса, к которому подключен. AOS должен быть настроен как сервер пакетной обработки и для него должны быть выбраны соответствующие группы пакетной обработки.
По-моему, если в пакетной группе нет никаких AOS, то все задания, принадлежащие этой группе, должны быть только клиентскими и могут выполняться ТОЛЬКО КЛИЕНТОМ. Если же есть AOS, то задания могут быть как клиентские, так и серверные. Серверные будет обрабатывать AOS в обычном режиме, а клиенсткие будут выполняться исключительно через Основное > Периодические операции > Пакет > Обработка. Кстати, в электронной документации по DAX написано: "Классы, используемые для пакетных задач, предназначены для работы на клиенте или сервере. Задачи, которые работают на сервере, могут запускаться автоматически как часть пакетных заданий, независимо от того, открыт ли клиент. Однако задачи, которые запускаются на клиенте, должны запускаться вручную с помощью формы Настроить пакетную обработку."
__________________
MS Dynamics AX 2009 Kernel 5.0.1600.4110 Application 5.0.1500.6491 |
|
02.07.2010, 14:31 | #12 |
Участник
|
Попробуйте создать новую пакетную группу, не присоединяйте её ни к одному аосу и поставьте в очередь какое-нибудь клиентское пакетное задание указав эту новую группу. Запустите "Основное > Периодические операции > Пакет > Обработка" на любом клиенте. У меня, например, при таких настройках пакетное задание остаётся в статусе "Ожидание".
__________________
Дмитрий |
|
02.07.2010, 15:49 | #13 |
Участник
|
Цитата:
X++: ... select firstonly pessimisticLock RecId, BatchJobId, CreatedBy, ExecutedBy, SessionIdx, SessionLoginDateTime , StartDateTime, Status, RunType, GroupId, PrivateTask , ClassNumber, Company from batch where batch.GroupId == groupId && batch.Status == BatchStatus::Ready && && batch.RunType == BatchRunType::Client && (batch.CreatedBy == userId || (!privateBatch && batch.PrivateTask == privateBatch)) && ('Admin'== userId || batch.Company == curext()); ...
__________________
MS Dynamics AX 2009 Kernel 5.0.1600.4110 Application 5.0.1500.6491 |
|
02.07.2010, 16:01 | #14 |
Участник
|
Я имел ввиду статус пакетного задания в таблице BatchJob (именно эта таблица называется "Пакетное задание"). Поле Status. Но это не имеет отношения к теме.
Вы создали пример, который я описал ? Клиентский пакетный обработчик схватил ваше задание с новой пакетной группой ?
__________________
Дмитрий |
|
02.07.2010, 16:30 | #15 |
Участник
|
Предположительную причину, почему этого не происходит, я уже указал. Мы с этим столкнулись, когда разбирались, почему наши клиентские пакетники как-то криво отрабатывают (нам были нужны отчёты, запускаемые в Excel, а AOS очень криво работает с Excel).
Новых экспериментов не ставил, так как мы уже переписали пакетник под исполнение пакетных заданий в режиме клиента. Кстати, почему и принял участие в данной ветке - интересно, как нужно ПРАВИЛЬНО настраивать клиентские пакетники, чтобы они работали. Без грубого вмешательства на уровне программного кода.
__________________
MS Dynamics AX 2009 Kernel 5.0.1600.4110 Application 5.0.1500.6491 Последний раз редактировалось Sergey Petrov; 02.07.2010 в 16:34. |
|
02.07.2010, 16:53 | #16 |
Участник
|
Цитата:
Сообщение от Damn
Попробуйте создать новую пакетную группу, не присоединяйте её ни к одному аосу и поставьте в очередь какое-нибудь клиентское пакетное задание указав эту новую группу. Запустите "Основное > Периодические операции > Пакет > Обработка" на любом клиенте. У меня, например, при таких настройках пакетное задание остаётся в статусе "Ожидание".
|
|
02.07.2010, 17:05 | #17 |
Участник
|
Цитата:
Собственно, правильный способ настройки я выше описал. АОС настраивается как пакетный сервер, соответствующие пакетные группы - настраиваются на него, клиентский пакетный обработчик подключается через этот АОС. Всё просто. И никакого вмешательства в плане программирования.
__________________
Дмитрий |
|
|
За это сообщение автора поблагодарили: Shirmin Oleg (1), Sergey Petrov (1), d&m (1). |
02.07.2010, 17:55 | #18 |
Участник
|
Дмитрий, решил проверить Ваш способ. Предварительно на тестовом приложении снёс все наши наработки. Чтобы ничего не мешало.
Что делал: 1. AOS определил как исполнитель пакетных заданий. 2. Создал пакетную группу, к которой подключил AOS. 3. Запустил на выполнение потомок RunBaseBatch с перекрытым методом runsImpersonated(). 3.1. В параметрах повторения указал неограниченное время повторения, запуск через каждые 5 минут (это для примера, сам класс отрабатывает за пол-секунды). 3.2. Пакетное задание при этом встало в очередь (статус - "Ожидание" и в задании и в задаче). 4. Запустил пакетную обработку на клиентской сессии. 4.1. Поначалу всё так и оставалось - в статусе "Ожидание". Однако минуты через 2 задание запустилось. Статус задания стал "Выполнение", задачи - "Завершено". 4.2. Через некоторое время и задание и задача перешли в статус "Ожидание". При этом обработка выполнялась независимо от этого по расписанию (каждые 5 минут). То есть, обновление статуса задания и задачи через AOS как-то запаздывает (вместе с помещением записей в Журнал пакетных заданий). Но это не критично. Вывод: Дмитрий, Вы правы - без программирования, но с натравленными на пакетную группу AOS можно работать. Если используется несколько AOS - на группу надо натравливать все используемые (чтобы не "ловить" сессию, подключённую к нужному AOS).
__________________
MS Dynamics AX 2009 Kernel 5.0.1600.4110 Application 5.0.1500.6491 |
|
|
За это сообщение автора поблагодарили: Poleax (1). |
02.07.2010, 18:32 | #19 |
Участник
|
|
|
Теги |
ax2009, runsimpersonated, пакетное задание |
|
|